From 80e137ff36ce851d73199dfcd1d251068001f7ec Mon Sep 17 00:00:00 2001 From: Photon Date: Thu, 1 Oct 2026 05:41:10 +0000 Subject: [PATCH] chore: release 0.2.0 Public contract SHA-256: 7a951ba8d4d6bf9cd13ea582bb27952081b2a3241c8e56dd53a177079ed59510 Contract change: feat! - DELETE /v1/account: the endpoint scheme security `oauth2: [account:write]` was removed from the API - DELETE /v1/account: added `#/components/schemas/ForbiddenProblem, #/components/schemas/InsufficientScopeProblem, #/components/schemas/OrganizationSsoRequiredProblem, #/components/schemas/ResourceMismatchProblem` to the response body `oneOf` list for the response status `403` - DELETE /v1/account: added `#/components/schemas/InternalErrorProblem, #/components/schemas/InvalidAuthContextProblem` to the response body `oneOf` list for the response status `500` - DELETE /v1/account: added `#/components/schemas/UpstreamTimeoutProblem, #/components/schemas/RequestTimeoutProblem` to the response body `oneOf` list for the response status `504` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `200` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `403` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `404` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `409` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `500` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `502` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `503` - DELETE /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `504` - DELETE /v1/account: the `status` response's property `type` was widened from `integer` to `number` for status `401` - GET /v1/account: added `#/components/schemas/ForbiddenProblem, #/components/schemas/InsufficientScopeProblem, #/components/schemas/OrganizationSsoRequiredProblem, #/components/schemas/ResourceMismatchProblem` to the response body `oneOf` list for the response status `403` - GET /v1/account: added `#/components/schemas/InternalErrorProblem, #/components/schemas/InvalidAuthContextProblem` to the response body `oneOf` list for the response status `500` - GET /v1/account: added `#/components/schemas/UpstreamTimeoutProblem, #/components/schemas/RequestTimeoutProblem` to the response body `oneOf` list for the response status `504` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `200` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `403` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `404` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `410` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `500` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `502` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `503` - GET /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `504` - GET /v1/account: the `status` response's property `type` was widened from `integer` to `number` for status `401` - PATCH /v1/account: added `#/components/schemas/ForbiddenProblem, #/components/schemas/InsufficientScopeProblem, #/components/schemas/OrganizationSsoRequiredProblem, #/components/schemas/ResourceMismatchProblem` to the response body `oneOf` list for the response status `403` - PATCH /v1/account: added `#/components/schemas/HttpErrorProblem, #/components/schemas/InvalidArgumentProblem, #/components/schemas/IdempotencyKeyInvalidProblem, #/components/schemas/IdempotencyKeyRequiredProblem` to the response body `oneOf` list for the response status `400` - PATCH /v1/account: added `#/components/schemas/IdempotencyKeyReusedProblem, #/components/schemas/ValidationFailedProblem` to the response body `oneOf` list for the response status `422` - PATCH /v1/account: added `#/components/schemas/InternalErrorProblem, #/components/schemas/InvalidAuthContextProblem` to the response body `oneOf` list for the response status `500` - PATCH /v1/account: added `#/components/schemas/UpstreamTimeoutProblem, #/components/schemas/RequestTimeoutProblem` to the response body `oneOf` list for the response status `504` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `200` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `400` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `403` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `404` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `410` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `413` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `422` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `500` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `502` - PATCH /v1/account: the `sunset` response header's `format` changed from `date-time` to `none` for the status `503` - and 2414 more --- CHANGELOG.md | 25 + Cargo.lock | 2 +- README.md | 16 +- config/sdk.json | 4 - openapi/openapi.json | 149457 ++++----------- openapi/rpc-manifest.json | 2911 +- openapi/sdk.json | 2 +- package-lock.json | 2 +- packages/python/README.md | 7 - packages/python/pyproject.toml | 2 +- .../python/src/photon_api/generated/models.py | 32628 +--- .../python/src/photon_api/rpc_generated.py | 1780 +- packages/rust/Cargo.toml | 2 +- packages/rust/README.md | 7 - packages/rust/src/generated.rs | 140520 ++++++-------- packages/typescript/README.md | 7 - packages/typescript/package.json | 2 +- packages/typescript/src/generated/index.ts | 4 +- packages/typescript/src/generated/sdk.gen.ts | 42 +- .../typescript/src/generated/types.gen.ts | 23656 +-- packages/typescript/src/generated/zod.gen.ts | 29316 +-- packages/typescript/src/rpc.generated.ts | 85 +- packages/typescript/src/schemas.ts | 543 +- postman/README.md | 11 +- postman/collection.json | 48842 ++--- tools/openapi/src/generate-facades.test.ts | 8 + tools/openapi/src/generate-facades.ts | 5 +- tools/postman/generate.mjs | 21 + tools/postman/generate.test.mjs | 20 +- tools/publish/hosted-postman.mjs | 58 +- tools/publish/hosted-postman.test.mjs | 51 +- tools/publish/registry-check.mjs | 45 +- tools/publish/registry-check.test.mjs | 39 +- 33 files changed, 143638 insertions(+), 286482 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0b801b..f38473e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## 0.2.0 (2026-10-01) + + +### ⚠ BREAKING CHANGES + +* Upgrading from 0.1.x: + * **Type names now come from the API contract.** Names that 0.1.x derived from operations are gone, for example `AssignSmsLineCampaignResponse200ApplicationJson` is now `AssignSmsLineCampaignResponse`. Update imports of renamed types. Methods, requests and responses on the wire keep their names. + * **Account deletion and account service keys no longer accept OAuth tokens** with `account:write`; use an account service key. + * **The SMS line campaign response drops** `campaignObservedAt`, `observedAt`, `operationId`, `providerAssignmentStatus` and `requestedCampaignId`. + +### Features + +* Add `auth.disableOrganizationSso` (`POST /v1/auth/organizations/{orgId}/sso/disable`). + + +### Bug Fixes + +* Python: the attachment upload body is typed as `bytes`. +* The `Sunset` response header is documented as an HTTP date. + + +### Documentation + +* **postman:** add the Run in Postman button and the public workspace link + ## 0.1.1 (2026-09-30) diff --git a/Cargo.lock b/Cargo.lock index 2d7446a..3409dca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -993,7 +993,7 @@ dependencies = [ [[package]] name = "photonhq-api" -version = "0.1.1" +version = "0.2.0" dependencies = [ "bytes", "httpdate", diff --git a/README.md b/README.md index 78438b9..b2fba10 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,6 @@ The public OpenAPI contract of the Photon API, a Postman collection generated from it, and TypeScript, Python and Rust clients generated from the same contract. -> **Preview release.** This version is generated from the current production -> contract before all of its schemas have stable names. Types the contract -> does not name yet have names derived from their operation (for example -> `ListProjectsResponse200ApplicationJson`) or carry a version prefix such as -> `Photon20260701_`. These type names change in 0.2.0, when the contract -> names them; the rename does not change requests, responses or method names. - | Language | Package | Install | Documentation | | --- | --- | --- | --- | | TypeScript / JavaScript | [`@photon-ai/api`](https://www.npmjs.com/package/@photon-ai/api) | `npm install @photon-ai/api` | [packages/typescript](packages/typescript/README.md) | @@ -24,10 +17,11 @@ contract. ## Try it in Postman -Every release also updates the hosted collection in Photon's public Postman -workspace. You can instead download -[`postman/collection.json`](postman/collection.json) and import it into your own -workspace. +[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/58645896-f0273a59-bd8f-4c08-8f76-62b74a7cbdd1?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D58645896-f0273a59-bd8f-4c08-8f76-62b74a7cbdd1%26entityType%3Dcollection%26workspaceId%3D4c8fb23d-a1e6-4292-9475-6696a2618aa8) + +The button forks the hosted collection into your own Postman workspace. Every +release updates it in [Photon's public Postman workspace](https://www.postman.com/photonhq/photon-api). You can instead +download [`postman/collection.json`](postman/collection.json) and import it. 1. Set the empty `apiToken` variable to a supported API key or token. Keep it private. diff --git a/config/sdk.json b/config/sdk.json index 019f9f0..88471c9 100644 --- a/config/sdk.json +++ b/config/sdk.json @@ -11,9 +11,5 @@ } } } - }, - "namingWaiver": { - "reason": "Type names for unnamed schemas are generated and change in 0.2.0, when the production contract names them.", - "until": "0.2.0" } } diff --git a/openapi/openapi.json b/openapi/openapi.json index bec1c86..4156adb 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -1,11 +1,190 @@ { "components": { + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, + "Link": { + "description": "Links related to lifecycle or remediation documentation.", + "schema": { + "type": "string" + } + }, + "RateLimit": { + "description": "Current rate-limit state.", + "schema": { + "type": "string" + } + }, + "RateLimit-Policy": { + "description": "Rate-limit policy applied by the gateway.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "description": "Delay before retrying, in seconds or as an HTTP date.", + "schema": { + "type": "string" + } + }, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", + "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", + "type": "string" + } + }, + "X-Request-ID": { + "description": "Identifier for this HTTP attempt.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", + "type": "string" + } + } + }, "schemas": { - "Authorization_Problem_INSUFFICIENT_SCOPE_403": { - "additionalProperties": false, + "Account": { + "additionalProperties": {}, + "properties": { + "accountId": { + "type": "string" + }, + "createdAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "deletedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "format": "email", + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", + "type": "string" + }, + "firstName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "lastName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phoneNumber": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phoneVerifiedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pictureUrl": { + "format": "uri", + "type": "string" + }, + "updatedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "accountId", + "createdAt", + "deletedAt", + "email", + "firstName", + "lastName", + "phoneNumber", + "phoneVerifiedAt", + "pictureUrl", + "updatedAt" + ], + "type": "object" + }, + "AccountDeletedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ACCOUNT_DELETED", + "status": 410, + "title": "Account Deleted", + "type": "https://photon.codes/docs/problems/account-deleted" + }, "properties": { "code": { - "const": "INSUFFICIENT_SCOPE", + "const": "ACCOUNT_DELETED", "type": "string" }, "detail": { @@ -16,61 +195,204 @@ "minLength": 1, "type": "string" }, + "remediation": { + "not": {} + }, "requestId": { "minLength": 1, "type": "string" }, "status": { - "const": 403, - "type": "integer" + "const": 410, + "type": "number" }, "title": { - "const": "Insufficient Scope", + "const": "Account Deleted", "type": "string" }, "type": { - "const": "https://photon.codes/docs/problems/insufficient-scope", + "const": "https://photon.codes/docs/problems/account-deleted", "type": "string" } }, "required": [ - "type", + "code", + "status", "title", + "type" + ], + "type": "object" + }, + "AccountNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ACCOUNT_NOT_FOUND", + "status": 404, + "title": "Account Not Found", + "type": "https://photon.codes/docs/problems/account-not-found" + }, + "properties": { + "code": { + "const": "ACCOUNT_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Account Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/account-not-found", + "type": "string" + } + }, + "required": [ + "code", "status", - "code" + "title", + "type" ], "type": "object" }, - "ClickHouseSqlQueryRequest": { - "additionalProperties": false, + "AccountOwnsOrganizationsProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ACCOUNT_OWNS_ORGANIZATIONS", + "status": 409, + "title": "Account Owns Organizations", + "type": "https://photon.codes/docs/problems/account-owns-organizations" + }, "properties": { - "parameters": { - "additionalProperties": { - "maxLength": 16384, - "type": "string" - }, - "propertyNames": { - "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$", - "type": "string" - }, - "type": "object" + "code": { + "const": "ACCOUNT_OWNS_ORGANIZATIONS", + "type": "string" }, - "sql": { - "maxLength": 65536, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { "minLength": 1, "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Account Owns Organizations", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/account-owns-organizations", + "type": "string" } }, "required": [ - "sql" + "code", + "status", + "title", + "type" ], "type": "object" }, - "PhotonProblem_FORBIDDEN_403": { + "AccountServiceKey": { "additionalProperties": false, + "properties": { + "accountId": { + "type": "string" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "expiresAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "revokedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "serviceKeyId": { + "type": "string" + } + }, + "required": [ + "accountId", + "createdAt", + "expiresAt", + "name", + "revokedAt", + "serviceKeyId" + ], + "type": "object" + }, + "AccountServiceKeyLimitReachedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ACCOUNT_SERVICE_KEY_LIMIT_REACHED", + "status": 409, + "title": "Account Service Key Limit Reached", + "type": "https://photon.codes/docs/problems/account-service-key-limit-reached" + }, "properties": { "code": { - "const": "FORBIDDEN", + "const": "ACCOUNT_SERVICE_KEY_LIMIT_REACHED", "type": "string" }, "detail": { @@ -81,36 +403,261 @@ "minLength": 1, "type": "string" }, + "remediation": { + "not": {} + }, "requestId": { "minLength": 1, "type": "string" }, "status": { - "const": 403, - "type": "integer" + "const": 409, + "type": "number" }, "title": { - "const": "Forbidden", + "const": "Account Service Key Limit Reached", "type": "string" }, "type": { - "const": "https://photon.codes/docs/problems/forbidden", + "const": "https://photon.codes/docs/problems/account-service-key-limit-reached", "type": "string" } }, "required": [ - "type", + "code", + "status", "title", + "type" + ], + "type": "object" + }, + "AccountServiceKeyNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ACCOUNT_SERVICE_KEY_NOT_FOUND", + "status": 404, + "title": "Account Service Key Not Found", + "type": "https://photon.codes/docs/problems/account-service-key-not-found" + }, + "properties": { + "code": { + "const": "ACCOUNT_SERVICE_KEY_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Account Service Key Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/account-service-key-not-found", + "type": "string" + } + }, + "required": [ + "code", "status", - "code" + "title", + "type" + ], + "type": "object" + }, + "AgentProfile": { + "additionalProperties": false, + "properties": { + "avatarUrl": { + "format": "uri", + "type": "string" + }, + "firstName": { + "minLength": 1, + "type": "string" + }, + "lastName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "avatarUrl", + "firstName", + "lastName" + ], + "type": "object" + }, + "AgentProfileAvatarContentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "AgentProfileAvatarUpload": { + "additionalProperties": false, + "properties": { + "expiresAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "formFields": { + "$ref": "#/components/schemas/AgentProfileAvatarUploadFormFields" + }, + "uploadId": { + "type": "string" + }, + "uploadUrl": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "expiresAt", + "formFields", + "uploadId", + "uploadUrl" ], "type": "object" }, - "PhotonProblem_INTERNAL_ERROR_500": { + "AgentProfileAvatarUploadFormFields": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "AllWebhookEvents": { + "prefixItems": [ + { + "$ref": "#/components/schemas/WebhookEventWildcard" + } + ], + "type": "array" + }, + "ApiKey": { "additionalProperties": false, + "properties": { + "apiKeyId": { + "type": "string" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "createdByAccountId": { + "type": "string" + }, + "expiresAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "permissions": { + "items": { + "description": "Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.", + "type": "string" + }, + "type": "array" + }, + "permissionsUpdatedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "projectId": { + "type": "string" + }, + "revokedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "apiKeyId", + "createdAt", + "createdByAccountId", + "expiresAt", + "name", + "permissions", + "permissionsUpdatedAt", + "projectId", + "revokedAt" + ], + "type": "object" + }, + "ApiKeyLimitReachedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "API_KEY_LIMIT_REACHED", + "status": 409, + "title": "API Key Limit Reached", + "type": "https://photon.codes/docs/problems/api-key-limit-reached" + }, "properties": { "code": { - "const": "INTERNAL_ERROR", + "const": "API_KEY_LIMIT_REACHED", "type": "string" }, "detail": { @@ -121,36 +668,160 @@ "minLength": 1, "type": "string" }, + "remediation": { + "not": {} + }, "requestId": { "minLength": 1, "type": "string" }, "status": { - "const": 500, - "type": "integer" + "const": 409, + "type": "number" }, "title": { - "const": "Internal Server Error", + "const": "API Key Limit Reached", "type": "string" }, "type": { - "const": "https://photon.codes/docs/problems/internal-error", + "const": "https://photon.codes/docs/problems/api-key-limit-reached", "type": "string" } }, "required": [ - "type", + "code", + "status", "title", + "type" + ], + "type": "object" + }, + "ApiKeyNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "API_KEY_NOT_FOUND", + "status": 404, + "title": "API Key Not Found", + "type": "https://photon.codes/docs/problems/api-key-not-found" + }, + "properties": { + "code": { + "const": "API_KEY_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "API Key Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/api-key-not-found", + "type": "string" + } + }, + "required": [ + "code", "status", - "code" + "title", + "type" ], "type": "object" }, - "PhotonProblem_NOT_AUTHENTICATED_401": { - "additionalProperties": false, + "ApiKeyPermission": { + "enum": [ + "events:read", + "events:write", + "platforms:read", + "platforms:write", + "project:read", + "project:write" + ], + "type": "string" + }, + "ApiKeyRevokedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "API_KEY_REVOKED", + "status": 409, + "title": "API Key Revoked", + "type": "https://photon.codes/docs/problems/api-key-revoked" + }, "properties": { "code": { - "const": "NOT_AUTHENTICATED", + "const": "API_KEY_REVOKED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "API Key Revoked", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/api-key-revoked", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "AppInstallationAssertionInvalidProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "APP_INSTALLATION_ASSERTION_INVALID", + "status": 401, + "title": "Invalid Installation Client Assertion", + "type": "https://photon.codes/docs/problems/app-installation-assertion-invalid" + }, + "properties": { + "code": { + "const": "APP_INSTALLATION_ASSERTION_INVALID", "type": "string" }, "detail": { @@ -161,36 +832,98 @@ "minLength": 1, "type": "string" }, + "remediation": { + "not": {} + }, "requestId": { "minLength": 1, "type": "string" }, "status": { "const": 401, - "type": "integer" + "type": "number" }, "title": { - "const": "Not Authenticated", + "const": "Invalid Installation Client Assertion", "type": "string" }, "type": { - "const": "https://photon.codes/docs/problems/not-authenticated", + "const": "https://photon.codes/docs/problems/app-installation-assertion-invalid", "type": "string" } }, "required": [ - "type", + "code", + "status", "title", + "type" + ], + "type": "object" + }, + "AppInstallationAssertionReplayedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "APP_INSTALLATION_ASSERTION_REPLAYED", + "status": 409, + "title": "Installation Assertion Already Used", + "type": "https://photon.codes/docs/problems/app-installation-assertion-replayed" + }, + "properties": { + "code": { + "const": "APP_INSTALLATION_ASSERTION_REPLAYED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Installation Assertion Already Used", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/app-installation-assertion-replayed", + "type": "string" + } + }, + "required": [ + "code", "status", - "code" + "title", + "type" ], "type": "object" }, - "PhotonProblem_UPSTREAM_UNAVAILABLE_503": { - "additionalProperties": false, + "AppInstallationConfigChangedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "APP_INSTALLATION_CONFIG_CHANGED", + "status": 409, + "title": "Installation App Configuration Changed", + "type": "https://photon.codes/docs/problems/app-installation-config-changed" + }, "properties": { "code": { - "const": "UPSTREAM_UNAVAILABLE", + "const": "APP_INSTALLATION_CONFIG_CHANGED", "type": "string" }, "detail": { @@ -201,8123 +934,16853 @@ "minLength": 1, "type": "string" }, + "remediation": { + "not": {} + }, "requestId": { "minLength": 1, "type": "string" }, "status": { - "const": 503, - "type": "integer" + "const": 409, + "type": "number" }, "title": { - "const": "Upstream Service Unavailable", + "const": "Installation App Configuration Changed", "type": "string" }, "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", + "const": "https://photon.codes/docs/problems/app-installation-config-changed", "type": "string" } }, "required": [ - "type", + "code", + "status", "title", + "type" + ], + "type": "object" + }, + "AppInstallationDeliveryUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "APP_INSTALLATION_DELIVERY_UNAVAILABLE", + "status": 409, + "title": "Installation Delivery Unavailable", + "type": "https://photon.codes/docs/problems/app-installation-delivery-unavailable" + }, + "properties": { + "code": { + "const": "APP_INSTALLATION_DELIVERY_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Installation Delivery Unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/app-installation-delivery-unavailable", + "type": "string" + } + }, + "required": [ + "code", "status", - "code" + "title", + "type" ], "type": "object" }, - "__schema0": { - "anyOf": [ + "AssignSmsLineCampaignBadRequestProblem": { + "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/SmsCampaignInvalidRequestProblem" }, { - "type": "number" + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" }, { - "type": "boolean" + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "AssignSmsLineCampaignConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" }, { - "type": "null" + "$ref": "#/components/schemas/SmsLineUnsupportedProblem" }, { - "items": { - "$ref": "#/components/schemas/__schema0" - }, - "type": "array" + "$ref": "#/components/schemas/SmsCampaignNotReadyProblem" }, { - "additionalProperties": { - "$ref": "#/components/schemas/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" + "$ref": "#/components/schemas/SmsCampaignVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignCapacityExceededProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignReconciliationRequiredProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignMutationInProgressProblem" } ] - } - }, - "securitySchemes": { - "accountServiceKey": { - "description": "Account Service Key, `pho_ask_` prefixed, sent as `Authorization: Bearer `. Acts as the account, so it reaches every route the account can. A WorkOS access token from a dashboard session or an OAuth grant is accepted on the same header.", - "scheme": "bearer", - "type": "http" }, - "oauth2": { - "description": "OAuth grant issued by the Photon authorization server. The token is a bearer JWT whose consented scope is intersected with the permissions the route grants; an empty intersection is `403 insufficient_scope`.", - "flows": { - "authorizationCode": { - "authorizationUrl": "https://auth.photon.codes/oauth2/authorize", - "scopes": { - "account:create_project": "Create a project owned by the account.", - "account:read": "View account profile.", - "account:read_projects": "List projects associated with the account; does not grant access to project contents.", - "account:write": "Update account name and profile.", - "billing:read": "View invoices, usage, payment status.", - "events:read": "Query stored Events and discover their SQL schema within a project.", - "organization:create_project": "Create a project in the organization.", - "organization:read": "View organization name and avatar.", - "organization:read_projects": "List projects in the organization.", - "platforms:read": "View project platform configuration.", - "platforms:write": "Change project platform configuration.", - "project:delete": "Permanently delete the project.", - "project:read": "View non-sensitive project settings.", - "project:read_usage": "View project usage and costs.", - "project:write": "Change agent profiles, webhook settings, and other project configuration.", - "ten_dlc:read": "View organization 10DLC Brand and Campaign registration records.", - "ten_dlc:write": "Register and update organization 10DLC Brands and Campaigns, including OTP operations." + "AssignSmsLineCampaignForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignOrganizationMismatchProblem" + } + ] + }, + "AssignSmsLineCampaignGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "AssignSmsLineCampaignInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "AssignSmsLineCampaignNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignNotFoundProblem" + }, + { + "$ref": "#/components/schemas/SmsLineNotFoundProblem" + } + ] + }, + "AssignSmsLineCampaignRequest": { + "additionalProperties": false, + "properties": { + "campaignId": { + "type": "string" + }, + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "campaignId", + "expectedVersion" + ], + "type": "object" + }, + "AssignSmsLineCampaignServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignContextUnavailableProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "AssignVoiceLineProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceDefaultProfileAssignmentForbiddenProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + } + ] + }, + "AssignVoiceLineProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "AssignVoiceLineProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "AssignVoiceLineProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "AssignVoiceLineProfileNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ResourceNotFoundProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" + } + ] + }, + "AssignVoiceLineProfileRequest": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "profileId": { + "type": "string" + } + }, + "required": [ + "expectedVersion", + "profileId" + ], + "type": "object" + }, + "AssignmentExistsProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ASSIGNMENT_EXISTS", + "status": 409, + "title": "Assignment Exists", + "type": "https://photon.codes/docs/problems/assignment-exists" + }, + "properties": { + "code": { + "const": "ASSIGNMENT_EXISTS", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Assignment Exists", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/assignment-exists", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "AssignmentNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ASSIGNMENT_NOT_FOUND", + "status": 404, + "title": "Assignment Not Found", + "type": "https://photon.codes/docs/problems/assignment-not-found" + }, + "properties": { + "code": { + "const": "ASSIGNMENT_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Assignment Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/assignment-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "Attachment": { + "additionalProperties": false, + "properties": { + "contentType": { + "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$", + "type": "string" + }, + "createdAt": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", + "type": "string" + }, + "filename": { + "minLength": 1, + "type": "string" + }, + "id": { + "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "metadata": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" }, - "tokenUrl": "https://auth.photon.codes/oauth2/token" + "type": "object" + }, + "projectId": { + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "sizeBytes": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "updatedAt": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", + "type": "string" } }, - "type": "oauth2" + "required": [ + "contentType", + "createdAt", + "id", + "projectId", + "sizeBytes", + "updatedAt" + ], + "type": "object" }, - "projectApiKey": { - "description": "Project API key, `pho_sk_` prefixed, sent as `Authorization: Bearer `. Bound to one project, so it is accepted only under `/v1/projects/{projectId}` and refused everywhere else.", - "scheme": "bearer", - "type": "http" + "AttachmentConflictProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ATTACHMENT_CONFLICT", + "status": 409, + "title": "Attachment Conflict", + "type": "https://photon.codes/docs/problems/attachment-conflict" + }, + "properties": { + "code": { + "const": "ATTACHMENT_CONFLICT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Attachment Conflict", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/attachment-conflict", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" }, - "serviceIdentityBearer": { - "description": "Organization Service Identity API key or M2M access token, sent as `Authorization: Bearer `. Restricted to its organization and explicitly granted business permissions. It does not authorize human organization governance or Photon credential management. Never send an M2M client secret to a business endpoint.", - "scheme": "bearer", - "type": "http" - } - } - }, - "info": { - "title": "Photon API", - "version": "1.0.0" - }, - "openapi": "3.1.0", - "paths": { - "/v1/account": { - "delete": { - "operationId": "deleteAccount", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" - } - } + "AttachmentNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ATTACHMENT_NOT_FOUND", + "status": 404, + "title": "Attachment Not Found", + "type": "https://photon.codes/docs/problems/attachment-not-found" + }, + "properties": { + "code": { + "const": "ATTACHMENT_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Attachment Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/attachment-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "AttachmentNotReadyProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ATTACHMENT_NOT_READY", + "status": 409, + "title": "Attachment Not Ready", + "type": "https://photon.codes/docs/problems/attachment-not-ready" + }, + "properties": { + "code": { + "const": "ATTACHMENT_NOT_READY", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Attachment Not Ready", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/attachment-not-ready", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "AttachmentNotReadyRetryAfter": { + "enum": [ + "5" + ], + "type": "string" + }, + "AttachmentPage": { + "additionalProperties": false, + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/Attachment" }, - "description": "The deleted account tombstone.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } + "nextPageToken": { + "description": "Continue with this token, even if items is empty. Omitted when no more pages remain.", + "maxLength": 4096, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$", + "type": "string" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "AttachmentUploadNotReadyProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ATTACHMENT_UPLOAD_NOT_READY", + "status": 409, + "title": "Attachment Upload Not Ready", + "type": "https://photon.codes/docs/problems/attachment-upload-not-ready" + }, + "properties": { + "code": { + "const": "ATTACHMENT_UPLOAD_NOT_READY", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Attachment Upload Not Ready", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/attachment-upload-not-ready", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "AuthorizedApplication": { + "additionalProperties": {}, + "properties": { + "application": { + "$ref": "#/components/schemas/AuthorizedOAuthApplication" + }, + "authorizationId": { + "description": "Identifier of the user's authorization grant for this application.", + "type": "string" + }, + "grantedScopes": { + "description": "OAuth scope slugs the user has granted to this application.", + "items": { + "description": "Granted OAuth scope slug.", + "type": "string" }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "type": "array" + }, + "oauthResource": { + "anyOf": [ + { + "type": "string" }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" } - } + ], + "description": "OAuth resource associated with the grant, or null when no resource is specified." + } + }, + "required": [ + "application", + "authorizationId", + "grantedScopes", + "oauthResource" + ], + "type": "object" + }, + "AuthorizedOAuthApplication": { + "additionalProperties": {}, + "description": "The OAuth application authorized by the authenticated user.", + "properties": { + "applicationType": { + "description": "OAuth application type reported by the authorization server.", + "type": "string" }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "clientId": { + "description": "OAuth client identifier used by the application in authorization requests.", + "type": "string" + }, + "createdAt": { + "description": "UTC timestamp when the application was created, in RFC 3339 format.", + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ], + "description": "Application description, or null when no description is set." }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "id": { + "description": "Application identifier to pass as applicationId when revoking this application's grant.", + "type": "string" }, - "409": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_OWNS_ORGANIZATIONS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Account Owns Organizations", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-owns-organizations", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ACCOUNT_OWNS_ORGANIZATIONS: Account Owns Organizations", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "isFirstParty": { + "description": "Whether the application is classified as first-party by the authorization server.", + "type": "boolean" }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "name": { + "description": "Display name of the authorized application.", + "type": "string" }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "redirectUris": { + "description": "Registered OAuth callback URLs for the application.", + "items": { + "$ref": "#/components/schemas/AuthorizedOAuthApplicationRedirectUri" }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "scopes": { + "description": "OAuth scope slugs configured for the application; grantedScopes records what the user authorized.", + "items": { + "description": "OAuth scope slug.", + "type": "string" }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "updatedAt": { + "description": "UTC timestamp when the application was last updated, in RFC 3339 format.", + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "usesPkce": { + "description": "Whether the application uses Proof Key for Code Exchange (PKCE).", + "type": "boolean" } }, - "security": [ - { - "accountServiceKey": [] + "required": [ + "applicationType", + "clientId", + "createdAt", + "description", + "id", + "isFirstParty", + "name", + "redirectUris", + "scopes", + "updatedAt", + "usesPkce" + ], + "type": "object" + }, + "AuthorizedOAuthApplicationRedirectUri": { + "additionalProperties": {}, + "properties": { + "default": { + "description": "Whether this is the application's default redirect URI.", + "type": "boolean" }, - { - "oauth2": [ - "account:write" - ] + "uri": { + "description": "Registered OAuth callback URL for the application.", + "type": "string" } + }, + "required": [ + "default", + "uri" ], - "summary": "Delete the authenticated account", - "tags": [ - "Account" + "type": "object" + }, + "AvailableProjectSlug": { + "additionalProperties": false, + "properties": { + "available": { + "const": true, + "type": "boolean" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "available", + "slug" ], - "x-required-permissions": [ - "account:write" + "type": "object" + }, + "BatchUpdateVoiceLineProfileAssignmentsConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceDefaultProfileAssignmentForbiddenProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + } + ] + }, + "BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ResourceNotFoundProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" + } + ] + }, + "BatchUpdateVoiceLineProfileAssignmentsRequest": { + "additionalProperties": false, + "properties": { + "updates": { + "items": { + "$ref": "#/components/schemas/VoiceLineProfileAssignmentUpdate" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "updates" ], - "description": "Deletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier." + "type": "object" }, - "get": { - "operationId": "getAccount", - "parameters": [], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" - } - } + "BatchUpdateVoiceLineProfileAssignmentsResponse": { + "additionalProperties": false, + "properties": { + "assignments": { + "items": { + "$ref": "#/components/schemas/VoiceLineProfileAssignment" }, - "description": "The authenticated account.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "type": "array" + } + }, + "required": [ + "assignments" + ], + "type": "object" + }, + "BeginInvitationSsoBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "BeginInvitationSsoForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "BeginInvitationSsoGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "BeginInvitationSsoInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "BeginInvitationSsoPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "BeginInvitationSsoRequest": { + "additionalProperties": false, + "properties": { + "returnTo": { + "minLength": 1, + "type": "string" + }, + "token": { + "pattern": "^[A-Za-z0-9_-]{43}$", + "type": "string" + } + }, + "required": [ + "token", + "returnTo" + ], + "type": "object" + }, + "BeginOrganizationAuthenticationBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "BeginOrganizationAuthenticationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "BeginOrganizationAuthenticationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "BeginOrganizationAuthenticationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "BeginOrganizationAuthenticationPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "BeginOrganizationClosureAuthenticationBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "BeginOrganizationClosureAuthenticationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "BeginOrganizationClosureAuthenticationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "BeginOrganizationClosureAuthenticationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "BeginOrganizationClosureAuthenticationPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "BeginOrganizationSsoAdmissionBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "BeginOrganizationSsoAdmissionForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "BeginOrganizationSsoAdmissionGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "BeginOrganizationSsoAdmissionInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "BeginOrganizationSsoAdmissionPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "BillingNotProvisionedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "BILLING_NOT_PROVISIONED", + "status": 503, + "title": "Billing Not Provisioned", + "type": "https://photon.codes/docs/problems/billing-not-provisioned" + }, + "properties": { + "code": { + "const": "BILLING_NOT_PROVISIONED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Billing Not Provisioned", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/billing-not-provisioned", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "BillingOperation": { + "description": "Authoritative provisioning state. Poll the operation route while pending.", + "oneOf": [ + { + "$ref": "#/components/schemas/PendingBillingOperation" + }, + { + "$ref": "#/components/schemas/SucceededBillingOperation" + }, + { + "$ref": "#/components/schemas/FailedBillingOperation" + } + ] + }, + "BillingOperationFailure": { + "additionalProperties": false, + "properties": { + "code": { + "$ref": "#/components/schemas/BillingOperationFailureCode" + }, + "detail": { + "anyOf": [ + { + "$ref": "#/components/schemas/BillingOperationFailureDetail" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "detail", + "retryable" + ], + "type": "object" + }, + "BillingOperationFailureCode": { + "description": "Stable provider-neutral failure category.", + "enum": [ + "payment_method_required", + "payment_failed", + "not_provisioned", + "invalid_target", + "internal" + ], + "type": "string" + }, + "BillingOperationFailureDetail": { + "enum": [ + "cancellation_scheduled", + "feature_not_sold_by_plan", + "feature_not_found", + "payment_timeout", + "plan_activation_timeout", + "plan_not_found", + "quantity_out_of_range", + "target_rejected" + ], + "type": "string" + }, + "BillingOperationKind": { + "enum": [ + "change_plan", + "adjust_fixed_charge_quantity" + ], + "type": "string" + }, + "BillingOperationResult": { + "additionalProperties": false, + "properties": { + "type": { + "const": "version", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "type", + "version" + ], + "type": "object" + }, + "BillingPlan": { + "additionalProperties": false, + "properties": { + "baseAmountCents": { + "description": "Recurring base price in whole cents.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "categoryDisplayName": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "type": "string" }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" } - } + ], + "description": "Display name for the subscription category; absent or null when unconfigured." }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "currency": { + "description": "ISO currency code.", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "entitlements": { + "items": { + "$ref": "#/components/schemas/BillingPlanEntitlement" }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" }, - "410": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "fixedCharges": { + "items": { + "$ref": "#/components/schemas/FixedCharge" }, - "description": "ACCOUNT_DELETED: Account Deleted", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } + "interval": { + "$ref": "#/components/schemas/BillingPlanInterval" + }, + "name": { + "type": "string" + }, + "payInAdvance": { + "type": "boolean" + }, + "planCode": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "usageCharges": { + "items": { + "$ref": "#/components/schemas/UsageCharge" }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" + } + }, + "required": [ + "baseAmountCents", + "currency", + "description", + "entitlements", + "fixedCharges", + "interval", + "name", + "payInAdvance", + "planCode", + "usageCharges" + ], + "type": "object" + }, + "BillingPlanEntitlement": { + "additionalProperties": false, + "properties": { + "featureKey": { + "type": "string" }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "value": { + "type": "string" + } + }, + "required": [ + "featureKey", + "value" + ], + "type": "object" + }, + "BillingPlanInterval": { + "enum": [ + "weekly", + "monthly", + "quarterly", + "semiannual", + "yearly" + ], + "type": "string" + }, + "CancelOperationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/InsufficientScopeProblem" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CancelOperationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CancelOperationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CancelSubscriptionBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CancelSubscriptionConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/FailedPreconditionProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyRequestInProgressProblem" + } + ] + }, + "CancelSubscriptionForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CancelSubscriptionGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CancelSubscriptionInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CancelSubscriptionRequest": { + "additionalProperties": false, + "properties": { + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + } + }, + "required": [ + "category" + ], + "type": "object" + }, + "CancelSubscriptionResponse": { + "additionalProperties": false, + "properties": { + "cancellationScheduled": { + "description": "False when the category held no active subscription.", + "type": "boolean" + }, + "cancelsAt": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ], + "description": "End of the final paid period, ISO 8601." + }, + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" } }, - "security": [ + "required": [ + "cancellationScheduled", + "cancelsAt", + "category" + ], + "type": "object" + }, + "CancelSubscriptionServiceUnavailableProblem": { + "oneOf": [ { - "accountServiceKey": [] + "$ref": "#/components/schemas/IdempotencyUnavailableProblem" }, { - "oauth2": [ - "account:read" - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "CancelSubscriptionUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" } + ] + }, + "CaptchaProvider": { + "enum": [ + "turnstile", + "hcaptcha" ], - "summary": "Get the authenticated account", - "tags": [ - "Account" + "type": "string" + }, + "CaptchaRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "challengeContext": "example-challenge-context", + "code": "CAPTCHA_REQUIRED", + "provider": "turnstile", + "siteKey": "example-site-key", + "status": 403, + "title": "Captcha Required", + "type": "https://photon.codes/docs/problems/captcha-required" + }, + "properties": { + "challengeContext": { + "type": "string" + }, + "code": { + "const": "CAPTCHA_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "provider": { + "$ref": "#/components/schemas/CaptchaProvider" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "siteKey": { + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Captcha Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/captcha-required", + "type": "string" + } + }, + "required": [ + "challengeContext", + "provider", + "siteKey", + "code", + "status", + "title", + "type" ], - "x-required-permissions": [ - "account:read" + "type": "object" + }, + "ChangePlanBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ChangePlanConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/FailedPreconditionProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyRequestInProgressProblem" + } + ] + }, + "ChangePlanForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ChangePlanGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ChangePlanInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ChangePlanRequest": { + "additionalProperties": false, + "properties": { + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + }, + "planCode": { + "description": "Plan to subscribe to, e.g. analytics_pro.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "category", + "planCode" ], - "description": "Returns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile." + "type": "object" }, - "patch": { - "operationId": "updateAccount", - "parameters": [ + "ChangePlanServiceUnavailableProblem": { + "oneOf": [ { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", + "$ref": "#/components/schemas/IdempotencyUnavailableProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ChangePlanUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CheckProjectSlugAvailabilityForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CheckProjectSlugAvailabilityGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CheckProjectSlugAvailabilityResponse": { + "oneOf": [ + { + "$ref": "#/components/schemas/AvailableProjectSlug" + }, + { + "$ref": "#/components/schemas/UnavailableProjectSlug" + } + ] + }, + "ClickHouseSqlQueryRequest": { + "additionalProperties": false, + "properties": { + "parameters": { + "additionalProperties": { + "maxLength": 16384, "type": "string" - } + }, + "propertyNames": { + "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$", + "type": "string" + }, + "type": "object" + }, + "sql": { + "maxLength": 65536, + "minLength": 1, + "type": "string" } + }, + "required": [ + "sql" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "firstName": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - } - } + "type": "object" + }, + "CommitAccountProfilePictureBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The updated account.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "CommitAccountProfilePictureForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CommitAccountProfilePictureGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CommitAccountProfilePictureInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CommitAccountProfilePictureRequest": { + "additionalProperties": false, + "properties": { + "uploadId": { + "pattern": "^pho_upl_[0-9a-z]{26}$", + "type": "string" + } + }, + "required": [ + "uploadId" + ], + "type": "object" + }, + "CommitAccountProfilePictureUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + }, + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "CommitAgentProfileAvatarBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "CommitAgentProfileAvatarForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CommitAgentProfileAvatarGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CommitAgentProfileAvatarRequest": { + "additionalProperties": false, + "properties": { + "uploadId": { + "type": "string" + } + }, + "required": [ + "uploadId" + ], + "type": "object" + }, + "CommitAgentProfileAvatarUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundConfiguredProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ConfigureVoiceProfileOutboundRequest": { + "additionalProperties": false, + "properties": { + "authentication": { + "$ref": "#/components/schemas/SipOutboundAuthenticationPolicy" + }, + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "authentication", + "expectedVersion" + ], + "type": "object" + }, + "ConfigureVoiceProfileOutboundResponse": { + "additionalProperties": false, + "properties": { + "outbound": { + "$ref": "#/components/schemas/SipOutboundConfiguration" + }, + "password": { + "anyOf": [ + { + "minLength": 1, + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + }, + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "outbound", + "password", + "profileVersion" + ], + "type": "object" + }, + "ConfigureVoiceProfileOutboundUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "ConfirmAccountPhoneVerificationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ConfirmAccountPhoneVerificationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ConfirmAccountPhoneVerificationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ConfirmAccountPhoneVerificationRequest": { + "additionalProperties": false, + "properties": { + "code": { + "pattern": "^\\d{6}$", + "type": "string" + }, + "phoneNumber": { + "pattern": "^[+\\d][\\d\\s().-]{6,24}$", + "type": "string" + } + }, + "required": [ + "code", + "phoneNumber" + ], + "type": "object" + }, + "ConnectEmailDomainBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ConnectEmailDomainConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/EmailDomainAlreadyConnectedProblem" + }, + { + "$ref": "#/components/schemas/EmailDomainCapExceededProblem" + } + ] + }, + "ConnectEmailDomainForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ConnectEmailDomainGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ConnectEmailDomainInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ConnectEmailDomainRequest": { + "additionalProperties": false, + "properties": { + "domain": { + "type": "string" + } + }, + "required": [ + "domain" + ], + "type": "object" + }, + "ConnectEmailDomainServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ConnectEmailDomainUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "ConnectTelegramBotBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ConnectTelegramBotConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/TelegramProjectDeletedProblem" + }, + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/TelegramProvisionInProgressProblem" + } + ] + }, + "ConnectTelegramBotForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ConnectTelegramBotGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ConnectTelegramBotInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ConnectTelegramBotRequest": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "ConnectTelegramBotUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "ConnectWhatsappBusinessBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ConnectWhatsappBusinessForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ConnectWhatsappBusinessGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ConnectWhatsappBusinessInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ConnectWhatsappBusinessRequest": { + "additionalProperties": false, + "properties": { + "code": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "phoneNumberId": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "wabaId": { + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "code", + "phoneNumberId", + "wabaId" + ], + "type": "object" + }, + "ConnectWhatsappBusinessServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ConnectWhatsappBusinessUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CountProjectsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CountProjectsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateAccountProfilePictureUploadForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateAccountProfilePictureUploadGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateAccountProfilePictureUploadInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateAccountServiceKeyBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "CreateAccountServiceKeyForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateAccountServiceKeyGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateAccountServiceKeyInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateAccountServiceKeyRequest": { + "additionalProperties": false, + "properties": { + "expiresAt": { + "example": "2030-01-01T00:00:00Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "CreateAccountServiceKeyResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "type": "string" + }, + "serviceKey": { + "$ref": "#/components/schemas/AccountServiceKey" + } + }, + "required": [ + "secret", + "serviceKey" + ], + "type": "object" + }, + "CreateAccountServiceKeyUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + }, + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "CreateAgentProfileAvatarUploadForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateAgentProfileAvatarUploadGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateAgentProfileAvatarUploadRequest": { + "additionalProperties": false, + "properties": { + "contentType": { + "$ref": "#/components/schemas/AgentProfileAvatarContentType" + } + }, + "required": [ + "contentType" + ], + "type": "object" + }, + "CreateAppInstallationRequestConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/AppInstallationAssertionReplayedProblem" + }, + { + "$ref": "#/components/schemas/AppInstallationConfigChangedProblem" + } + ] + }, + "CreateAppInstallationRequestGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateAppInstallationRequestRequest": { + "additionalProperties": false, + "properties": { + "appId": { + "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "clientAssertion": { + "maxLength": 16384, + "minLength": 1, + "type": "string" + }, + "redirectUri": { + "maxLength": 4096, + "type": "string" + }, + "state": { + "maxLength": 4096, + "type": "string" + } + }, + "required": [ + "appId", + "clientAssertion", + "redirectUri", + "state" + ], + "type": "object" + }, + "CreateAppInstallationRequestResponse": { + "additionalProperties": {}, + "properties": { + "appId": { + "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "appVersion": { + "pattern": "^[1-9][0-9]*$", + "type": "string" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "redirectUri": { + "maxLength": 4096, + "type": "string" + }, + "requestId": { + "pattern": "^pho_air_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "state": { + "maxLength": 4096, + "type": "string" + } + }, + "required": [ + "requestId", + "appId", + "appVersion", + "redirectUri", + "state", + "createdAt" + ], + "type": "object" + }, + "CreateDefaultVoiceProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceDefaultProfileExistsProblem" + } + ] + }, + "CreateDefaultVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateDefaultVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateDefaultVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateDefaultVoiceProfileRequest": { + "additionalProperties": false, + "properties": { + "mediaEncryption": { + "$ref": "#/components/schemas/VoiceProfileMediaEncryption" + }, + "protocol": { + "const": "sip", + "type": "string" + } + }, + "required": [ + "protocol" + ], + "type": "object" + }, + "CreateOrganizationPaymentMethodCheckoutBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CreateOrganizationPaymentMethodCheckoutForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateOrganizationPaymentMethodCheckoutResponse": { + "additionalProperties": false, + "properties": { + "checkoutUrl": { + "description": "Hosted Stripe page; send the user here.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "checkoutUrl" + ], + "type": "object" + }, + "CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentProviderNotReadyProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateOrganizationSetupIntentBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CreateOrganizationSetupIntentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateOrganizationSetupIntentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateOrganizationSetupIntentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateOrganizationSetupIntentResponse": { + "additionalProperties": false, + "properties": { + "clientSecret": { + "description": "Stripe SetupIntent client secret.", + "minLength": 1, + "type": "string" + }, + "publishableKey": { + "description": "Publishable key for the Stripe account backing billing.", + "pattern": "^pk_.*", + "type": "string" + } + }, + "required": [ + "clientSecret", + "publishableKey" + ], + "type": "object" + }, + "CreateOrganizationSetupIntentUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "CreateOrganizationSsoPortalLinkRequest": { + "additionalProperties": false, + "properties": { + "intent": { + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkRequestIntent" + }, + "returnTo": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "returnTo" + ], + "type": "object" + }, + "CreateOrganizationSsoPortalLinkRequestIntent": { + "default": "sso", + "enum": [ + "sso", + "domain_verification" + ], + "type": "string" + }, + "CreateOrganizationSsoPortalLinkResponse": { + "additionalProperties": {}, + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "CreateProjectApiKeyBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "CreateProjectApiKeyForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateProjectApiKeyRequest": { + "additionalProperties": false, + "example": { + "name": "Example key", + "permissions": [ + "project:read" + ] + }, + "properties": { + "expiresAt": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ApiKeyPermission" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "name", + "permissions" + ], + "type": "object" + }, + "CreateProjectApiKeyResponse": { + "additionalProperties": false, + "properties": { + "apiKey": { + "$ref": "#/components/schemas/ApiKey" + }, + "secret": { + "type": "string" + } + }, + "required": [ + "apiKey", + "secret" + ], + "type": "object" + }, + "CreateProjectApiKeyUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateProjectBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "CreateProjectForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateProjectGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "CreateProjectRequest": { + "additionalProperties": false, + "properties": { + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "slug": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", + "type": "string" + } + }, + "required": [ + "name", + "slug" + ], + "type": "object" + }, + "CreateProjectUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateSharedLineAssignmentBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CreateSharedLineAssignmentConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/ImessageModeDedicatedProblem" + }, + { + "$ref": "#/components/schemas/SharedLineCapExceededProblem" + }, + { + "$ref": "#/components/schemas/AssignmentExistsProblem" + } + ] + }, + "CreateSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateSharedLineAssignmentRequest": { + "additionalProperties": false, + "properties": { + "email": { + "format": "email", + "maxLength": 254, + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", + "type": "string" + }, + "firstName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "handle": { + "$ref": "#/components/schemas/ImessageHandle" + }, + "lastName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "handle" + ], + "type": "object" + }, + "CreateSharedLineAssignmentServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/SharedLinePoolExhaustedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "CreateSharedLineAssignmentUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateVoiceProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceDefaultProfileRequiredProblem" + } + ] + }, + "CreateVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateVoiceProfileRequest": { + "additionalProperties": false, + "properties": { + "mediaEncryption": { + "$ref": "#/components/schemas/VoiceProfileMediaEncryption" + }, + "name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "protocol": { + "const": "sip", + "type": "string" + } + }, + "required": [ + "name", + "protocol" + ], + "type": "object" + }, + "CreateWebhookDestinationBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "CreateWebhookDestinationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateWebhookDestinationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateWebhookDestinationRequest": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + "description": { + "maxLength": 1000, + "type": "string" + }, + "enabledEvents": { + "$ref": "#/components/schemas/WebhookEventSelection" + }, + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/WebhookDestinationStatus", + "default": "enabled" + }, + "url": { + "description": "HTTPS URL without credentials or a fragment.", + "format": "uri", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "apiVersion", + "enabledEvents", + "name", + "url" + ], + "type": "object" + }, + "CreateWebhookDestinationResponse": { + "additionalProperties": false, + "properties": { + "destination": { + "$ref": "#/components/schemas/WebhookDestination" + }, + "signingSecret": { + "pattern": "^whsec_.*", + "type": "string" + } + }, + "required": [ + "destination", + "signingSecret" + ], + "type": "object" + }, + "CreateWebhookDestinationUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/WhatsappModeDedicatedProblem" + }, + { + "$ref": "#/components/schemas/SharedLineCapExceededProblem" + }, + { + "$ref": "#/components/schemas/AssignmentExistsProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentRequest": { + "additionalProperties": false, + "properties": { + "email": { + "format": "email", + "maxLength": 254, + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", + "type": "string" + }, + "firstName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "handle": { + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + }, + "lastName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "handle" + ], + "type": "object" + }, + "CreateWhatsappSharedLineAssignmentServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/SharedLinePoolExhaustedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreateWhatsappVoipSenderBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "CreateWhatsappVoipSenderConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/WhatsappAccountDisconnectingProblem" + }, + { + "$ref": "#/components/schemas/WhatsappAccountProvisioningProblem" + }, + { + "$ref": "#/components/schemas/WhatsappSenderConnectedProblem" + }, + { + "$ref": "#/components/schemas/WhatsappSenderProvisioningProblem" + }, + { + "$ref": "#/components/schemas/WhatsappVoipSourceReleasingProblem" + } + ] + }, + "CreateWhatsappVoipSenderForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "CreateWhatsappVoipSenderGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "CreateWhatsappVoipSenderInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "CreateWhatsappVoipSenderNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/WhatsappWabaNotConnectedProblem" + }, + { + "$ref": "#/components/schemas/WhatsappVoipSourceNotEligibleProblem" + } + ] + }, + "CreateWhatsappVoipSenderRequest": { + "additionalProperties": false, + "properties": { + "displayName": { + "type": "string" + }, + "voipResourceId": { + "type": "string" + } + }, + "required": [ + "voipResourceId" + ], + "type": "object" + }, + "CreateWhatsappVoipSenderServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "CreateWhatsappVoipSenderUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/WhatsappDisplayNameUnavailableProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "CreatedAppInstallationDelivery": { + "additionalProperties": false, + "properties": { + "clientId": { + "maxLength": 256, + "pattern": "^client_[A-Za-z0-9]+$", + "type": "string" + }, + "clientSecret": { + "maxLength": 8192, + "minLength": 1, + "type": "string" + }, + "installationId": { + "pattern": "^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "status": { + "const": "created", + "type": "string" + } + }, + "required": [ + "installationId", + "status", + "clientId", + "clientSecret" + ], + "type": "object" + }, + "DedicatedProjectPlatformSettings": { + "additionalProperties": false, + "properties": { + "mode": { + "const": "dedicated", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + "DeleteAccountForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteAccountGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "DeleteAccountInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DeleteProjectBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "DeleteProjectForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteProjectGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "DeleteProjectUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "DeleteVoiceProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/VoiceProfileInUseProblem" + }, + { + "$ref": "#/components/schemas/VoiceDefaultProfileDeletionForbiddenProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + } + ] + }, + "DeleteVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteVoiceProfileForceInput": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "DeleteVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "DeleteVoiceProfileInboundConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + } + ] + }, + "DeleteVoiceProfileInboundForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteVoiceProfileInboundGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "DeleteVoiceProfileInboundInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DeleteVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DeleteVoiceProfileOutboundConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundNotConfiguredProblem" + } + ] + }, + "DeleteVoiceProfileOutboundForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteVoiceProfileOutboundGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "DeleteVoiceProfileOutboundInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DeleteVoiceProfileOutboundResponse": { + "additionalProperties": false, + "properties": { + "outbound": { + "type": "null" + }, + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "outbound", + "profileVersion" + ], + "type": "object" + }, + "DeleteWebhookDestinationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DeleteWebhookDestinationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "DeprecatedWebhookApiVersion": { + "additionalProperties": false, + "properties": { + "retirement": { + "$ref": "#/components/schemas/WebhookApiVersionRetirement" + }, + "selectable": { + "const": false, + "type": "boolean" + }, + "status": { + "const": "deprecated", + "type": "string" + }, + "successor": { + "anyOf": [ + { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "version": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + } + }, + "required": [ + "retirement", + "successor", + "selectable", + "status", + "version" + ], + "type": "object" + }, + "DeprecatedWebhookEventCatalog": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + "contractNamespace": { + "const": "@photon-hq/contracts", + "type": "string" + }, + "events": { + "items": { + "$ref": "#/components/schemas/WebhookEventType" + }, + "type": "array" + }, + "packageVersion": { + "minLength": 1, + "type": "string" + }, + "retirement": { + "$ref": "#/components/schemas/WebhookApiVersionRetirement" + }, + "selectable": { + "const": false, + "type": "boolean" + }, + "status": { + "const": "deprecated", + "type": "string" + }, + "successor": { + "anyOf": [ + { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "retirement", + "successor", + "selectable", + "status", + "contractNamespace", + "packageVersion", + "apiVersion", + "events" + ], + "type": "object" + }, + "DeviceAuthorizeResponse": { + "additionalProperties": {}, + "properties": { + "device_code": { + "description": "Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize.", + "type": "string" + }, + "expires_in": { + "description": "Lifetime of the device code and user code, in seconds.", + "type": "number" + }, + "interval": { + "description": "Minimum number of seconds to wait between token polling requests.", + "type": "number" + }, + "user_code": { + "description": "Code the user enters at verification_uri to authorize this device.", + "type": "string" + }, + "verification_uri": { + "description": "Browser URL where the user enters user_code and authorizes the device.", + "type": "string" + }, + "verification_uri_complete": { + "description": "Browser URL with user_code included, ready to open or encode as a QR code.", + "type": "string" + } + }, + "required": [ + "device_code", + "expires_in", + "interval", + "user_code", + "verification_uri", + "verification_uri_complete" + ], + "type": "object" + }, + "DeviceCodeGrantRequest": { + "properties": { + "device_code": { + "description": "device_code returned by POST /v1/auth/device/code. Required for a device-code grant.", + "minLength": 1, + "type": "string" + }, + "grant_type": { + "const": "urn:ietf:params:oauth:grant-type:device_code", + "description": "Selects the device authorization grant to poll or exchange a device code.", + "type": "string" + } + }, + "required": [ + "device_code", + "grant_type" + ], + "type": "object" + }, + "DeviceTokenBadRequestResponse": { + "additionalProperties": {}, + "properties": { + "error": { + "description": "OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval.", + "type": "string" + }, + "error_description": { + "description": "Optional human-readable explanation of the OAuth error.", + "type": "string" + } + }, + "required": [ + "error" + ], + "type": "object" + }, + "DeviceTokenRequest": { + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceCodeGrantRequest" + }, + { + "$ref": "#/components/schemas/RefreshTokenGrantRequest" + } + ] + }, + "DeviceTokenResponse": { + "additionalProperties": {}, + "properties": { + "access_token": { + "description": "Bearer access token for authenticated Photon API requests.", + "type": "string" + }, + "authentication_method": { + "description": "Authentication method used for the device login, when returned. Omitted for refresh grants.", + "type": "string" + }, + "expires_in": { + "description": "Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable.", + "type": "number" + }, + "refresh_token": { + "description": "Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one.", + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/DeviceTokenResponseUser" + } + }, + "required": [ + "access_token", + "expires_in", + "refresh_token", + "user" + ], + "type": "object" + }, + "DeviceTokenResponseUser": { + "additionalProperties": {}, + "description": "Profile of the authenticated user.", + "properties": { + "email": { + "description": "Authenticated user's email address.", + "type": "string" + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "User's first name, or null when not set." + }, + "id": { + "description": "Authenticated user's identity identifier; distinct from the Photon Account ID.", + "type": "string" + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "User's last name, or null when not set." + } + }, + "required": [ + "id", + "email", + "first_name", + "last_name" + ], + "type": "object" + }, + "DisableOrganizationSsoBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "DisableOrganizationSsoForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "DisableOrganizationSsoGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "DisableOrganizationSsoInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DisableOrganizationSsoPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "DisableOrganizationSsoRequest": { + "additionalProperties": false, + "properties": { + "domains": { + "default": [], + "items": { + "maxLength": 253, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "expectedVersion": { + "pattern": "^(0|[1-9][0-9]{0,19})$", + "type": "string" + } + }, + "required": [ + "expectedVersion" + ], + "type": "object" + }, + "DisableOrganizationSsoUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/WhatsappAccountDisconnectingProblem" + }, + { + "$ref": "#/components/schemas/WhatsappAccountProvisioningProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DisconnectWhatsappBusinessAccountUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "DownloadAttachmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "DownloadAttachmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "DownloadAttachmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "DownloadAttachmentResponse": {}, + "EmailDomainAlreadyConnectedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "EMAIL_DOMAIN_ALREADY_CONNECTED", + "status": 409, + "title": "Email Domain Already Connected", + "type": "https://photon.codes/docs/problems/email-domain-already-connected" + }, + "properties": { + "code": { + "const": "EMAIL_DOMAIN_ALREADY_CONNECTED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Email Domain Already Connected", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/email-domain-already-connected", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "EmailDomainCapExceededProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "EMAIL_DOMAIN_CAP_EXCEEDED", + "status": 409, + "title": "Email Domain Cap Exceeded", + "type": "https://photon.codes/docs/problems/email-domain-cap-exceeded" + }, + "properties": { + "code": { + "const": "EMAIL_DOMAIN_CAP_EXCEEDED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Email Domain Cap Exceeded", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/email-domain-cap-exceeded", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "EntitlementRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ENTITLEMENT_REQUIRED", + "status": 402, + "title": "Entitlement Required", + "type": "https://photon.codes/docs/problems/entitlement-required" + }, + "properties": { + "code": { + "const": "ENTITLEMENT_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 402, + "type": "number" + }, + "title": { + "const": "Entitlement Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/entitlement-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ExistingAppInstallationDelivery": { + "additionalProperties": false, + "properties": { + "installationId": { + "pattern": "^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ExistingAppInstallationDeliveryStatus" + } + }, + "required": [ + "installationId", + "status" + ], + "type": "object" + }, + "ExistingAppInstallationDeliveryStatus": { + "enum": [ + "delivery_consumed", + "recovery_required", + "revocation_pending", + "revoked" + ], + "type": "string" + }, + "FailedBillingOperation": { + "additionalProperties": false, + "properties": { + "failure": { + "$ref": "#/components/schemas/BillingOperationFailure" + }, + "kind": { + "$ref": "#/components/schemas/BillingOperationKind" + }, + "operationId": { + "description": "Stable handle for this provisioning action.", + "type": "string" + }, + "resolvedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "result": { + "type": "null" + }, + "status": { + "const": "failed", + "description": "Terminal. Failure contains a stable code and retryability.", + "type": "string" + }, + "submittedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "failure", + "kind", + "operationId", + "submittedAt", + "resolvedAt", + "result", + "status" + ], + "type": "object" + }, + "FailedPreconditionProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "FAILED_PRECONDITION", + "status": 409, + "title": "Failed Precondition", + "type": "https://photon.codes/docs/problems/failed-precondition" + }, + "properties": { + "code": { + "const": "FAILED_PRECONDITION", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Failed Precondition", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/failed-precondition", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "FixedCharge": { + "additionalProperties": false, + "properties": { + "chargeModel": { + "$ref": "#/components/schemas/FixedChargeModel" + }, + "displayName": { + "type": "string" + }, + "fixedChargeCode": { + "type": "string" + }, + "payInAdvance": { + "type": "boolean" + }, + "pricing": { + "$ref": "#/components/schemas/FixedChargePricing" + }, + "prorated": { + "type": "boolean" + }, + "quantity": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "chargeModel", + "displayName", + "fixedChargeCode", + "payInAdvance", + "pricing", + "prorated", + "quantity" + ], + "type": "object" + }, + "FixedChargeModel": { + "enum": [ + "graduated", + "standard", + "volume" + ], + "type": "string" + }, + "FixedChargePricing": { + "additionalProperties": false, + "properties": { + "amount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "tiers": { + "items": { + "$ref": "#/components/schemas/FixedChargeTier" + }, + "type": "array" + } + }, + "required": [ + "amount", + "tiers" + ], + "type": "object" + }, + "FixedChargeTier": { + "additionalProperties": false, + "properties": { + "flatAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "fromUnit": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "perUnitAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "toUnit": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "flatAmount", + "fromUnit", + "perUnitAmount", + "toUnit" + ], + "type": "object" + }, + "ForbiddenProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "FORBIDDEN", + "status": 403, + "title": "Forbidden", + "type": "https://photon.codes/docs/problems/forbidden" + }, + "properties": { + "code": { + "const": "FORBIDDEN", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Forbidden", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/forbidden", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "GetAccountForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetAccountGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetAccountInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetAgentProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetAgentProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetAttachmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetAttachmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetAttachmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetBillingOperationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetBillingOperationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetBillingOperationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetBillingOverviewForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetBillingOverviewGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetBillingOverviewInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetBillingOverviewResponse": { + "additionalProperties": false, + "properties": { + "entitlementsVersion": { + "description": "Bumps on every entitlement change in any category.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "subscriptions": { + "description": "One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened.", + "items": { + "$ref": "#/components/schemas/ProjectSubscription" + }, + "type": "array" + }, + "usage": { + "description": "Current-period metered usage, priced.", + "items": { + "$ref": "#/components/schemas/MeteredUsage" + }, + "type": "array" + } + }, + "required": [ + "entitlementsVersion", + "subscriptions", + "usage" + ], + "type": "object" + }, + "GetDefaultVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetDefaultVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetDefaultVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetMessageMetricsBackfillForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetMessageMetricsBackfillResponse": { + "additionalProperties": {}, + "properties": { + "failedWrites": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "lastVerifiedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "processedWrites": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "state": { + "$ref": "#/components/schemas/MessageMetricsBackfillState" + }, + "version": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + } + }, + "required": [ + "failedWrites", + "lastVerifiedAt", + "processedWrites", + "state", + "version" + ], + "type": "object" + }, + "GetMessageMetricsSqlSchemaForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetMessageMetricsSqlSchemaResponse": { + "additionalProperties": false, + "properties": { + "capabilities": { + "$ref": "#/components/schemas/MessageMetricsSqlCapabilities" + }, + "dialect": { + "type": "string" + }, + "limits": { + "$ref": "#/components/schemas/MessageMetricsSqlLimits" + }, + "projectScoped": { + "const": true, + "type": "boolean" + }, + "tables": { + "items": { + "$ref": "#/components/schemas/MessageMetricsSqlTable" + }, + "type": "array" + }, + "version": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + } + }, + "required": [ + "capabilities", + "dialect", + "limits", + "projectScoped", + "tables", + "version" + ], + "type": "object" + }, + "GetOperationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetOperationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetOperationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetOperationResponse": { + "additionalProperties": false, + "properties": { + "operation": { + "$ref": "#/components/schemas/Operation" + }, + "resource": { + "$ref": "#/components/schemas/Resource" + } + }, + "required": [ + "operation" + ], + "type": "object" + }, + "GetOrganizationBillingOverviewForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetOrganizationBillingOverviewGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetOrganizationBillingOverviewInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetOrganizationBillingOverviewResponse": { + "additionalProperties": false, + "properties": { + "entitlementsVersion": { + "description": "Bumps on every entitlement change for the organization.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "subscription": { + "anyOf": [ + { + "$ref": "#/components/schemas/OrganizationSubscription" + }, + { + "type": "null" + } + ], + "description": "The organization-owned subscription, or null when billing was never opened or has ended." + } + }, + "required": [ + "entitlementsVersion", + "subscription" + ], + "type": "object" + }, + "GetOrganizationConnectionStatusForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "GetOrganizationConnectionStatusGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetOrganizationConnectionStatusInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetOrganizationPaymentMethodForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetOrganizationPaymentMethodGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetOrganizationPaymentMethodInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetOrganizationPaymentMethodResponse": { + "additionalProperties": false, + "properties": { + "cardOnFile": { + "description": "True once a card is captured for the payer.", + "type": "boolean" + }, + "paymentMethod": { + "anyOf": [ + { + "$ref": "#/components/schemas/PaymentMethod" + }, + { + "type": "null" + } + ], + "description": "Metadata for the default card, or null." + } + }, + "required": [ + "cardOnFile", + "paymentMethod" + ], + "type": "object" + }, + "GetOrganizationSsoConfigurationBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "GetOrganizationSsoConfigurationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "GetOrganizationSsoConfigurationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetOrganizationSsoConfigurationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetOrganizationSsoConfigurationPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "GetProjectClosureStatusForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetProjectClosureStatusGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetProjectClosureStatusResponse": { + "additionalProperties": {}, + "properties": { + "deletionOperationId": { + "anyOf": [ + { + "pattern": "^pho_opr_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "domains": { + "items": { + "$ref": "#/components/schemas/ProjectClosureDomainStatus" + }, + "type": "array" + }, + "organizationId": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "ready": { + "type": "boolean" + } + }, + "required": [ + "deletionOperationId", + "domains", + "organizationId", + "projectId", + "ready" + ], + "type": "object" + }, + "GetProjectForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetProjectGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "GetProjectImessagePlatformForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetProjectImessagePlatformGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetProjectImessagePlatformInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetProjectImessagePlatformServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "GetProjectWhatsappPlatformForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetProjectWhatsappPlatformGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetProjectWhatsappPlatformInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetProjectWhatsappPlatformServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "GetResourceForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetResourceGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetResourceInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/SmsLineUnsupportedProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignNotReadyProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignCapacityExceededProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignReconciliationRequiredProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignMutationInProgressProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignOrganizationMismatchProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignNotFoundProblem" + }, + { + "$ref": "#/components/schemas/SmsLineNotFoundProblem" + } + ] + }, + "GetSmsLineCampaignAssignmentResponse": { + "additionalProperties": {}, + "properties": { + "campaign": { + "anyOf": [ + { + "$ref": "#/components/schemas/SmsLineCampaign" + }, + { + "type": "null" + } + ] + }, + "eligibility": { + "$ref": "#/components/schemas/SmsLineCampaignEligibility" + }, + "reasonCode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "resourceId": { + "type": "string" + }, + "version": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "campaign", + "eligibility", + "reasonCode", + "resourceId", + "version" + ], + "type": "object" + }, + "GetSmsLineCampaignAssignmentServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignContextUnavailableProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "GetVoiceLineProfileAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetVoiceLineProfileAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetVoiceLineProfileAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetWebhookDestinationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWebhookDestinationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetWebhookEventSchemaForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWebhookEventSchemaGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetWhatsappBusinessAccountForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWhatsappBusinessAccountGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetWhatsappBusinessAccountInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetWhatsappBusinessVerificationCodeForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetWhatsappBusinessVerificationCodeInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetWhatsappBusinessVerificationCodeNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ResourceNotFoundProblem" + }, + { + "$ref": "#/components/schemas/WhatsappVerificationCodeNotFoundProblem" + } + ] + }, + "GetWhatsappBusinessVerificationCodeResponse": { + "additionalProperties": false, + "properties": { + "code": { + "pattern": "^\\d{6}$", + "type": "string" + }, + "receivedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "code", + "receivedAt" + ], + "type": "object" + }, + "GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/WhatsappVerificationWindowExpiredProblem" + } + ] + }, + "GetWhatsappSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWhatsappSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "GetWhatsappSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetWhatsappSignupConfigForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "GetWhatsappSignupConfigInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "GetWhatsappSignupConfigResponse": { + "additionalProperties": false, + "properties": { + "configId": { + "type": "string" + }, + "graphVersion": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "configId", + "graphVersion", + "scopes" + ], + "type": "object" + }, + "HttpErrorProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "HTTP_ERROR", + "status": 400, + "title": "Request Failed", + "type": "https://photon.codes/docs/problems/http-error" + }, + "properties": { + "code": { + "const": "HTTP_ERROR", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Request Failed", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/http-error", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "IdempotencyKeyInvalidProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IDEMPOTENCY_KEY_INVALID", + "status": 400, + "title": "Idempotency Key Invalid", + "type": "https://photon.codes/docs/problems/idempotency-key-invalid" + }, + "properties": { + "code": { + "const": "IDEMPOTENCY_KEY_INVALID", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Idempotency Key Invalid", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/idempotency-key-invalid", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "IdempotencyKeyRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IDEMPOTENCY_KEY_REQUIRED", + "status": 400, + "title": "Idempotency Key Required", + "type": "https://photon.codes/docs/problems/idempotency-key-required" + }, + "properties": { + "code": { + "const": "IDEMPOTENCY_KEY_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Idempotency Key Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/idempotency-key-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "IdempotencyKeyReusedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IDEMPOTENCY_KEY_REUSED", + "status": 422, + "title": "Idempotency Key Reused", + "type": "https://photon.codes/docs/problems/idempotency-key-reused" + }, + "properties": { + "code": { + "const": "IDEMPOTENCY_KEY_REUSED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 422, + "type": "number" + }, + "title": { + "const": "Idempotency Key Reused", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/idempotency-key-reused", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "IdempotencyRequestInProgressProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IDEMPOTENCY_REQUEST_IN_PROGRESS", + "status": 409, + "title": "Idempotency Request In Progress", + "type": "https://photon.codes/docs/problems/idempotency-request-in-progress" + }, + "properties": { + "code": { + "const": "IDEMPOTENCY_REQUEST_IN_PROGRESS", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Idempotency Request In Progress", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/idempotency-request-in-progress", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "IdempotencyUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IDEMPOTENCY_UNAVAILABLE", + "status": 503, + "title": "Idempotency Unavailable", + "type": "https://photon.codes/docs/problems/idempotency-unavailable" + }, + "properties": { + "code": { + "const": "IDEMPOTENCY_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Idempotency Unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/idempotency-unavailable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ImessageHandle": { + "anyOf": [ + { + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + }, + { + "format": "email", + "maxLength": 254, + "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", + "type": "string" + } + ] + }, + "ImessageModeDedicatedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "IMESSAGE_MODE_DEDICATED", + "status": 409, + "title": "iMessage Mode Is Dedicated", + "type": "https://photon.codes/docs/problems/imessage-mode-dedicated" + }, + "properties": { + "code": { + "const": "IMESSAGE_MODE_DEDICATED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "iMessage Mode Is Dedicated", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/imessage-mode-dedicated", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InsufficientScopeProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INSUFFICIENT_SCOPE", + "status": 403, + "title": "Insufficient Scope", + "type": "https://photon.codes/docs/problems/insufficient-scope" + }, + "properties": { + "code": { + "const": "INSUFFICIENT_SCOPE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Insufficient Scope", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/insufficient-scope", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InternalErrorProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INTERNAL_ERROR", + "status": 500, + "title": "Internal Server Error", + "type": "https://photon.codes/docs/problems/internal-error" + }, + "properties": { + "code": { + "const": "INTERNAL_ERROR", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 500, + "type": "number" + }, + "title": { + "const": "Internal Server Error", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/internal-error", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InvalidArgumentProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INVALID_ARGUMENT", + "status": 400, + "title": "Invalid Argument", + "type": "https://photon.codes/docs/problems/invalid-argument" + }, + "properties": { + "code": { + "const": "INVALID_ARGUMENT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Invalid Argument", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/invalid-argument", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InvalidAttachmentRequestProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INVALID_ATTACHMENT_REQUEST", + "status": 400, + "title": "Invalid Attachment Request", + "type": "https://photon.codes/docs/problems/invalid-attachment-request" + }, + "properties": { + "code": { + "const": "INVALID_ATTACHMENT_REQUEST", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Invalid Attachment Request", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/invalid-attachment-request", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InvalidAuthContextProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INVALID_AUTH_CONTEXT", + "status": 500, + "title": "Invalid Authentication Context", + "type": "https://photon.codes/docs/problems/invalid-auth-context" + }, + "properties": { + "code": { + "const": "INVALID_AUTH_CONTEXT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 500, + "type": "number" + }, + "title": { + "const": "Invalid Authentication Context", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/invalid-auth-context", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InvalidReturnToProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "INVALID_RETURN_TO", + "status": 400, + "title": "Invalid Return To", + "type": "https://photon.codes/docs/problems/invalid-return-to" + }, + "properties": { + "code": { + "const": "INVALID_RETURN_TO", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Invalid Return To", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/invalid-return-to", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "InvitationEnterpriseLoginRequest": { + "additionalProperties": false, + "properties": { + "invitationToken": { + "pattern": "^[A-Za-z0-9_-]{43}$", + "type": "string" + }, + "returnTo": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "invitationToken", + "returnTo" + ], + "type": "object" + }, + "Invoice": { + "additionalProperties": false, + "properties": { + "currency": { + "description": "ISO currency code.", + "type": "string" + }, + "invoiceId": { + "description": "Invoice id.", + "type": "string" + }, + "issuedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Issue date, ISO 8601." + }, + "kind": { + "$ref": "#/components/schemas/InvoiceKind" + }, + "number": { + "description": "Human invoice number.", + "type": "string" + }, + "paymentStatus": { + "$ref": "#/components/schemas/InvoicePaymentStatus" + }, + "pdfUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Downloadable PDF link." + }, + "subjects": { + "description": "Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges.", + "items": { + "$ref": "#/components/schemas/InvoiceSubject" + }, + "type": "array" + }, + "totalCents": { + "description": "Invoice total in cents.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "currency", + "invoiceId", + "issuedAt", + "kind", + "number", + "paymentStatus", + "pdfUrl", + "subjects", + "totalCents" + ], + "type": "object" + }, + "InvoiceKind": { + "description": "What produced the invoice.", + "enum": [ + "subscription", + "one_off", + "credit" + ], + "type": "string" + }, + "InvoicePaymentStatus": { + "description": "Provider-neutral payment status.", + "enum": [ + "pending", + "succeeded", + "failed" + ], + "type": "string" + }, + "InvoiceSubject": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectInvoiceSubject" + }, + { + "$ref": "#/components/schemas/OrganizationInvoiceSubject" + } + ] + }, + "JsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/components/schemas/JsonValue" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + }, + "ListAccountServiceKeysForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListAccountServiceKeysGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ListAccountServiceKeysInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListAccountServiceKeysResponse": { + "additionalProperties": false, + "properties": { + "serviceKeys": { + "items": { + "$ref": "#/components/schemas/AccountServiceKey" + }, + "type": "array" + } + }, + "required": [ + "serviceKeys" + ], + "type": "object" + }, + "ListAttachmentsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListAttachmentsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ListAttachmentsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListAuthorizedApplicationsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "ListAuthorizedApplicationsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ListAuthorizedApplicationsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListAuthorizedApplicationsOrder": { + "enum": [ + "normal", + "desc", + "asc" + ], + "type": "string" + }, + "ListAuthorizedApplicationsResponse": { + "additionalProperties": {}, + "properties": { + "authorizedApplications": { + "description": "One page of applications authorized by the authenticated user.", + "items": { + "$ref": "#/components/schemas/AuthorizedApplication" + }, + "type": "array" + }, + "listMetadata": { + "$ref": "#/components/schemas/ListAuthorizedApplicationsResponseListMetadata" + } + }, + "required": [ + "authorizedApplications", + "listMetadata" + ], + "type": "object" + }, + "ListAuthorizedApplicationsResponseListMetadata": { + "additionalProperties": {}, + "description": "Pagination cursors to pass as after or before in the next list request.", + "properties": { + "after": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Cursor for the next page, or null when there is no next page." + }, + "before": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Cursor for the previous page, or null when there is no previous page." + } + }, + "required": [ + "after", + "before" + ], + "type": "object" + }, + "ListBillingPlansForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListBillingPlansGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListBillingPlansInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListBillingPlansResponse": { + "additionalProperties": false, + "properties": { + "plans": { + "additionalProperties": { + "items": { + "$ref": "#/components/schemas/BillingPlan" + }, + "type": "array" + }, + "description": "Plans grouped by valid metadata type and explicitly published with visible=\"true\".", + "propertyNames": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + }, + "type": "object" + } + }, + "required": [ + "plans" + ], + "type": "object" + }, + "ListInvoicesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListInvoicesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListInvoicesInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListInvoicesResponse": { + "additionalProperties": false, + "properties": { + "invoices": { + "items": { + "$ref": "#/components/schemas/Invoice" + }, + "type": "array" + } + }, + "required": [ + "invoices" + ], + "type": "object" + }, + "ListNumberAreaCodesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListNumberAreaCodesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListNumberAreaCodesInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListNumberAreaCodesResponse": { + "additionalProperties": false, + "properties": { + "areaCodes": { + "items": { + "pattern": "^[2-9][0-9]{2}$", + "type": "string" + }, + "type": "array" + }, + "countryCode": { + "const": "US", + "type": "string" + } + }, + "required": [ + "areaCodes", + "countryCode" + ], + "type": "object" + }, + "ListNumberCountriesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListNumberCountriesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListNumberCountriesInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListNumberCountriesResponse": { + "additionalProperties": false, + "properties": { + "countries": { + "items": { + "$ref": "#/components/schemas/NumberCountry" + }, + "type": "array" + } + }, + "required": [ + "countries" + ], + "type": "object" + }, + "ListOauthScopesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ListOauthScopesResponse": { + "additionalProperties": {}, + "properties": { + "scopes": { + "description": "Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included.", + "items": { + "description": "OAuth business permission slug.", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "scopes" + ], + "type": "object" + }, + "ListOperationsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListOperationsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListOperationsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListProjectApiKeysForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListProjectApiKeysResponse": { + "additionalProperties": false, + "properties": { + "apiKeys": { + "items": { + "$ref": "#/components/schemas/ApiKey" + }, + "type": "array" + } + }, + "required": [ + "apiKeys" + ], + "type": "object" + }, + "ListProjectPlatformsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListProjectPlatformsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListProjectPlatformsResponse": { + "additionalProperties": false, + "properties": { + "platforms": { + "items": { + "$ref": "#/components/schemas/SupportedPlatform" + }, + "type": "array" + } + }, + "required": [ + "platforms" + ], + "type": "object" + }, + "ListProjectsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListProjectsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ListResourcesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListResourcesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListResourcesInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListSharedLineAssignmentsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListSharedLineAssignmentsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListSharedLineAssignmentsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListVoiceProfilesDefaultInput": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "ListVoiceProfilesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListVoiceProfilesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListVoiceProfilesInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListWebhookApiVersionsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWebhookApiVersionsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListWebhookApiVersionsResponse": { + "additionalProperties": false, + "properties": { + "apiVersions": { + "items": { + "$ref": "#/components/schemas/WebhookApiVersion" + }, + "type": "array" + }, + "contractNamespace": { + "const": "@photon-hq/contracts", + "type": "string" + }, + "packageVersion": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "contractNamespace", + "packageVersion", + "apiVersions" + ], + "type": "object" + }, + "ListWebhookDestinationsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWebhookDestinationsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListWebhookEgressAddressesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWebhookEgressAddressesResponse": { + "additionalProperties": false, + "properties": { + "ipAddresses": { + "description": "Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address.", + "items": { + "$ref": "#/components/schemas/WebhookEgressAddress" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "ipAddresses" + ], + "type": "object" + }, + "ListWebhookEventTypesForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWebhookEventTypesGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListWebhookEventTypesResponse": { + "oneOf": [ + { + "$ref": "#/components/schemas/SelectableWebhookEventCatalog" + }, + { + "$ref": "#/components/schemas/DeprecatedWebhookEventCatalog" + } + ] + }, + "ListWhatsappAccountPhoneNumbersForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListWhatsappAccountPhoneNumbersInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ListWhatsappAccountPhoneNumbersResponse": { + "additionalProperties": false, + "properties": { + "phoneNumbers": { + "items": { + "$ref": "#/components/schemas/WhatsappAccountPhoneNumber" + }, + "type": "array" + }, + "wabaId": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "phoneNumbers", + "wabaId" + ], + "type": "object" + }, + "ListWhatsappSharedLineAssignmentsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ListWhatsappSharedLineAssignmentsInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "MessageMetricsBackfillState": { + "enum": [ + "disabled", + "pending", + "running", + "verifying", + "completed", + "paused", + "failed" + ], + "type": "string" + }, + "MessageMetricsDirection": { + "enum": [ + "addressed", + "received" + ], + "type": "string" + }, + "MessageMetricsJsonCatalog": { + "additionalProperties": false, + "properties": { + "commonPaths": { + "items": { + "$ref": "#/components/schemas/MessageMetricsJsonPath" + }, + "readOnly": true, + "type": "array" + }, + "discriminators": { + "items": { + "$ref": "#/components/schemas/MessageMetricsJsonDiscriminator" + }, + "readOnly": true, + "type": "array" + }, + "platforms": { + "items": { + "$ref": "#/components/schemas/MessageMetricsPlatformJsonPaths" + }, + "readOnly": true, + "type": "array" + }, + "resource": { + "$ref": "#/components/schemas/MessageMetricsJsonResource" + } + }, + "required": [ + "commonPaths", + "discriminators", + "platforms", + "resource" + ], + "type": "object" + }, + "MessageMetricsJsonDiscriminator": { + "anyOf": [ + { + "$ref": "#/components/schemas/MessageMetricsJsonPathDiscriminator" + }, + { + "$ref": "#/components/schemas/MessageMetricsJsonOneOfPathsDiscriminator" + } + ] + }, + "MessageMetricsJsonOneOfPathsDiscriminator": { + "additionalProperties": false, + "properties": { + "oneOfPaths": { + "items": { + "type": "string" + }, + "readOnly": true, + "type": "array" + } + }, + "required": [ + "oneOfPaths" + ], + "type": "object" + }, + "MessageMetricsJsonPath": { + "additionalProperties": false, + "properties": { + "additionalProperties": { + "const": true, + "type": "boolean" + }, + "contentTypes": { + "items": { + "type": "string" + }, + "readOnly": true, + "type": "array" + }, + "directions": { + "items": { + "$ref": "#/components/schemas/MessageMetricsDirection" + }, + "readOnly": true, + "type": "array" + }, + "expression": { + "type": "string" + }, + "itemTypes": { + "items": { + "type": "string" + }, + "readOnly": true, + "type": "array" + }, + "path": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "values": { + "items": { + "$ref": "#/components/schemas/MessageMetricsJsonPathValue" + }, + "readOnly": true, + "type": "array" + } + }, + "required": [ + "expression", + "path", + "required", + "type" + ], + "type": "object" + }, + "MessageMetricsJsonPathDiscriminator": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "readOnly": true, + "type": "array" + } + }, + "required": [ + "path", + "values" + ], + "type": "object" + }, + "MessageMetricsJsonPathValue": { + "type": [ + "boolean", + "number", + "string" + ] + }, + "MessageMetricsJsonResource": { + "additionalProperties": false, + "properties": { + "contractsVersion": { + "type": "string" + }, + "type": { + "const": "message", + "type": "string" + } + }, + "required": [ + "contractsVersion", + "type" + ], + "type": "object" + }, + "MessageMetricsPlatform": { + "enum": [ + "email", + "imessage", + "sms", + "telegram", + "voice", + "whatsapp", + "whatsapp_business" + ], + "type": "string" + }, + "MessageMetricsPlatformJsonPaths": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/components/schemas/MessageMetricsPlatform" + }, + "paths": { + "items": { + "$ref": "#/components/schemas/MessageMetricsJsonPath" + }, + "readOnly": true, + "type": "array" + } + }, + "required": [ + "name", + "paths" + ], + "type": "object" + }, + "MessageMetricsQueryColumn": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "MessageMetricsQueryStatistics": { + "additionalProperties": false, + "properties": { + "bytesRead": { + "minimum": 0, + "type": "number" + }, + "elapsedSeconds": { + "minimum": 0, + "type": "number" + }, + "rowsRead": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "bytesRead", + "elapsedSeconds", + "rowsRead" + ], + "type": "object" + }, + "MessageMetricsSqlCapabilities": { + "additionalProperties": false, + "properties": { + "arrayJoin": { + "type": "boolean" + }, + "ctes": { + "type": "boolean" + }, + "joins": { + "type": "boolean" + }, + "parameters": { + "type": "boolean" + }, + "selectWithoutFrom": { + "type": "boolean" + }, + "subqueries": { + "type": "boolean" + }, + "unions": { + "type": "boolean" + } + }, + "required": [ + "arrayJoin", + "ctes", + "joins", + "parameters", + "selectWithoutFrom", + "subqueries", + "unions" + ], + "type": "object" + }, + "MessageMetricsSqlColumn": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "json": { + "$ref": "#/components/schemas/MessageMetricsJsonCatalog" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "description", + "name", + "type" + ], + "type": "object" + }, + "MessageMetricsSqlLimits": { + "additionalProperties": false, + "properties": { + "maximumParameterValueBytes": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "maximumParameters": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "maximumSqlBytes": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "maximumTotalParameterBytes": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "maximumParameters", + "maximumParameterValueBytes", + "maximumSqlBytes", + "maximumTotalParameterBytes" + ], + "type": "object" + }, + "MessageMetricsSqlTable": { + "additionalProperties": false, + "properties": { + "columns": { + "items": { + "$ref": "#/components/schemas/MessageMetricsSqlColumn" + }, + "type": "array" + }, + "currentState": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "$ref": "#/components/schemas/MessageMetricsSqlTableName" + } + }, + "required": [ + "columns", + "currentState", + "description", + "name" + ], + "type": "object" + }, + "MessageMetricsSqlTableName": { + "enum": [ + "message_events" + ], + "type": "string" + }, + "MeteredUsage": { + "additionalProperties": false, + "properties": { + "amountCents": { + "description": "Cost accrued so far.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + }, + "categoryDisplayName": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Display name for the subscription category; absent or null when unconfigured." + }, + "currency": { + "description": "ISO currency code.", + "type": "string" + }, + "displayName": { + "description": "Display name for this usage item.", + "type": "string" + }, + "metricCode": { + "description": "Metered thing, e.g. imessage_message.", + "type": "string" + }, + "units": { + "description": "Units consumed this period.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "amountCents", + "category", + "currency", + "displayName", + "metricCode", + "units" + ], + "type": "object" + }, + "NotAuthenticatedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "NOT_AUTHENTICATED", + "status": 401, + "title": "Not Authenticated", + "type": "https://photon.codes/docs/problems/not-authenticated" + }, + "properties": { + "code": { + "const": "NOT_AUTHENTICATED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 401, + "type": "number" + }, + "title": { + "const": "Not Authenticated", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/not-authenticated", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "NumberCountry": { + "additionalProperties": false, + "properties": { + "callingCode": { + "pattern": "^\\+[1-9][0-9]{0,2}$", + "type": "string" + }, + "countryCode": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "displayName": { + "type": "string" + } + }, + "required": [ + "callingCode", + "countryCode", + "displayName" + ], + "type": "object" + }, + "Operation": { + "additionalProperties": false, + "properties": { + "cancellable": { + "type": "boolean" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "detail": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "endedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "error": { + "$ref": "#/components/schemas/OperationError" + }, + "operationId": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "resourceId": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "startedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/OperationState" + }, + "type": { + "$ref": "#/components/schemas/OperationType" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "cancellable", + "createdAt", + "operationId", + "projectId", + "resourceType", + "state", + "type", + "updatedAt" + ], + "type": "object" + }, + "OperationError": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "detail": { + "type": "string" + } + }, + "required": [ + "code", + "detail" + ], + "type": "object" + }, + "OperationNotCancellableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "OPERATION_NOT_CANCELLABLE", + "status": 409, + "title": "Operation Not Cancellable", + "type": "https://photon.codes/docs/problems/operation-not-cancellable" + }, + "properties": { + "code": { + "const": "OPERATION_NOT_CANCELLABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Operation Not Cancellable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/operation-not-cancellable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OperationNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "OPERATION_NOT_FOUND", + "status": 404, + "title": "Operation Not Found", + "type": "https://photon.codes/docs/problems/operation-not-found" + }, + "properties": { + "code": { + "const": "OPERATION_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Operation Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/operation-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OperationPage": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/components/schemas/Operation" + }, + "type": "array" + } + }, + "required": [ + "operations" + ], + "type": "object" + }, + "OperationState": { + "enum": [ + "pending", + "running", + "succeeded", + "failed", + "cancelled" + ], + "type": "string" + }, + "OperationType": { + "enum": [ + "resource.provision", + "resource.release", + "whatsapp.account.disconnect", + "sms.campaign.assign", + "sms.campaign.unassign" + ], + "type": "string" + }, + "OrganizationAuthenticationRedirect": { + "additionalProperties": false, + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "OrganizationAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "returnTo": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "returnTo" + ], + "type": "object" + }, + "OrganizationConnectionNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_CONNECTION_NOT_FOUND", + "status": 404, + "title": "Organization Connection Not Found", + "type": "https://photon.codes/docs/problems/organization-connection-not-found" + }, + "properties": { + "code": { + "const": "ORGANIZATION_CONNECTION_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Organization Connection Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-connection-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OrganizationConnectionStatus": { + "additionalProperties": {}, + "properties": { + "membership": { + "$ref": "#/components/schemas/OrganizationConnectionStatusMembership" + }, + "organization": { + "$ref": "#/components/schemas/OrganizationConnectionStatusOrganization" + }, + "organizationId": { + "type": "string" + }, + "synchronized": { + "type": "boolean" + } + }, + "required": [ + "organizationId", + "organization", + "membership", + "synchronized" + ], + "type": "object" + }, + "OrganizationConnectionStatusMembership": { + "additionalProperties": {}, + "properties": { + "errorCode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "retryAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "$ref": "#/components/schemas/OrganizationConnectionSyncStatus" + } + }, + "required": [ + "status", + "errorCode", + "retryAt" + ], + "type": "object" + }, + "OrganizationConnectionStatusOrganization": { + "additionalProperties": {}, + "properties": { + "errorCode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "$ref": "#/components/schemas/OrganizationConnectionSyncStatus" + } + }, + "required": [ + "status", + "errorCode" + ], + "type": "object" + }, + "OrganizationConnectionSyncStatus": { + "enum": [ + "pending", + "syncing", + "ready", + "error", + "blocked" + ], + "type": "string" + }, + "OrganizationEnterpriseLoginRequest": { + "additionalProperties": false, + "properties": { + "invitationToken": { + "pattern": "^[A-Za-z0-9_-]{43}$", + "type": "string" + }, + "organizationId": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "returnTo": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "organizationId", + "returnTo" + ], + "type": "object" + }, + "OrganizationInvoiceSubject": { + "additionalProperties": false, + "properties": { + "organizationId": { + "type": "string" + }, + "type": { + "const": "organization", + "type": "string" + } + }, + "required": [ + "organizationId", + "type" + ], + "type": "object" + }, + "OrganizationSsoConfiguration": { + "additionalProperties": {}, + "properties": { + "connectionChangedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "connectionGeneration": { + "pattern": "^(0|[1-9][0-9]{0,19})$", + "type": "string" + }, + "connectionState": { + "$ref": "#/components/schemas/OrganizationSsoConfigurationConnectionState" + }, + "connectionType": { + "type": "string" + }, + "desiredSsoEnforced": { + "type": "boolean" + }, + "domains": { + "items": { + "$ref": "#/components/schemas/OrganizationSsoDomain" + }, + "type": "array" + }, + "organizationId": { + "type": "string" + }, + "policySyncStatus": { + "$ref": "#/components/schemas/OrganizationSsoConfigurationPolicySyncStatus" + }, + "providerAvailable": { + "type": "boolean" + }, + "ssoEnforced": { + "type": "boolean" + }, + "ssoJitEnabled": { + "type": "boolean" + }, + "version": { + "pattern": "^(0|[1-9][0-9]{0,19})$", + "type": "string" + } + }, + "required": [ + "organizationId", + "connectionState", + "connectionGeneration", + "connectionChangedAt", + "version", + "ssoEnforced", + "desiredSsoEnforced", + "ssoJitEnabled", + "policySyncStatus" + ], + "type": "object" + }, + "OrganizationSsoConfigurationConnectionState": { + "enum": [ + "not_configured", + "configuring", + "ready", + "error" + ], + "type": "string" + }, + "OrganizationSsoConfigurationPolicySyncStatus": { + "enum": [ + "synced", + "manual_required" + ], + "type": "string" + }, + "OrganizationSsoConflictProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_SSO_CONFLICT", + "status": 409, + "title": "Organization SSO Conflict", + "type": "https://photon.codes/docs/problems/organization-sso-conflict" + }, + "properties": { + "code": { + "const": "ORGANIZATION_SSO_CONFLICT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Organization SSO Conflict", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-sso-conflict", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OrganizationSsoDomain": { + "additionalProperties": {}, + "properties": { + "domain": { + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/OrganizationSsoDomainState" + } + }, + "required": [ + "domain", + "state" + ], + "type": "object" + }, + "OrganizationSsoDomainState": { + "enum": [ + "verified", + "pending", + "failed" + ], + "type": "string" + }, + "OrganizationSsoNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_SSO_NOT_FOUND", + "status": 404, + "title": "Organization SSO Not Found", + "type": "https://photon.codes/docs/problems/organization-sso-not-found" + }, + "properties": { + "code": { + "const": "ORGANIZATION_SSO_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Organization SSO Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-sso-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OrganizationSsoPreconditionFailedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_SSO_PRECONDITION_FAILED", + "status": 412, + "title": "Organization SSO Precondition Failed", + "type": "https://photon.codes/docs/problems/organization-sso-precondition-failed" + }, + "properties": { + "code": { + "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 412, + "type": "number" + }, + "title": { + "const": "Organization SSO Precondition Failed", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OrganizationSsoRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_SSO_REQUIRED", + "status": 403, + "title": "Organization SSO Required", + "type": "https://photon.codes/docs/problems/organization-sso-required" + }, + "properties": { + "code": { + "const": "ORGANIZATION_SSO_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Organization SSO Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-sso-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "OrganizationSubscription": { + "additionalProperties": false, + "properties": { + "cancelsAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the subscription will end, ISO 8601." + }, + "currentPeriodEnd": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "End of the current billing period, ISO 8601." + }, + "entitlements": { + "items": { + "$ref": "#/components/schemas/OrganizationSubscriptionEntitlement" + }, + "type": "array" + }, + "fixedCharges": { + "description": "Fixed charges defined by the organization's current plan. Quantity is the plan default.", + "items": { + "$ref": "#/components/schemas/FixedCharge" + }, + "type": "array" + }, + "planCode": { + "description": "The organization's plan; display only.", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/SubscriptionStatus" + } + }, + "required": [ + "cancelsAt", + "currentPeriodEnd", + "entitlements", + "fixedCharges", + "planCode", + "status" + ], + "type": "object" + }, + "OrganizationSubscriptionEntitlement": { + "additionalProperties": false, + "properties": { + "featureKey": { + "description": "Feature gate key.", + "type": "string" + }, + "value": { + "description": "Gate value as a string.", + "type": "string" + } + }, + "required": [ + "featureKey", + "value" + ], + "type": "object" + }, + "OrganizationSyncUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "ORGANIZATION_SYNC_UNAVAILABLE", + "status": 409, + "title": "Organization Synchronization Unavailable", + "type": "https://photon.codes/docs/problems/organization-sync-unavailable" + }, + "properties": { + "code": { + "const": "ORGANIZATION_SYNC_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Organization Synchronization Unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/organization-sync-unavailable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "PayloadTooLargeProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "PAYLOAD_TOO_LARGE", + "status": 413, + "title": "Payload Too Large", + "type": "https://photon.codes/docs/problems/payload-too-large" + }, + "properties": { + "code": { + "const": "PAYLOAD_TOO_LARGE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 413, + "type": "number" + }, + "title": { + "const": "Payload Too Large", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/payload-too-large", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "PaymentMethod": { + "additionalProperties": false, + "properties": { + "brand": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Card network brand, e.g. visa." + }, + "expiresMonth": { + "anyOf": [ + { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Card expiration month." + }, + "expiresYear": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Four-digit card expiration year." + }, + "last4": { + "anyOf": [ + { + "pattern": "^\\d{4}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Last four card digits." + } + }, + "required": [ + "brand", + "expiresMonth", + "expiresYear", + "last4" + ], + "type": "object" + }, + "PaymentProviderNotReadyProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "PAYMENT_PROVIDER_NOT_READY", + "status": 503, + "title": "Payment Provider Not Ready", + "type": "https://photon.codes/docs/problems/payment-provider-not-ready" + }, + "properties": { + "code": { + "const": "PAYMENT_PROVIDER_NOT_READY", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Payment Provider Not Ready", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/payment-provider-not-ready", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "PendingBillingOperation": { + "additionalProperties": false, + "properties": { + "failure": { + "type": "null" + }, + "kind": { + "$ref": "#/components/schemas/BillingOperationKind" + }, + "operationId": { + "description": "Stable handle for this provisioning action.", + "type": "string" + }, + "resolvedAt": { + "type": "null" + }, + "result": { + "type": "null" + }, + "status": { + "const": "pending", + "description": "Accepted and still executing. Poll the operation route.", + "type": "string" + }, + "submittedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "failure", + "kind", + "operationId", + "submittedAt", + "resolvedAt", + "result", + "status" + ], + "type": "object" + }, + "PhoneVerificationCaptcha": { + "additionalProperties": false, + "properties": { + "challengeContext": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "token": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "challengeContext", + "token" + ], + "type": "object" + }, + "ProfilePictureContentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "ProfilePictureUpload": { + "additionalProperties": false, + "properties": { + "expiresAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "formFields": { + "$ref": "#/components/schemas/ProfilePictureUploadFormFields" + }, + "uploadId": { + "type": "string" + }, + "uploadUrl": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "expiresAt", + "formFields", + "uploadId", + "uploadUrl" + ], + "type": "object" + }, + "ProfilePictureUploadFormFields": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "ProfilePictureUploadRequest": { + "additionalProperties": false, + "properties": { + "contentType": { + "$ref": "#/components/schemas/ProfilePictureContentType" + } + }, + "required": [ + "contentType" + ], + "type": "object" + }, + "Project": { + "additionalProperties": false, + "properties": { + "agentProfile": { + "$ref": "#/components/schemas/AgentProfile" + }, + "billingInitialization": { + "$ref": "#/components/schemas/ProjectBillingInitialization" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "createdByAccountId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "createdByActorId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "createdByActorKind": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProjectCreatedByActorKind" + }, + { + "type": "null" + } + ] + }, + "deletedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "agentProfile", + "createdAt", + "createdByAccountId", + "createdByActorId", + "createdByActorKind", + "deletedAt", + "name", + "organizationId", + "projectId", + "slug", + "updatedAt" + ], + "type": "object" + }, + "ProjectApiKeyResponse": { + "additionalProperties": false, + "properties": { + "apiKey": { + "$ref": "#/components/schemas/ApiKey" + } + }, + "required": [ + "apiKey" + ], + "type": "object" + }, + "ProjectBillingInitialization": { + "enum": [ + "pending", + "retry_required", + "completed", + "unknown" + ], + "type": "string" + }, + "ProjectClosingProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "PROJECT_CLOSING", + "status": 409, + "title": "Project Is Closing", + "type": "https://photon.codes/docs/problems/project-closing" + }, + "properties": { + "code": { + "const": "PROJECT_CLOSING", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Project Is Closing", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/project-closing", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ProjectClosureDomain": { + "enum": [ + "projects", + "billing", + "platforms", + "call_registry" + ], + "type": "string" + }, + "ProjectClosureDomainStatus": { + "additionalProperties": {}, + "properties": { + "blockers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "domain": { + "$ref": "#/components/schemas/ProjectClosureDomain" + }, + "ready": { + "type": "boolean" + } + }, + "required": [ + "blockers", + "domain", + "ready" + ], + "type": "object" + }, + "ProjectCount": { + "additionalProperties": false, + "properties": { + "count": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "count" + ], + "type": "object" + }, + "ProjectCreatedByActorKind": { + "enum": [ + "account", + "service_identity" + ], + "type": "string" + }, + "ProjectDeletedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "PROJECT_DELETED", + "status": 410, + "title": "Project Deleted", + "type": "https://photon.codes/docs/problems/project-deleted" + }, + "properties": { + "code": { + "const": "PROJECT_DELETED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 410, + "type": "number" + }, + "title": { + "const": "Project Deleted", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/project-deleted", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ProjectInvoiceSubject": { + "additionalProperties": false, + "properties": { + "projectId": { + "type": "string" + }, + "type": { + "const": "project", + "type": "string" + } + }, + "required": [ + "projectId", + "type" + ], + "type": "object" + }, + "ProjectNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "PROJECT_NOT_FOUND", + "status": 404, + "title": "Project Not Found", + "type": "https://photon.codes/docs/problems/project-not-found" + }, + "properties": { + "code": { + "const": "PROJECT_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Project Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/project-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ProjectPage": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "type": "string" + }, + "projects": { + "items": { + "$ref": "#/components/schemas/Project" + }, + "type": "array" + } + }, + "required": [ + "projects" + ], + "type": "object" + }, + "ProjectPlatformSettings": { + "oneOf": [ + { + "$ref": "#/components/schemas/SharedProjectPlatformSettings" + }, + { + "$ref": "#/components/schemas/DedicatedProjectPlatformSettings" + } + ] + }, + "ProjectSubscription": { + "additionalProperties": false, + "properties": { + "cancelsAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the subscription will end instead of renewing, ISO 8601." + }, + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + }, + "categoryDisplayName": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Display name for the subscription category; absent or null when unconfigured." + }, + "currentPeriodEnd": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "End of the current billing period, ISO 8601." + }, + "entitlements": { + "description": "Feature gates granted by this category's plan.", + "items": { + "$ref": "#/components/schemas/ProjectSubscriptionEntitlement" + }, + "type": "array" + }, + "fixedCharges": { + "description": "Fixed charges defined by this category's current plan. Quantity is the plan default.", + "items": { + "$ref": "#/components/schemas/FixedCharge" + }, + "type": "array" + }, + "planCode": { + "description": "This category's plan; display only.", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/SubscriptionStatus" + } + }, + "required": [ + "cancelsAt", + "category", + "currentPeriodEnd", + "entitlements", + "fixedCharges", + "planCode", + "status" + ], + "type": "object" + }, + "ProjectSubscriptionEntitlement": { + "additionalProperties": false, + "properties": { + "featureKey": { + "description": "Feature gate key, e.g. imessage_shared_lines.max_user_assignments.", + "type": "string" + }, + "value": { + "description": "Gate value as a string.", + "type": "string" + } + }, + "required": [ + "featureKey", + "value" + ], + "type": "object" + }, + "ProvisionImessageDedicatedLineBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ProvisionImessageDedicatedLineForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ProvisionImessageDedicatedLineGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ProvisionImessageDedicatedLineInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ProvisionImessageDedicatedLineServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ProvisionImessageDedicatedLineUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ProvisionWhatsappDedicatedLineUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "PurchaseSmsNumberBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "PurchaseSmsNumberForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "PurchaseSmsNumberGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "PurchaseSmsNumberInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "PurchaseSmsNumberRequest": { + "additionalProperties": false, + "properties": { + "areaCode": { + "pattern": "^[2-9][0-9]{2}$", + "type": "string" + }, + "countryCode": { + "const": "US", + "type": "string" + } + }, + "required": [ + "countryCode" + ], + "type": "object" + }, + "PurchaseSmsNumberServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/BillingNotProvisionedProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "PurchaseSmsNumberUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "QueryConcurrencyLimitProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "QUERY_CONCURRENCY_LIMIT", + "status": 429, + "title": "Query Concurrency Limit", + "type": "https://photon.codes/docs/problems/query-concurrency-limit" + }, + "properties": { + "code": { + "const": "QUERY_CONCURRENCY_LIMIT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 429, + "type": "number" + }, + "title": { + "const": "Query Concurrency Limit", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/query-concurrency-limit", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "QueryMessageMetricsForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "QueryMessageMetricsGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "QueryMessageMetricsResponse": { + "additionalProperties": false, + "properties": { + "columns": { + "items": { + "$ref": "#/components/schemas/MessageMetricsQueryColumn" + }, + "type": "array" + }, + "rows": { + "items": { + "items": {}, + "type": "array" + }, + "type": "array" + }, + "statistics": { + "$ref": "#/components/schemas/MessageMetricsQueryStatistics" + } + }, + "required": [ + "columns", + "rows", + "statistics" + ], + "type": "object" + }, + "QueryMessageMetricsUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/QueryResourceLimitProblem" + }, + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "QueryResourceLimitProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "QUERY_RESOURCE_LIMIT", + "status": 422, + "title": "Query Resource Limit", + "type": "https://photon.codes/docs/problems/query-resource-limit" + }, + "properties": { + "code": { + "const": "QUERY_RESOURCE_LIMIT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 422, + "type": "number" + }, + "title": { + "const": "Query Resource Limit", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/query-resource-limit", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "RateLimitedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "RATE_LIMITED", + "status": 429, + "title": "Too Many Requests", + "type": "https://photon.codes/docs/problems/rate-limited" + }, + "properties": { + "code": { + "const": "RATE_LIMITED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 429, + "type": "number" + }, + "title": { + "const": "Too Many Requests", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/rate-limited", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "RedeemAppInstallationDeliveryGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "RedeemAppInstallationDeliveryRequest": { + "additionalProperties": false, + "properties": { + "appId": { + "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "clientAssertion": { + "maxLength": 16384, + "minLength": 1, + "type": "string" + }, + "code": { + "pattern": "^[A-Za-z0-9_-]{43}$", + "type": "string" + } + }, + "required": [ + "appId", + "clientAssertion", + "code" + ], + "type": "object" + }, + "RedeemAppInstallationDeliveryResponse": { + "oneOf": [ + { + "$ref": "#/components/schemas/CreatedAppInstallationDelivery" + }, + { + "$ref": "#/components/schemas/ExistingAppInstallationDelivery" + } + ] + }, + "RefreshOrganizationSsoConnectionBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "RefreshOrganizationSsoConnectionForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "RefreshOrganizationSsoConnectionGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "RefreshOrganizationSsoConnectionInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "RefreshOrganizationSsoConnectionPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "RefreshTokenGrantRequest": { + "properties": { + "grant_type": { + "const": "refresh_token", + "description": "Selects the refresh-token grant to obtain a new token pair.", + "type": "string" + }, + "refresh_token": { + "description": "Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "grant_type", + "refresh_token" + ], + "type": "object" + }, + "ReleaseImessageDedicatedLineForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReleaseImessageDedicatedLineGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReleaseImessageDedicatedLineInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReleaseResourceConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/WhatsappSenderConnectedProblem" + }, + { + "$ref": "#/components/schemas/WhatsappSenderProvisioningProblem" + } + ] + }, + "ReleaseResourceForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReleaseResourceGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReleaseResourceInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReleaseSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReleaseSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReleaseSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReleaseWhatsappDedicatedLineForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReleaseWhatsappDedicatedLineGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReleaseWhatsappDedicatedLineInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReleaseWhatsappSharedLineAssignmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReplaceVoiceProfileInboundConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + } + ] + }, + "ReplaceVoiceProfileInboundForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ReplaceVoiceProfileInboundGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ReplaceVoiceProfileInboundInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ReplaceVoiceProfileInboundRequest": { + "additionalProperties": false, + "properties": { + "credentials": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipInboundCredentialsWithPassword" + }, + { + "type": "null" + } + ] + }, + "destinationUri": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "credentials", + "destinationUri", + "expectedVersion" + ], + "type": "object" + }, + "RequestTimeoutProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "REQUEST_TIMEOUT", + "status": 504, + "title": "Request Timeout", + "type": "https://photon.codes/docs/problems/request-timeout" + }, + "properties": { + "code": { + "const": "REQUEST_TIMEOUT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 504, + "type": "number" + }, + "title": { + "const": "Request Timeout", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/request-timeout", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ResetAccountProfilePictureBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "ResetAccountProfilePictureForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ResetAccountProfilePictureGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ResetAccountProfilePictureInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ResetAccountProfilePictureUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + }, + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "ResetAgentProfileAvatarBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ResetAgentProfileAvatarForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ResetAgentProfileAvatarGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "ResetAgentProfileAvatarUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "Resource": { + "additionalProperties": false, + "properties": { + "abilities": { + "items": { + "type": "string" + }, + "type": "array" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "detail": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "projectId": { + "type": "string" + }, + "resourceId": { + "type": "string" + }, + "retiredAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/ResourceState" + }, + "type": { + "type": "string" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "abilities", + "createdAt", + "detail", + "projectId", + "resourceId", + "state", + "type", + "updatedAt" + ], + "type": "object" + }, + "ResourceMismatchProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "RESOURCE_MISMATCH", + "status": 403, + "title": "Resource Mismatch", + "type": "https://photon.codes/docs/problems/resource-mismatch" + }, + "properties": { + "code": { + "const": "RESOURCE_MISMATCH", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Resource Mismatch", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/resource-mismatch", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ResourceNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "RESOURCE_NOT_FOUND", + "status": 404, + "title": "Resource Not Found", + "type": "https://photon.codes/docs/problems/resource-not-found" + }, + "properties": { + "code": { + "const": "RESOURCE_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Resource Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/resource-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ResourcePage": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "type": "string" + }, + "resources": { + "items": { + "$ref": "#/components/schemas/Resource" + }, + "type": "array" + } + }, + "required": [ + "resources" + ], + "type": "object" + }, + "ResourceState": { + "enum": [ + "unallocated", + "active", + "retired" + ], + "type": "string" + }, + "ResumeSubscriptionBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "ResumeSubscriptionConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/FailedPreconditionProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyRequestInProgressProblem" + } + ] + }, + "ResumeSubscriptionForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "ResumeSubscriptionGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "ResumeSubscriptionInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "ResumeSubscriptionRequest": { + "additionalProperties": false, + "properties": { + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + } + }, + "required": [ + "category" + ], + "type": "object" + }, + "ResumeSubscriptionResponse": { + "additionalProperties": false, + "properties": { + "category": { + "description": "Category slug, e.g. analytics or messaging.", + "pattern": "^[a-z][a-z0-9_]{0,63}$", + "type": "string" + }, + "resumed": { + "description": "False when the subscription was not scheduled to cancel.", + "type": "boolean" + } + }, + "required": [ + "category", + "resumed" + ], + "type": "object" + }, + "ResumeSubscriptionServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyUnavailableProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "ResumeSubscriptionUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "RetryEnterpriseLoginRequest": { + "additionalProperties": false, + "properties": { + "retryToken": { + "pattern": "^enroll_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", + "type": "string" + } + }, + "required": [ + "retryToken" + ], + "type": "object" + }, + "RetryOrganizationConnectionSyncForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "RetryOrganizationConnectionSyncGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "RetryOrganizationConnectionSyncInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "RevokeAccountServiceKeyBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "RevokeAccountServiceKeyForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "RevokeAccountServiceKeyGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "RevokeAccountServiceKeyInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "RevokeAccountServiceKeyNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/AccountNotFoundProblem" + }, + { + "$ref": "#/components/schemas/AccountServiceKeyNotFoundProblem" + } + ] + }, + "RevokeAccountServiceKeyResponse": { + "additionalProperties": false, + "properties": { + "serviceKey": { + "$ref": "#/components/schemas/AccountServiceKey" + } + }, + "required": [ + "serviceKey" + ], + "type": "object" + }, + "RevokeAccountServiceKeyUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + }, + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "RevokeAuthorizedApplicationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "RevokeAuthorizedApplicationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "RevokeAuthorizedApplicationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "RevokeProjectApiKeyBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "RevokeProjectApiKeyForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "RevokeProjectApiKeyNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectNotFoundProblem" + }, + { + "$ref": "#/components/schemas/ApiKeyNotFoundProblem" + } + ] + }, + "RevokeProjectApiKeyUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundNotConfiguredProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "RotateVoiceProfileOutboundCredentialRequest": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "mode": { + "$ref": "#/components/schemas/VoiceOutboundCredentialRotationMode" + } + }, + "required": [ + "expectedVersion", + "mode" + ], + "type": "object" + }, + "RotateVoiceProfileOutboundCredentialResponse": { + "additionalProperties": false, + "properties": { + "password": { + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ] + }, + "previousPasswordValidUntil": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "password", + "previousPasswordValidUntil", + "profileVersion" + ], + "type": "object" + }, + "RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "RotateWebhookSigningSecretBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "RotateWebhookSigningSecretForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "RotateWebhookSigningSecretGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "RotateWebhookSigningSecretRequest": { + "additionalProperties": false, + "properties": { + "overlapSeconds": { + "default": 86400, + "maximum": 604800, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RotateWebhookSigningSecretResponse": { + "additionalProperties": false, + "properties": { + "previousSecretExpiresAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "signingSecret": { + "pattern": "^whsec_.*", + "type": "string" + } + }, + "required": [ + "previousSecretExpiresAt", + "signingSecret" + ], + "type": "object" + }, + "RotateWebhookSigningSecretUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "SelectableWebhookApiVersion": { + "additionalProperties": false, + "properties": { + "retirement": { + "anyOf": [ + { + "$ref": "#/components/schemas/WebhookApiVersionRetirement" + }, + { + "type": "null" + } + ] + }, + "selectable": { + "const": true, + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/SelectableWebhookApiVersionStatus" + }, + "successor": { + "anyOf": [ + { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "version": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + } + }, + "required": [ + "retirement", + "successor", + "selectable", + "status", + "version" + ], + "type": "object" + }, + "SelectableWebhookApiVersionStatus": { + "enum": [ + "preview", + "latest", + "maintain" + ], + "type": "string" + }, + "SelectableWebhookEventCatalog": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + "contractNamespace": { + "const": "@photon-hq/contracts", + "type": "string" + }, + "events": { + "items": { + "$ref": "#/components/schemas/WebhookEventType" + }, + "type": "array" + }, + "packageVersion": { + "minLength": 1, + "type": "string" + }, + "retirement": { + "anyOf": [ + { + "$ref": "#/components/schemas/WebhookApiVersionRetirement" + }, + { + "type": "null" + } + ] + }, + "selectable": { + "const": true, + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/SelectableWebhookApiVersionStatus" + }, + "successor": { + "anyOf": [ + { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "retirement", + "successor", + "selectable", + "status", + "contractNamespace", + "packageVersion", + "apiVersion", + "events" + ], + "type": "object" + }, + "SharedLineAssignment": { + "additionalProperties": false, + "properties": { + "assignedPhoneNumber": { + "type": "string" + }, + "assignmentId": { + "type": "string" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "email": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "handle": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "platform": { + "$ref": "#/components/schemas/SharedLineAssignmentPlatform" + }, + "projectId": { + "type": "string" + }, + "releasedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "assignedPhoneNumber", + "assignmentId", + "createdAt", + "handle", + "platform", + "projectId", + "updatedAt" + ], + "type": "object" + }, + "SharedLineAssignmentPage": { + "additionalProperties": false, + "properties": { + "assignments": { + "items": { + "$ref": "#/components/schemas/SharedLineAssignment" + }, + "type": "array" + }, + "nextPageToken": { + "type": "string" + } + }, + "required": [ + "assignments" + ], + "type": "object" + }, + "SharedLineAssignmentPlatform": { + "enum": [ + "imessage", + "whatsapp" + ], + "type": "string" + }, + "SharedLineCapExceededProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SHARED_LINE_CAP_EXCEEDED", + "status": 409, + "title": "Shared Line Cap Exceeded", + "type": "https://photon.codes/docs/problems/shared-line-cap-exceeded" + }, + "properties": { + "code": { + "const": "SHARED_LINE_CAP_EXCEEDED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Shared Line Cap Exceeded", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/shared-line-cap-exceeded", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SharedLinePoolExhaustedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SHARED_LINE_POOL_EXHAUSTED", + "status": 503, + "title": "Shared Line Pool Exhausted", + "type": "https://photon.codes/docs/problems/shared-line-pool-exhausted" + }, + "properties": { + "code": { + "const": "SHARED_LINE_POOL_EXHAUSTED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Shared Line Pool Exhausted", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/shared-line-pool-exhausted", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SharedProjectPlatformSettings": { + "additionalProperties": false, + "properties": { + "maxUserAssignments": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "mode": { + "const": "shared", + "type": "string" + } + }, + "required": [ + "maxUserAssignments", + "mode" + ], + "type": "object" + }, + "SipAuthenticationAlgorithm": { + "enum": [ + "sha-256", + "md5" + ], + "type": "string" + }, + "SipEndpoint": { + "additionalProperties": false, + "properties": { + "host": { + "type": "string" + }, + "port": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "transport": { + "$ref": "#/components/schemas/SipTransport" + } + }, + "required": [ + "host", + "port", + "transport" + ], + "type": "object" + }, + "SipInboundConfiguration": { + "additionalProperties": false, + "properties": { + "credentials": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipInboundCredentials" + }, + { + "type": "null" + } + ] + }, + "destinationUri": { + "type": "string" + } + }, + "required": [ + "credentials", + "destinationUri" + ], + "type": "object" + }, + "SipInboundCredentials": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "SipInboundCredentialsWithPassword": { + "additionalProperties": false, + "properties": { + "password": { + "minLength": 1, + "type": "string" + }, + "username": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "password", + "username" + ], + "type": "object" + }, + "SipOutboundAuthentication": { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/components/schemas/SipAuthenticationAlgorithm" + }, + "previousPasswordValidUntil": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "username": { + "type": "string" + }, + "validFrom": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "algorithm", + "previousPasswordValidUntil", + "username", + "validFrom" + ], + "type": "object" + }, + "SipOutboundAuthenticationPolicy": { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/components/schemas/SipAuthenticationAlgorithm" + } + }, + "required": [ + "algorithm" + ], + "type": "object" + }, + "SipOutboundConfiguration": { + "additionalProperties": false, + "properties": { + "authentication": { + "$ref": "#/components/schemas/SipOutboundAuthentication" + }, + "connection": { + "$ref": "#/components/schemas/SipOutboundConnection" + } + }, + "required": [ + "authentication", + "connection" + ], + "type": "object" + }, + "SipOutboundConnection": { + "additionalProperties": false, + "properties": { + "endpoints": { + "items": { + "$ref": "#/components/schemas/SipEndpoint" + }, + "minItems": 1, + "type": "array" + }, + "realm": { + "type": "string" + } + }, + "required": [ + "endpoints", + "realm" + ], + "type": "object" + }, + "SipTransport": { + "enum": [ + "udp", + "tcp", + "tls" + ], + "type": "string" + }, + "SlugTakenProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SLUG_TAKEN", + "status": 409, + "suggestion": "example-project-2", + "title": "Slug Already Taken", + "type": "https://photon.codes/docs/problems/slug-taken" + }, + "properties": { + "code": { + "const": "SLUG_TAKEN", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "suggestion": { + "type": "string" + }, + "title": { + "const": "Slug Already Taken", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/slug-taken", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignCapacityExceededProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_CAPACITY_EXCEEDED", + "status": 409, + "title": "Campaign number capacity exhausted", + "type": "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_CAPACITY_EXCEEDED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Campaign number capacity exhausted", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignContextUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_CONTEXT_UNAVAILABLE", + "status": 503, + "title": "Campaign context unavailable", + "type": "https://photon.codes/docs/problems/sms-campaign-context-unavailable" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_CONTEXT_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Campaign context unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignInvalidRequestProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_INVALID_REQUEST", + "status": 400, + "title": "Invalid SMS campaign request", + "type": "https://photon.codes/docs/problems/sms-campaign-invalid-request" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_INVALID_REQUEST", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 400, + "type": "number" + }, + "title": { + "const": "Invalid SMS campaign request", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-invalid-request", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignMutationInProgressProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_MUTATION_IN_PROGRESS", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "operationId": { + "type": "string" + }, + "operationUrl": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Assignment mutation in progress", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + "type": "string" + } + }, + "required": [ + "operationId", + "operationUrl", + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_NOT_FOUND", + "status": 404, + "title": "Campaign not found", + "type": "https://photon.codes/docs/problems/sms-campaign-not-found" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Campaign not found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignNotReadyProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_NOT_READY", + "status": 409, + "title": "Campaign not ready", + "type": "https://photon.codes/docs/problems/sms-campaign-not-ready" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_NOT_READY", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Campaign not ready", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-not-ready", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignOrganizationMismatchProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_ORGANIZATION_MISMATCH", + "status": 403, + "title": "Campaign belongs to another organization", + "type": "https://photon.codes/docs/problems/sms-campaign-organization-mismatch" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_ORGANIZATION_MISMATCH", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 403, + "type": "number" + }, + "title": { + "const": "Campaign belongs to another organization", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignReconciliationRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_RECONCILIATION_REQUIRED", + "status": 409, + "title": "Campaign reconciliation required", + "type": "https://photon.codes/docs/problems/sms-campaign-reconciliation-required" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_RECONCILIATION_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Campaign reconciliation required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsCampaignVersionConflictProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_CAMPAIGN_VERSION_CONFLICT", + "status": 409, + "title": "Assignment version conflict", + "type": "https://photon.codes/docs/problems/sms-campaign-version-conflict" + }, + "properties": { + "code": { + "const": "SMS_CAMPAIGN_VERSION_CONFLICT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Assignment version conflict", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-campaign-version-conflict", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsLineCampaign": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "organizationId": { + "type": "string" + } + }, + "required": [ + "id", + "organizationId" + ], + "type": "object" + }, + "SmsLineCampaignEligibility": { + "enum": [ + "eligible", + "blocked", + "unknown" + ], + "type": "string" + }, + "SmsLineNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_LINE_NOT_FOUND", + "status": 404, + "title": "SMS line not found", + "type": "https://photon.codes/docs/problems/sms-line-not-found" + }, + "properties": { + "code": { + "const": "SMS_LINE_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "SMS line not found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-line-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SmsLineUnsupportedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SMS_LINE_UNSUPPORTED", + "status": 409, + "title": "SMS line unsupported", + "type": "https://photon.codes/docs/problems/sms-line-unsupported" + }, + "properties": { + "code": { + "const": "SMS_LINE_UNSUPPORTED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "SMS line unsupported", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sms-line-unsupported", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "SortOrder": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "SsoSubscriptionRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "SSO_SUBSCRIPTION_REQUIRED", + "status": 412, + "title": "SSO Subscription Required", + "type": "https://photon.codes/docs/problems/sso-subscription-required" + }, + "properties": { + "code": { + "const": "SSO_SUBSCRIPTION_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 412, + "type": "number" + }, + "title": { + "const": "SSO Subscription Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/sso-subscription-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "StartAccountPhoneVerificationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/CaptchaRequiredProblem" + }, + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "StartAccountPhoneVerificationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "StartAccountPhoneVerificationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "StartAccountPhoneVerificationRequest": { + "additionalProperties": false, + "properties": { + "captcha": { + "$ref": "#/components/schemas/PhoneVerificationCaptcha" + }, + "phoneNumber": { + "pattern": "^[+\\d][\\d\\s().-]{6,24}$", + "type": "string" + } + }, + "required": [ + "phoneNumber" + ], + "type": "object" + }, + "StartAccountPhoneVerificationResponse": { + "additionalProperties": false, + "properties": { + "channel": { + "const": "sms", + "type": "string" }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "HTTP_ERROR", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Request Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/http-error", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "HTTP_ERROR: Request Failed; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "expiresAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } + "resendAvailableAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "channel", + "expiresAt", + "resendAvailableAt" + ], + "type": "object" + }, + "StartEnterpriseLoginRequest": { + "anyOf": [ + { + "$ref": "#/components/schemas/OrganizationEnterpriseLoginRequest" }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/InvitationEnterpriseLoginRequest" }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/RetryEnterpriseLoginRequest" + } + ] + }, + "StartEnterpriseLoginResponse": { + "additionalProperties": {}, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "SubscriptionStatus": { + "description": "State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.", + "enum": [ + "active", + "past_due", + "terminated" + ], + "type": "string", + "x-enumDescriptions": { + "active": "Subscribed and in good standing, on a free or a paid plan.", + "past_due": "The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.", + "terminated": "The subscription is gone. Not reported by the overview, which omits categories holding nothing." + } + }, + "SucceededBillingOperation": { + "additionalProperties": false, + "properties": { + "failure": { + "type": "null" + }, + "kind": { + "$ref": "#/components/schemas/BillingOperationKind" + }, + "operationId": { + "description": "Stable handle for this provisioning action.", + "type": "string" + }, + "resolvedAt": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "410": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ACCOUNT_DELETED: Account Deleted", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "result": { + "$ref": "#/components/schemas/BillingOperationResult" + }, + "status": { + "const": "succeeded", + "description": "Terminal. The result is authoritative.", + "type": "string" + }, + "submittedAt": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + } + }, + "required": [ + "failure", + "kind", + "operationId", + "submittedAt", + "resolvedAt", + "result", + "status" + ], + "type": "object" + }, + "SupportedPlatform": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "description", + "displayName", + "type" + ], + "type": "object" + }, + "TelegramProjectDeletedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "TELEGRAM_PROJECT_DELETED", + "status": 409, + "title": "Telegram Project Deleted", + "type": "https://photon.codes/docs/problems/telegram-project-deleted" + }, + "properties": { + "code": { + "const": "TELEGRAM_PROJECT_DELETED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Telegram Project Deleted", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/telegram-project-deleted", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "TelegramProvisionInProgressProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "TELEGRAM_PROVISION_IN_PROGRESS", + "operationId": "pho_opr_00000000000000000000000001", + "operationUrl": "/v1/projects/pho_prj_00000000000000000000000001/platforms/operations/pho_opr_00000000000000000000000001", + "status": 409, + "title": "Telegram Provision In Progress", + "type": "https://photon.codes/docs/problems/telegram-provision-in-progress" + }, + "properties": { + "code": { + "const": "TELEGRAM_PROVISION_IN_PROGRESS", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "operationId": { + "type": "string" + }, + "operationUrl": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Telegram Provision In Progress", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/telegram-provision-in-progress", + "type": "string" + } + }, + "required": [ + "operationId", + "operationUrl", + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "TerminalBillingOperation": { + "oneOf": [ + { + "$ref": "#/components/schemas/SucceededBillingOperation" + }, + { + "$ref": "#/components/schemas/FailedBillingOperation" + } + ] + }, + "TimestampOrderBy": { + "enum": [ + "created_at", + "updated_at" + ], + "type": "string" + }, + "UnassignSmsLineCampaignBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignInvalidRequestProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "UnassignSmsLineCampaignConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/SmsLineUnsupportedProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignNotReadyProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignCapacityExceededProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignReconciliationRequiredProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignMutationInProgressProblem" + } + ] + }, + "UnassignSmsLineCampaignForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + }, + { + "$ref": "#/components/schemas/SmsCampaignOrganizationMismatchProblem" + } + ] + }, + "UnassignSmsLineCampaignGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UnassignSmsLineCampaignInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UnassignSmsLineCampaignNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignNotFoundProblem" + }, + { + "$ref": "#/components/schemas/SmsLineNotFoundProblem" + } + ] + }, + "UnassignSmsLineCampaignServiceUnavailableProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/SmsCampaignContextUnavailableProblem" + }, + { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + ] + }, + "UnassignVoiceLineProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UnassignVoiceLineProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UnassignVoiceLineProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UnavailableProjectSlug": { + "additionalProperties": false, + "properties": { + "available": { + "const": false, + "type": "boolean" + }, + "reason": { + "$ref": "#/components/schemas/UnavailableProjectSlugReason" + }, + "slug": { + "type": "string" + }, + "suggestion": { + "type": "string" + } + }, + "required": [ + "available", + "reason", + "slug" + ], + "type": "object" + }, + "UnavailableProjectSlugReason": { + "enum": [ + "reserved", + "retired", + "taken", + "too_short" + ], + "type": "string" + }, + "UpdateAccountBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/HttpErrorProblem" }, - "413": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/InvalidArgumentProblem" }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] - } - } - }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + } + ] + }, + "UpdateAccountForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/InsufficientScopeProblem" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateAccountGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "UpdateAccountInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UpdateAccountRequest": { + "additionalProperties": false, + "properties": { + "firstName": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "lastName": { + "anyOf": [ + { + "maxLength": 256, + "minLength": 1, + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + } + }, + "type": "object" + }, + "UpdateAccountUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + ] + }, + "UpdateAgentProfileBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "UpdateAgentProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateAgentProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "UpdateAgentProfileRequest": { + "additionalProperties": false, + "properties": { + "firstName": { + "minLength": 1, + "type": "string" + }, + "lastName": { + "anyOf": [ + { + "minLength": 1, + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + } + }, + "type": "object" + }, + "UpdateAgentProfileUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "UpdateDefaultVoiceProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileDirectionConfiguredProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + } + ] + }, + "UpdateDefaultVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateDefaultVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UpdateDefaultVoiceProfileInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UpdateDefaultVoiceProfileRequest": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "mediaEncryption": { + "$ref": "#/components/schemas/VoiceProfileMediaEncryption" + }, + "protocol": { + "const": "sip", + "type": "string" + } + }, + "required": [ + "expectedVersion" + ], + "type": "object" + }, + "UpdateOrganizationSsoPolicyBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InvalidReturnToProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "UpdateOrganizationSsoPolicyForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + } + ] + }, + "UpdateOrganizationSsoPolicyGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "UpdateOrganizationSsoPolicyInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UpdateOrganizationSsoPolicyPreconditionFailedProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrganizationSsoPreconditionFailedProblem" + }, + { + "$ref": "#/components/schemas/SsoSubscriptionRequiredProblem" + } + ] + }, + "UpdateOrganizationSsoPolicyRequest": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "pattern": "^(0|[1-9][0-9]{0,19})$", + "type": "string" + }, + "ssoJitEnabled": { + "type": "boolean" } }, - "security": [ + "required": [ + "expectedVersion", + "ssoJitEnabled" + ], + "type": "object" + }, + "UpdateProjectApiKeyBadRequestProblem": { + "oneOf": [ { - "accountServiceKey": [] + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" }, { - "oauth2": [ - "account:write" - ] + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" } - ], - "summary": "Update the authenticated account", - "tags": [ - "Account" - ], - "x-required-permissions": [ - "account:write" - ], - "description": "Updates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header." - } - }, - "/v1/account/oauth/authorized-applications": { - "get": { - "description": "Lists the OAuth applications authorized by the authenticated user.", - "operationId": "listAuthorizedApplications", - "parameters": [ + ] + }, + "UpdateProjectApiKeyForbiddenProblem": { + "oneOf": [ { - "description": "Pagination cursor from listMetadata.after for the next page. Cannot be combined with before.", - "in": "query", - "name": "after", - "schema": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } + "$ref": "#/components/schemas/ForbiddenProblem" }, { - "description": "Pagination cursor from listMetadata.before for the previous page. Cannot be combined with after.", - "in": "query", - "name": "before", - "schema": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } + "$ref": "#/components/schemas/InsufficientScopeProblem" }, { - "description": "Maximum number of authorized applications to return, from 1 to 100. Omit to use the default page size.", - "in": "query", - "name": "limit", - "schema": { - "maximum": 100, - "minimum": 1, - "type": "integer" - } + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" }, { - "description": "Result ordering: normal, descending (desc), or ascending (asc). Omit to use the default order.", - "in": "query", - "name": "order", - "schema": { - "enum": [ - "normal", - "desc", - "asc" - ], - "type": "string" - } + "$ref": "#/components/schemas/ResourceMismatchProblem" } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "properties": { - "authorizedApplications": { - "description": "One page of applications authorized by the authenticated user.", - "items": { - "properties": { - "application": { - "description": "The OAuth application authorized by the authenticated user.", - "properties": { - "applicationType": { - "description": "OAuth application type reported by the authorization server.", - "type": "string" - }, - "clientId": { - "description": "OAuth client identifier used by the application in authorization requests.", - "type": "string" - }, - "createdAt": { - "description": "UTC timestamp when the application was created, in RFC 3339 format.", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Application description, or null when no description is set." - }, - "id": { - "description": "Application identifier to pass as applicationId when revoking this application's grant.", - "type": "string" - }, - "isFirstParty": { - "description": "Whether the application is classified as first-party by the authorization server.", - "type": "boolean" - }, - "name": { - "description": "Display name of the authorized application.", - "type": "string" - }, - "redirectUris": { - "description": "Registered OAuth callback URLs for the application.", - "items": { - "properties": { - "default": { - "description": "Whether this is the application's default redirect URI.", - "type": "boolean" - }, - "uri": { - "description": "Registered OAuth callback URL for the application.", - "type": "string" - } - }, - "required": [ - "default", - "uri" - ], - "type": "object" - }, - "type": "array" - }, - "scopes": { - "description": "OAuth scope slugs configured for the application; grantedScopes records what the user authorized.", - "items": { - "description": "OAuth scope slug.", - "type": "string" - }, - "type": "array" - }, - "updatedAt": { - "description": "UTC timestamp when the application was last updated, in RFC 3339 format.", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "usesPkce": { - "description": "Whether the application uses Proof Key for Code Exchange (PKCE).", - "type": "boolean" - } - }, - "required": [ - "applicationType", - "clientId", - "createdAt", - "description", - "id", - "isFirstParty", - "name", - "redirectUris", - "scopes", - "updatedAt", - "usesPkce" - ], - "type": "object" - }, - "authorizationId": { - "description": "Identifier of the user's authorization grant for this application.", - "type": "string" - }, - "grantedScopes": { - "description": "OAuth scope slugs the user has granted to this application.", - "items": { - "description": "Granted OAuth scope slug.", - "type": "string" - }, - "type": "array" - }, - "oauthResource": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "OAuth resource associated with the grant, or null when no resource is specified." - } - }, - "required": [ - "application", - "authorizationId", - "grantedScopes", - "oauthResource" - ], - "type": "object" - }, - "type": "array" - }, - "listMetadata": { - "description": "Pagination cursors to pass as after or before in the next list request.", - "properties": { - "after": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Cursor for the next page, or null when there is no next page." - }, - "before": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Cursor for the previous page, or null when there is no previous page." - } - }, - "required": [ - "after", - "before" - ], - "type": "object" - } - }, - "required": [ - "authorizedApplications", - "listMetadata" - ], - "type": "object" - } - } - }, - "description": "OAuth applications authorized by the authenticated user.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + ] + }, + "UpdateProjectApiKeyNotFoundProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectNotFoundProblem" }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } + { + "$ref": "#/components/schemas/ApiKeyNotFoundProblem" + } + ] + }, + "UpdateProjectApiKeyRequest": { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/components/schemas/ApiKeyPermission" }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } + "minItems": 1, + "type": "array" + } + }, + "required": [ + "permissions" + ], + "type": "object" + }, + "UpdateProjectApiKeyUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "UpdateProjectBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - } - }, - "description": "VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + } + ] + }, + "UpdateProjectForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/InsufficientScopeProblem" }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateProjectGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "UpdateProjectRequest": { + "additionalProperties": false, + "properties": { + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "UpdateProjectUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "UpdateVoiceProfileConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "$ref": "#/components/schemas/VoiceProfileDirectionConfiguredProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + } + ] + }, + "UpdateVoiceProfileForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateVoiceProfileGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UpdateVoiceProfileInboundConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + } + ] + }, + "UpdateVoiceProfileInboundForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateVoiceProfileInboundGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UpdateVoiceProfileInboundInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UpdateVoiceProfileInboundRequest": { + "additionalProperties": false, + "properties": { + "credentials": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipInboundCredentialsWithPassword" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + }, + "destinationUri": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" } }, - "security": [ + "required": [ + "expectedVersion" + ], + "type": "object" + }, + "UpdateVoiceProfileInternalServerErrorProblem": { + "oneOf": [ { - "accountServiceKey": [] + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" } - ], - "summary": "List connected applications", - "tags": [ - "Connected Applications" ] - } - }, - "/v1/account/oauth/authorized-applications/{applicationId}": { - "delete": { - "description": "Revokes the authenticated user's grant for one OAuth application.", - "operationId": "revokeAuthorizedApplication", - "parameters": [ + }, + "UpdateVoiceProfileOutboundAuthenticationConflictProblem": { + "oneOf": [ { - "description": "Authorized application's id, prefixed with connect_app_. Use application.id from the list response, not its clientId or authorizationId.", - "in": "path", - "name": "applicationId", - "required": true, - "schema": { - "maxLength": 128, - "pattern": "^connect_app_[A-Za-z0-9]+$", - "type": "string" - } + "$ref": "#/components/schemas/ProjectClosingProblem" + }, + { + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundOperationPendingProblem" + }, + { + "$ref": "#/components/schemas/VoiceOutboundNotConfiguredProblem" + } + ] + }, + "UpdateVoiceProfileOutboundAuthenticationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" } + ] + }, + "UpdateVoiceProfileOutboundAuthenticationRequest": { + "additionalProperties": false, + "properties": { + "authentication": { + "$ref": "#/components/schemas/SipOutboundAuthenticationPolicy" + }, + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "authentication", + "expectedVersion" ], - "responses": { - "204": { - "description": "OAuth application grant revoked.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "object" + }, + "UpdateVoiceProfileOutboundAuthenticationResponse": { + "additionalProperties": false, + "properties": { + "outbound": { + "$ref": "#/components/schemas/SipOutboundConfiguration" }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "outbound", + "profileVersion" + ], + "type": "object" + }, + "UpdateVoiceProfileRequest": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "mediaEncryption": { + "$ref": "#/components/schemas/VoiceProfileMediaEncryption" + }, + "name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "protocol": { + "const": "sip", + "type": "string" + } + }, + "required": [ + "expectedVersion" + ], + "type": "object" + }, + "UpdateWebhookDestinationBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/IdempotencyKeyRequiredProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyInvalidProblem" + }, + { + "$ref": "#/components/schemas/InvalidArgumentProblem" + } + ] + }, + "UpdateWebhookDestinationForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UpdateWebhookDestinationGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + }, + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + } + ] + }, + "UpdateWebhookDestinationRequest": { + "additionalProperties": false, + "minProperties": 1, + "properties": { + "description": { + "anyOf": [ + { + "maxLength": 1000, + "type": "string" }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" } - } + ] }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "enabledEvents": { + "$ref": "#/components/schemas/WebhookEventSelection" + }, + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/WebhookDestinationStatus" + }, + "url": { + "description": "HTTPS URL without credentials or a fragment.", + "format": "uri", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "UpdateWebhookDestinationUnprocessableEntityProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ValidationFailedProblem" + }, + { + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" + } + ] + }, + "UploadAttachmentBadRequestProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/HttpErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAttachmentRequestProblem" + } + ] + }, + "UploadAttachmentConflictProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/AttachmentConflictProblem" + }, + { + "$ref": "#/components/schemas/AttachmentUploadNotReadyProblem" + } + ] + }, + "UploadAttachmentForbiddenProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ForbiddenProblem" + }, + { + "$ref": "#/components/schemas/InsufficientScopeProblem" + }, + { + "$ref": "#/components/schemas/OrganizationSsoRequiredProblem" + }, + { + "$ref": "#/components/schemas/ResourceMismatchProblem" + } + ] + }, + "UploadAttachmentGatewayTimeoutProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpstreamTimeoutProblem" + }, + { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + ] + }, + "UploadAttachmentInternalServerErrorProblem": { + "oneOf": [ + { + "$ref": "#/components/schemas/InternalErrorProblem" + }, + { + "$ref": "#/components/schemas/InvalidAuthContextProblem" + } + ] + }, + "UpstreamFailureProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "UPSTREAM_FAILURE", + "status": 502, + "title": "Upstream Service Failure", + "type": "https://photon.codes/docs/problems/upstream-failure" + }, + "properties": { + "code": { + "const": "UPSTREAM_FAILURE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 502, + "type": "number" + }, + "title": { + "const": "Upstream Service Failure", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/upstream-failure", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "UpstreamTimeoutProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "UPSTREAM_TIMEOUT", + "status": 504, + "title": "Upstream Service Timeout", + "type": "https://photon.codes/docs/problems/upstream-timeout" + }, + "properties": { + "code": { + "const": "UPSTREAM_TIMEOUT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 504, + "type": "number" + }, + "title": { + "const": "Upstream Service Timeout", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/upstream-timeout", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "UpstreamUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "UPSTREAM_UNAVAILABLE", + "status": 503, + "title": "Upstream Service Unavailable", + "type": "https://photon.codes/docs/problems/upstream-unavailable" + }, + "properties": { + "code": { + "const": "UPSTREAM_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 503, + "type": "number" + }, + "title": { + "const": "Upstream Service Unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/upstream-unavailable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "UsageCharge": { + "additionalProperties": false, + "properties": { + "chargeCode": { + "anyOf": [ + { + "type": "string" }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" } - } + ] }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } + "chargeModel": { + "$ref": "#/components/schemas/UsageChargeModel" + }, + "displayName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } + ] + }, + "filters": { + "items": { + "$ref": "#/components/schemas/UsageChargeFilter" }, - "description": "VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "type": "array" + }, + "invoiceable": { + "type": "boolean" + }, + "metricCode": { + "type": "string" + }, + "minimumAmountCents": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "payInAdvance": { + "type": "boolean" + }, + "pricing": { + "$ref": "#/components/schemas/UsageChargePricing" + }, + "prorated": { + "type": "boolean" + } + }, + "required": [ + "chargeCode", + "chargeModel", + "displayName", + "filters", + "invoiceable", + "metricCode", + "minimumAmountCents", + "payInAdvance", + "pricing", + "prorated" + ], + "type": "object" + }, + "UsageChargeFilter": { + "additionalProperties": false, + "properties": { + "displayName": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } + "pricing": { + "$ref": "#/components/schemas/UsageChargePricing" + }, + "values": { + "items": { + "$ref": "#/components/schemas/UsageChargeFilterValue" }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "type": "array" + } + }, + "required": [ + "displayName", + "pricing", + "values" + ], + "type": "object" + }, + "UsageChargeFilterValue": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "key", + "values" + ], + "type": "object" + }, + "UsageChargeModel": { + "enum": [ + "dynamic", + "graduated", + "graduated_percentage", + "package", + "percentage", + "standard", + "volume" + ], + "type": "string" + }, + "UsageChargePricing": { + "additionalProperties": false, + "properties": { + "amount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "fixedAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "freeUnits": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "freeUnitsPerEvents": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "freeUnitsPerTotalAggregation": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + { + "type": "null" + } + ] + }, + "packageSize": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "perTransactionMaxAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } + "perTransactionMinAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" + }, + { + "type": "null" } + ] + }, + "pricingGroupKeys": { + "items": { + "type": "string" }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "type": "array" + }, + "rate": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "tiers": { + "items": { + "$ref": "#/components/schemas/UsageChargeTier" + }, + "type": "array" + } + }, + "required": [ + "amount", + "fixedAmount", + "freeUnits", + "freeUnitsPerEvents", + "freeUnitsPerTotalAggregation", + "packageSize", + "perTransactionMaxAmount", + "perTransactionMinAmount", + "pricingGroupKeys", + "rate", + "tiers" + ], + "type": "object" + }, + "UsageChargeTier": { + "additionalProperties": false, + "properties": { + "flatAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "fromUnit": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "perUnitAmount": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + { + "type": "null" + } + ] + }, + "rate": { + "anyOf": [ + { + "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", + "pattern": "^\\d+(?:\\.\\d+)?$", + "type": "string" }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + { + "type": "null" + } + ] + }, + "toUnit": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + } + }, + "required": [ + "flatAmount", + "fromUnit", + "perUnitAmount", + "rate", + "toUnit" + ], + "type": "object" + }, + "ValidationFailedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VALIDATION_FAILED", + "issues": [ + { + "code": "invalid_type", + "location": "json", + "message": "Expected a string.", + "path": "/name" + } + ], + "status": 422, + "title": "Request Validation Failed", + "type": "https://photon.codes/docs/problems/validation-failed" + }, + "properties": { + "code": { + "const": "VALIDATION_FAILED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "issues": { + "items": { + "$ref": "#/components/schemas/ValidationIssue" + }, + "type": "array" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 422, + "type": "number" + }, + "title": { + "const": "Request Validation Failed", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/validation-failed", + "type": "string" + } + }, + "required": [ + "issues", + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "ValidationIssue": { + "additionalProperties": false, + "properties": { + "code": { + "minLength": 1, + "type": "string" + }, + "location": { + "$ref": "#/components/schemas/ValidationLocation" + }, + "message": { + "minLength": 1, + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": [ + "code", + "location", + "message", + "path" + ], + "type": "object" + }, + "ValidationLocation": { + "enum": [ + "body", + "cookie", + "form", + "header", + "json", + "param", + "query" + ], + "type": "string" + }, + "VoiceDefaultProfileAssignmentForbiddenProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN", + "status": 409, + "title": "Voice Default Profile Assignment Forbidden", + "type": "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden" + }, + "properties": { + "code": { + "const": "VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Default Profile Assignment Forbidden", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceDefaultProfileDeletionForbiddenProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN", + "status": 409, + "title": "Voice Default Profile Deletion Forbidden", + "type": "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden" + }, + "properties": { + "code": { + "const": "VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Default Profile Deletion Forbidden", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceDefaultProfileExistsProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_DEFAULT_PROFILE_EXISTS", + "status": 409, + "title": "Voice Default Profile Exists", + "type": "https://photon.codes/docs/problems/voice-default-profile-exists" + }, + "properties": { + "code": { + "const": "VOICE_DEFAULT_PROFILE_EXISTS", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Default Profile Exists", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-default-profile-exists", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceDefaultProfileRequiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_DEFAULT_PROFILE_REQUIRED", + "status": 409, + "title": "Voice Default Profile Required", + "type": "https://photon.codes/docs/problems/voice-default-profile-required" + }, + "properties": { + "code": { + "const": "VOICE_DEFAULT_PROFILE_REQUIRED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Default Profile Required", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-default-profile-required", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceLineProfileAssignment": { + "additionalProperties": false, + "properties": { + "profileId": { + "type": "string" + }, + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "projectId": { + "type": "string" + }, + "resourceId": { + "type": "string" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "resourceVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "projectId", + "resourceId", + "resourceVersion", + "updatedAt" + ], + "type": "object" + }, + "VoiceLineProfileAssignmentUpdate": { + "additionalProperties": false, + "properties": { + "expectedVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "profileId": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + }, + "resourceId": { + "type": "string" } }, - "security": [ - { - "accountServiceKey": [] + "required": [ + "expectedVersion", + "profileId", + "resourceId" + ], + "type": "object" + }, + "VoiceOutboundConfiguredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_OUTBOUND_CONFIGURED", + "status": 409, + "title": "Voice Outbound Already Configured", + "type": "https://photon.codes/docs/problems/voice-outbound-configured" + }, + "properties": { + "code": { + "const": "VOICE_OUTBOUND_CONFIGURED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Outbound Already Configured", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-outbound-configured", + "type": "string" } + }, + "required": [ + "code", + "status", + "title", + "type" ], - "summary": "Revoke a connected application", - "tags": [ - "Connected Applications" - ] - } - }, - "/v1/account/phone": { - "put": { - "description": "Binds the number once the code is approved. Repeat calls return the bound Account.", - "operationId": "confirmAccountPhoneVerification", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "pattern": "^\\d{6}$", - "type": "string" - }, - "phoneNumber": { - "pattern": "^[+\\d][\\d\\s().-]{6,24}$", - "type": "string" - } - }, - "required": [ - "code", - "phoneNumber" - ], - "type": "object" - } - } + "type": "object" + }, + "VoiceOutboundCredentialRotationMode": { + "enum": [ + "normal", + "emergency" + ], + "type": "string" + }, + "VoiceOutboundNotConfiguredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_OUTBOUND_NOT_CONFIGURED", + "status": 409, + "title": "Voice Outbound Not Configured", + "type": "https://photon.codes/docs/problems/voice-outbound-not-configured" + }, + "properties": { + "code": { + "const": "VOICE_OUTBOUND_NOT_CONFIGURED", + "type": "string" }, - "required": true + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Outbound Not Configured", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-outbound-not-configured", + "type": "string" + } }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The Account with its verified phone number.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceOutboundOperationPendingProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_OUTBOUND_OPERATION_PENDING", + "status": 409, + "title": "Voice Outbound Operation Pending", + "type": "https://photon.codes/docs/problems/voice-outbound-operation-pending" + }, + "properties": { + "code": { + "const": "VOICE_OUTBOUND_OPERATION_PENDING", + "type": "string" }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "INVALID_ARGUMENT: Invalid Argument", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Outbound Operation Pending", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceProfile": { + "additionalProperties": false, + "properties": { + "configuration": { + "$ref": "#/components/schemas/VoiceProfileConfiguration" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "lineCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "mediaEncryption": { + "$ref": "#/components/schemas/VoiceProfileMediaEncryption" + }, + "name": { + "type": "string" + }, + "profileId": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "protocol": { + "const": "sip", + "type": "string" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "version": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "configuration", + "createdAt", + "isDefault", + "lineCount", + "mediaEncryption", + "name", + "profileId", + "projectId", + "protocol", + "updatedAt", + "version" + ], + "type": "object" + }, + "VoiceProfileConfiguration": { + "additionalProperties": false, + "properties": { + "inbound": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipInboundConfiguration" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "outbound": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipOutboundConfiguration" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + { + "type": "null" } - } + ] + } + }, + "required": [ + "inbound", + "outbound" + ], + "type": "object" + }, + "VoiceProfileDirectionConfiguredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_PROFILE_DIRECTION_CONFIGURED", + "status": 409, + "title": "Voice Profile Direction Configured", + "type": "https://photon.codes/docs/problems/voice-profile-direction-configured" + }, + "properties": { + "code": { + "const": "VOICE_PROFILE_DIRECTION_CONFIGURED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Profile Direction Configured", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-profile-direction-configured", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceProfileInUseProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_PROFILE_IN_USE", + "status": 409, + "title": "Voice Profile In Use", + "type": "https://photon.codes/docs/problems/voice-profile-in-use" + }, + "properties": { + "code": { + "const": "VOICE_PROFILE_IN_USE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Profile In Use", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-profile-in-use", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceProfileInboundConfiguration": { + "additionalProperties": false, + "properties": { + "inbound": { + "anyOf": [ + { + "$ref": "#/components/schemas/SipInboundConfiguration" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "profileVersion": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "inbound", + "profileVersion" + ], + "type": "object" + }, + "VoiceProfileMediaEncryption": { + "enum": [ + "auto", + "srtp" + ], + "type": "string" + }, + "VoiceProfileNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_PROFILE_NOT_FOUND", + "status": 404, + "title": "Voice Profile Not Found", + "type": "https://photon.codes/docs/problems/voice-profile-not-found" + }, + "properties": { + "code": { + "const": "VOICE_PROFILE_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Voice Profile Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-profile-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "VoiceProfilePage": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "type": "string" + }, + "profiles": { + "items": { + "$ref": "#/components/schemas/VoiceProfile" }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "type": "array" + } + }, + "required": [ + "profiles" + ], + "type": "object" + }, + "VoiceProfileVersionConflictProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "VOICE_PROFILE_VERSION_CONFLICT", + "status": 409, + "title": "Voice Profile Version Conflict", + "type": "https://photon.codes/docs/problems/voice-profile-version-conflict" + }, + "properties": { + "code": { + "const": "VOICE_PROFILE_VERSION_CONFLICT", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "Voice Profile Version Conflict", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WebhookApiVersion": { + "oneOf": [ + { + "$ref": "#/components/schemas/SelectableWebhookApiVersion" + }, + { + "$ref": "#/components/schemas/DeprecatedWebhookApiVersion" + } + ] + }, + "WebhookApiVersionRetirement": { + "additionalProperties": false, + "properties": { + "migrationGuide": { + "minLength": 1, + "type": "string" + }, + "reason": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "migrationGuide", + "reason" + ], + "type": "object" + }, + "WebhookDestination": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "format": "date", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", + "type": "string" + }, + "createdAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "deletedAt": { + "anyOf": [ + { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "410": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ACCOUNT_DELETED: Account Deleted", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "description": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "413": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } + "destinationId": { + "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "enabledEvents": { + "$ref": "#/components/schemas/WebhookEventSelection" + }, + "name": { + "type": "string" + }, + "projectId": { + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/WebhookDestinationStatus" + }, + "updatedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "apiVersion", + "createdAt", + "deletedAt", + "description", + "destinationId", + "enabledEvents", + "name", + "projectId", + "status", + "updatedAt", + "url" + ], + "type": "object" + }, + "WebhookDestinationDeletedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WEBHOOK_DESTINATION_DELETED", + "status": 410, + "title": "Webhook Destination Deleted", + "type": "https://photon.codes/docs/problems/webhook-destination-deleted" + }, + "properties": { + "code": { + "const": "WEBHOOK_DESTINATION_DELETED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 410, + "type": "number" + }, + "title": { + "const": "Webhook Destination Deleted", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/webhook-destination-deleted", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WebhookDestinationNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WEBHOOK_DESTINATION_NOT_FOUND", + "status": 404, + "title": "Webhook Destination Not Found", + "type": "https://photon.codes/docs/problems/webhook-destination-not-found" + }, + "properties": { + "code": { + "const": "WEBHOOK_DESTINATION_NOT_FOUND", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "Webhook Destination Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/webhook-destination-not-found", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WebhookDestinationPage": { + "additionalProperties": false, + "properties": { + "destinations": { + "items": { + "$ref": "#/components/schemas/WebhookDestination" }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "type": "array" + }, + "nextPageToken": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "destinations" + ], + "type": "object" + }, + "WebhookDestinationStatus": { + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + }, + "WebhookEgressAddress": { + "format": "ipv4", + "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$", + "type": "string" + }, + "WebhookEventSchema": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "WebhookEventSelection": { + "anyOf": [ + { + "$ref": "#/components/schemas/AllWebhookEvents" + }, + { + "$ref": "#/components/schemas/WebhookEventTypeList" + } + ] + }, + "WebhookEventType": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/components/schemas/WebhookEventTypeAudience" + }, + "description": { + "type": "string" + }, + "schemaProfile": { + "const": "reader", + "type": "string" + }, + "schemaUrl": { + "example": "/v1/projects/pho_prj_00000000000000000000000001/webhooks/event-types/message.received/schema?apiVersion=2026-07-01", + "format": "uri-reference", + "pattern": "^\\/v1\\/projects\\/.*", + "type": "string" + }, + "type": { + "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", + "type": "string" + } + }, + "required": [ + "audience", + "description", + "schemaProfile", + "schemaUrl", + "type" + ], + "type": "object" + }, + "WebhookEventTypeAudience": { + "enum": [ + "agent", + "infrastructure" + ], + "type": "string" + }, + "WebhookEventTypeList": { + "items": { + "$ref": "#/components/schemas/WebhookEventTypeName" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "WebhookEventTypeName": { + "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", + "type": "string" + }, + "WebhookEventWildcard": { + "const": "*", + "type": "string" + }, + "WhatsappAccountDisconnectingProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_ACCOUNT_DISCONNECTING", + "status": 409, + "title": "WhatsApp Business Account Disconnecting", + "type": "https://photon.codes/docs/problems/whatsapp-account-disconnecting" + }, + "properties": { + "code": { + "const": "WHATSAPP_ACCOUNT_DISCONNECTING", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - } - }, - "description": "VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp Business Account Disconnecting", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-account-disconnecting", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappAccountPhoneNumber": { + "additionalProperties": false, + "properties": { + "displayName": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "429": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "RATE_LIMITED: Too Many Requests", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "ownership": { + "$ref": "#/components/schemas/WhatsappPhoneNumberOwnership" + }, + "phoneNumber": { + "pattern": "^\\+[1-9]\\d{1,14}$", + "type": "string" + }, + "phoneNumberId": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "displayName", + "ownership", + "phoneNumber", + "phoneNumberId" + ], + "type": "object" + }, + "WhatsappAccountProvisioningProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_ACCOUNT_PROVISIONING", + "status": 409, + "title": "WhatsApp Business Account Has Provisioning Numbers", + "type": "https://photon.codes/docs/problems/whatsapp-account-provisioning" + }, + "properties": { + "code": { + "const": "WHATSAPP_ACCOUNT_PROVISIONING", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp Business Account Has Provisioning Numbers", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-account-provisioning", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappBusinessAccount": { + "additionalProperties": false, + "properties": { + "accountName": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } + "alerts": { + "items": { + "$ref": "#/components/schemas/WhatsappBusinessAccountAlert" }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "type": "array" + }, + "businessId": { + "type": "string" + }, + "businessName": { + "anyOf": [ + { + "type": "string" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "connectedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "maxPhoneNumbersPerBusiness": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "outboundCapacity": { + "$ref": "#/components/schemas/WhatsappOutboundCapacity" + }, + "restriction": { + "anyOf": [ + { + "$ref": "#/components/schemas/WhatsappBusinessAccountRestriction" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + { + "type": "null" } - } + ] + }, + "reviewStatus": { + "$ref": "#/components/schemas/WhatsappReviewStatus" + }, + "senderCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "subscribedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "wabaId": { + "type": "string" + } + }, + "required": [ + "accountName", + "alerts", + "businessId", + "businessName", + "connectedAt", + "outboundCapacity", + "restriction", + "reviewStatus", + "senderCount", + "wabaId" + ], + "type": "object" + }, + "WhatsappBusinessAccountAlert": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "entityId": { + "type": "string" + }, + "entityType": { + "type": "string" + }, + "observedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "severity": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "description", + "entityId", + "entityType", + "observedAt", + "severity", + "status", + "type" + ], + "type": "object" + }, + "WhatsappBusinessAccountRestriction": { + "additionalProperties": false, + "properties": { + "observedAt": { + "example": "2026-01-01T00:00:00.000Z", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/WhatsappRestrictionStatus" + } + }, + "required": [ + "observedAt", + "status" + ], + "type": "object" + }, + "WhatsappDisplayNameUnavailableProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_DISPLAY_NAME_UNAVAILABLE", + "status": 422, + "title": "WhatsApp Display Name Unavailable", + "type": "https://photon.codes/docs/problems/whatsapp-display-name-unavailable" + }, + "properties": { + "code": { + "const": "WHATSAPP_DISPLAY_NAME_UNAVAILABLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 422, + "type": "number" + }, + "title": { + "const": "WhatsApp Display Name Unavailable", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappModeDedicatedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_MODE_DEDICATED", + "status": 409, + "title": "WhatsApp Mode Is Dedicated", + "type": "https://photon.codes/docs/problems/whatsapp-mode-dedicated" + }, + "properties": { + "code": { + "const": "WHATSAPP_MODE_DEDICATED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp Mode Is Dedicated", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-mode-dedicated", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappOutboundCapacity": { + "enum": [ + "50", + "250", + "1000", + "2000", + "10000", + "100000", + "UNLIMITED", + "UNTIERED", + "UNKNOWN" + ], + "type": "string" + }, + "WhatsappPhoneNumberOwnership": { + "enum": [ + "photon", + "meta" + ], + "type": "string" + }, + "WhatsappRestrictionStatus": { + "enum": [ + "FLAGGED", + "DISABLED", + "REINSTATED", + "UNKNOWN" + ], + "type": "string" + }, + "WhatsappReviewStatus": { + "enum": [ + "PENDING", + "APPROVED", + "REJECTED", + "UNKNOWN" + ], + "type": "string" + }, + "WhatsappSenderConnectedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_SENDER_CONNECTED", + "status": 409, + "title": "WhatsApp Sender Connected", + "type": "https://photon.codes/docs/problems/whatsapp-sender-connected" + }, + "properties": { + "code": { + "const": "WHATSAPP_SENDER_CONNECTED", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp Sender Connected", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-sender-connected", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappSenderProvisioningProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_SENDER_PROVISIONING", + "status": 409, + "title": "WhatsApp Sender Provisioning", + "type": "https://photon.codes/docs/problems/whatsapp-sender-provisioning" + }, + "properties": { + "code": { + "const": "WHATSAPP_SENDER_PROVISIONING", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp Sender Provisioning", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-sender-provisioning", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappVerificationCodeNotFoundProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_VERIFICATION_CODE_NOT_FOUND", + "status": 404, + "title": "WhatsApp Verification Code Not Found", + "type": "https://photon.codes/docs/problems/whatsapp-verification-code-not-found" + }, + "properties": { + "code": { + "const": "WHATSAPP_VERIFICATION_CODE_NOT_FOUND", + "type": "string" }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "detail": { + "minLength": 1, + "type": "string" }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "WhatsApp Verification Code Not Found", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", + "type": "string" } }, - "security": [ - { - "accountServiceKey": [] + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappVerificationWindowExpiredProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_VERIFICATION_WINDOW_EXPIRED", + "status": 422, + "title": "WhatsApp Verification Window Expired", + "type": "https://photon.codes/docs/problems/whatsapp-verification-window-expired" + }, + "properties": { + "code": { + "const": "WHATSAPP_VERIFICATION_WINDOW_EXPIRED", + "type": "string" }, - { - "oauth2": [ - "account:write" - ] + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 422, + "type": "number" + }, + "title": { + "const": "WhatsApp Verification Window Expired", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-verification-window-expired", + "type": "string" } + }, + "required": [ + "code", + "status", + "title", + "type" ], - "summary": "Confirm a phone number verification", - "tags": [ - "Account" + "type": "object" + }, + "WhatsappVoipSourceNotEligibleProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE", + "status": 404, + "title": "WhatsApp VoIP Source Not Eligible", + "type": "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible" + }, + "properties": { + "code": { + "const": "WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE", + "type": "string" + }, + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "WhatsApp VoIP Source Not Eligible", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" ], - "x-photon-mcp": { - "enabled": false + "type": "object" + }, + "WhatsappVoipSourceReleasingProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" }, - "x-required-permissions": [ - "account:write" - ] - } - }, - "/v1/account/phone/verifications": { - "post": { - "description": "Sends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After.", - "operationId": "startAccountPhoneVerification", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "captcha": { - "additionalProperties": false, - "properties": { - "challengeContext": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "token": { - "maxLength": 4096, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "challengeContext", - "token" - ], - "type": "object" - }, - "phoneNumber": { - "pattern": "^[+\\d][\\d\\s().-]{6,24}$", - "type": "string" - } - }, - "required": [ - "phoneNumber" - ], - "type": "object" - } - } + "example": { + "code": "WHATSAPP_VOIP_SOURCE_RELEASING", + "status": 409, + "title": "WhatsApp VoIP Source Releasing", + "type": "https://photon.codes/docs/problems/whatsapp-voip-source-releasing" + }, + "properties": { + "code": { + "const": "WHATSAPP_VOIP_SOURCE_RELEASING", + "type": "string" }, - "required": true + "detail": { + "minLength": 1, + "type": "string" + }, + "instance": { + "minLength": 1, + "type": "string" + }, + "remediation": { + "not": {} + }, + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 409, + "type": "number" + }, + "title": { + "const": "WhatsApp VoIP Source Releasing", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", + "type": "string" + } }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "channel": { - "const": "sms", - "type": "string" - }, - "expiresAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "resendAvailableAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "channel", - "expiresAt", - "resendAvailableAt" - ], - "type": "object" - } - } - }, - "description": "A pending verification. The Account is unchanged.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + }, + "WhatsappWabaNotConnectedProblem": { + "additionalProperties": { + "$ref": "#/components/schemas/JsonValue" + }, + "example": { + "code": "WHATSAPP_WABA_NOT_CONNECTED", + "status": 404, + "title": "WhatsApp Business Account Not Connected", + "type": "https://photon.codes/docs/problems/whatsapp-waba-not-connected" + }, + "properties": { + "code": { + "const": "WHATSAPP_WABA_NOT_CONNECTED", + "type": "string" }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "INVALID_ARGUMENT: Invalid Argument", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "detail": { + "minLength": 1, + "type": "string" }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } + "instance": { + "minLength": 1, + "type": "string" }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "challengeContext": { - "type": "string" - }, - "code": { - "const": "CAPTCHA_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "provider": { - "enum": [ - "turnstile", - "hcaptcha" - ], - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "siteKey": { - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Captcha Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/captcha-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "challengeContext", - "provider", - "siteKey" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } + "remediation": { + "not": {} }, - "404": { + "requestId": { + "minLength": 1, + "type": "string" + }, + "status": { + "const": 404, + "type": "number" + }, + "title": { + "const": "WhatsApp Business Account Not Connected", + "type": "string" + }, + "type": { + "const": "https://photon.codes/docs/problems/whatsapp-waba-not-connected", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "type" + ], + "type": "object" + } + }, + "securitySchemes": { + "accountServiceKey": { + "description": "Account Service Key, prefixed with `pho_ask_`, sent as `Authorization: Bearer `. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.", + "scheme": "bearer", + "type": "http" + }, + "oauth2": { + "description": "OAuth grant issued by the Photon authorization server. The token is a bearer JWT whose consented scope is intersected with the permissions the route grants; an empty intersection is `403 insufficient_scope`.", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://auth.photon.codes/oauth2/authorize", + "scopes": { + "account:create_project": "Create a project owned by the account.", + "account:read": "View account profile.", + "account:read_projects": "List projects associated with the account; does not grant access to project contents.", + "account:write": "Update account name and profile.", + "billing:read": "View invoices, usage, payment status.", + "events:read": "Query stored Events and discover their SQL schema within a project.", + "organization:create_project": "Create a project in the organization.", + "organization:read": "View organization name and avatar.", + "organization:read_projects": "List projects in the organization.", + "platforms:read": "View project platform configuration.", + "platforms:write": "Change project platform configuration.", + "project:delete": "Permanently delete the project.", + "project:read": "View non-sensitive project settings.", + "project:read_usage": "View project usage and costs.", + "project:write": "Change agent profiles, webhook settings, and other project configuration.", + "ten_dlc:read": "View organization 10DLC Brand and Campaign registration records.", + "ten_dlc:write": "Register and update organization 10DLC Brands and Campaigns, including OTP operations." + }, + "tokenUrl": "https://auth.photon.codes/oauth2/token" + } + }, + "type": "oauth2" + }, + "projectApiKey": { + "description": "Project API key, `pho_sk_` prefixed, sent as `Authorization: Bearer `. Bound to one project, so it is accepted only under `/v1/projects/{projectId}` and refused everywhere else.", + "scheme": "bearer", + "type": "http" + }, + "serviceIdentityBearer": { + "description": "Organization Service Identity API key or M2M access token, sent as `Authorization: Bearer `. Restricted to its organization and explicitly granted business permissions. It does not authorize human organization governance or Photon credential management. Never send an M2M client secret to a business endpoint.", + "scheme": "bearer", + "type": "http" + } + } + }, + "info": { + "title": "Photon API", + "version": "1.0.0" + }, + "openapi": "3.1.0", + "paths": { + "/v1/account": { + "delete": { + "description": "Deletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier.", + "operationId": "deleteAccount", + "parameters": [], + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/Account" } } }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "description": "The deleted account tombstone.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "410": { + "401": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "ACCOUNT_DELETED: Account Deleted", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "413": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DeleteAccountForbiddenProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -8328,38 +17791,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -8373,254 +17836,81 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "429": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountOwnsOrganizationsProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "ACCOUNT_OWNS_ORGANIZATIONS: Account Owns Organizations", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -8628,60 +17918,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteAccountInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -8716,9 +17962,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -8741,105 +17987,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -8847,53 +18026,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -8928,9 +18070,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -8953,150 +18095,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteAccountGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -9104,767 +18134,122 @@ "security": [ { "accountServiceKey": [] - }, - { - "oauth2": [ - "account:write" - ] } ], - "summary": "Start a phone number verification", + "summary": "Delete the authenticated account", "tags": [ "Account" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ - "account:write" + "security:write" ] - } - }, - "/v1/account/profile-picture": { - "delete": { - "operationId": "resetAccountProfilePicture", - "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - } - ], + }, + "get": { + "description": "Returns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile.", + "operationId": "getAccount", + "parameters": [], "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The Account reset to its default profile picture.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/Account" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", + "description": "The authenticated account.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "404": { + "401": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "410": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetAccountForbiddenProblem" } } }, - "description": "ACCOUNT_DELETED: Account Deleted", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -9875,38 +18260,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -9920,299 +18305,81 @@ } } }, - "413": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "410": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", + "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -10220,60 +18387,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAccountInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -10308,9 +18431,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -10333,105 +18456,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -10439,53 +18495,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -10520,9 +18539,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -10545,150 +18564,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAccountGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -10699,22 +18606,21 @@ }, { "oauth2": [ - "account:write" + "account:read" ] } ], - "summary": "Remove a profile picture", + "summary": "Get the authenticated account", "tags": [ "Account" ], "x-required-permissions": [ - "account:write" - ], - "description": "Removes the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header." + "account:read" + ] }, - "put": { - "description": "Commits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account.", - "operationId": "commitAccountProfilePicture", + "patch": { + "description": "Updates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header.", + "operationId": "updateAccount", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -10733,17 +18639,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "uploadId": { - "pattern": "^pho_upl_[0-9a-z]{26}$", - "type": "string" - } - }, - "required": [ - "uploadId" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateAccountRequest" } } }, @@ -10754,172 +18650,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": {}, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "email": { - "format": "email", - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneNumber": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "phoneVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pictureUrl": { - "format": "uri", - "type": "string" - }, - "updatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "accountId", - "createdAt", - "deletedAt", - "email", - "firstName", - "lastName", - "phoneNumber", - "phoneVerifiedAt", - "pictureUrl", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Account" } } }, - "description": "The Account with its committed profile picture.", + "description": "The updated account.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -10927,191 +18689,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAccountBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", + "description": "HTTP_ERROR: Request Failed; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -11119,7 +18728,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -11167,101 +18776,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateAccountForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -11296,9 +18820,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -11321,105 +18845,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -11427,105 +18884,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -11533,105 +18923,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -11639,189 +18962,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAccountUnprocessableEntityProblem" } } }, "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -11829,60 +19001,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAccountInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -11917,9 +19045,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -11942,105 +19070,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -12048,53 +19109,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -12129,9 +19153,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -12154,150 +19178,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAccountGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -12312,7 +19224,7 @@ ] } ], - "summary": "Commit a profile picture", + "summary": "Update the authenticated account", "tags": [ "Account" ], @@ -12321,185 +19233,152 @@ ] } }, - "/v1/account/profile-picture/uploads": { - "post": { - "description": "Creates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields.", - "operationId": "createAccountProfilePictureUpload", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType" - ], - "type": "object" - } + "/v1/account/oauth/authorized-applications": { + "get": { + "description": "Lists the OAuth applications authorized by the authenticated user.", + "operationId": "listAuthorizedApplications", + "parameters": [ + { + "description": "Pagination cursor from listMetadata.after for the next page. Cannot be combined with before.", + "in": "query", + "name": "after", + "schema": { + "maxLength": 128, + "minLength": 1, + "type": "string" } }, - "required": true - }, + { + "description": "Pagination cursor from listMetadata.before for the previous page. Cannot be combined with after.", + "in": "query", + "name": "before", + "schema": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + { + "description": "Maximum number of authorized applications to return, from 1 to 100. Omit to use the default page size.", + "in": "query", + "name": "limit", + "schema": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Result ordering: normal, descending (desc), or ascending (asc). Omit to use the default order.", + "in": "query", + "name": "order", + "schema": { + "$ref": "#/components/schemas/ListAuthorizedApplicationsOrder" + } + } + ], "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expiresAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "formFields": { - "additionalProperties": { - "type": "string" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "uploadId": { - "type": "string" - }, - "uploadUrl": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "expiresAt", - "formFields", - "uploadId", - "uploadUrl" - ], - "type": "object" + "$ref": "#/components/schemas/ListAuthorizedApplicationsResponse" } } }, - "description": "A short-lived, Account-bound presigned S3 POST.", + "description": "OAuth applications authorized by the authenticated user.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "400": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListAuthorizedApplicationsForbiddenProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "FORBIDDEN: Forbidden\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -12510,38 +19389,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -12555,153 +19434,59 @@ } } }, - "401": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListAuthorizedApplicationsInternalServerErrorProblem" + } + } + }, + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -12736,9 +19521,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -12757,57 +19542,59 @@ } } }, - "404": { + "502": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -12818,38 +19605,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -12863,163 +19650,169 @@ } } }, - "410": { + "504": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListAuthorizedApplicationsGatewayTimeoutProblem" } } }, - "description": "ACCOUNT_DELETED: Account Deleted", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + } + ], + "summary": "List connected applications", + "tags": [ + "Connected Applications" + ] + } + }, + "/v1/account/oauth/authorized-applications/{applicationId}": { + "delete": { + "description": "Revokes the authenticated user's grant for one OAuth application.", + "operationId": "revokeAuthorizedApplication", + "parameters": [ + { + "description": "Authorized application's id, prefixed with connect_app_. Use application.id from the list response, not its clientId or authorizationId.", + "in": "path", + "name": "applicationId", + "required": true, + "schema": { + "maxLength": 128, + "pattern": "^connect_app_[A-Za-z0-9]+$", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "OAuth application grant revoked.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "413": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeAuthorizedApplicationForbiddenProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "FORBIDDEN: Forbidden\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -13030,38 +19823,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -13079,144 +19872,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -13224,60 +19911,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeAuthorizedApplicationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -13312,9 +19955,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -13337,105 +19980,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -13443,53 +20019,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -13524,9 +20063,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -13549,150 +20088,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeAuthorizedApplicationGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -13700,161 +20127,113 @@ "security": [ { "accountServiceKey": [] - }, - { - "oauth2": [ - "account:write" - ] } ], - "summary": "Create a profile picture upload", + "summary": "Revoke a connected application", "tags": [ - "Account" - ], - "x-required-permissions": [ - "account:write" + "Connected Applications" ] } }, - "/v1/account/service-keys": { - "get": { - "operationId": "listAccountServiceKeys", + "/v1/account/phone": { + "put": { + "description": "Binds the number once the code is approved. Repeat calls return the bound Account.", + "operationId": "confirmAccountPhoneVerification", "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfirmAccountPhoneVerificationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "serviceKeys": { - "items": { - "additionalProperties": false, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "serviceKeyId": { - "type": "string" - } - }, - "required": [ - "accountId", - "createdAt", - "expiresAt", - "name", - "revokedAt", - "serviceKeyId" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "serviceKeys" - ], - "type": "object" - } - } - }, - "description": "Active Account Service Key metadata, newest first.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/Account" } + } + }, + "description": "The Account with its verified phone number.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } + }, + "description": "INVALID_ARGUMENT: Invalid Argument", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -13902,101 +20281,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ConfirmAccountPhoneVerificationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -14013,254 +20307,237 @@ } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "description": "Current rate-limit state.\n\nOptional rate limit information.", + "schema": { + "type": "string" + } + }, + "RateLimit-Policy": { + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "schema": { + "type": "string" + } + }, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", + "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", + "type": "string" + } + }, + "X-Request-ID": { + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", + "type": "string" + } + } + } + }, + "404": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/AccountNotFoundProblem" + } + } + }, + "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "410": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/AccountDeletedProblem" + } + } + }, + "description": "ACCOUNT_DELETED: Account Deleted", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/PayloadTooLargeProblem" + } + } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "404": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "410": { + "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, - "description": "ACCOUNT_DELETED: Account Deleted", + "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -14268,60 +20545,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfirmAccountPhoneVerificationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -14356,9 +20589,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -14381,105 +20614,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -14487,53 +20653,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -14568,9 +20697,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -14593,150 +20722,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfirmAccountPhoneVerificationGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -14751,53 +20768,28 @@ ] } ], - "summary": "List Account Service Keys", + "summary": "Confirm a phone number verification", "tags": [ - "Account Service Keys" + "Account" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ "account:write" - ], - "description": "Returns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created." - }, + ] + } + }, + "/v1/account/phone/verifications": { "post": { - "operationId": "createAccountServiceKey", - "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - } - ], + "description": "Sends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After.", + "operationId": "startAccountPhoneVerification", + "parameters": [], "requestBody": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expiresAt": { - "example": "2030-01-01T00:00:00Z", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" + "$ref": "#/components/schemas/StartAccountPhoneVerificationRequest" } } }, @@ -14808,129 +20800,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "secret": { - "type": "string" - }, - "serviceKey": { - "additionalProperties": false, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "serviceKeyId": { - "type": "string" - } - }, - "required": [ - "accountId", - "createdAt", - "expiresAt", - "name", - "revokedAt", - "serviceKeyId" - ], - "type": "object" - } - }, - "required": [ - "secret", - "serviceKey" - ], - "type": "object" + "$ref": "#/components/schemas/StartAccountPhoneVerificationResponse" } } }, - "description": "The created Account Service Key and its one-time credential.", + "description": "A pending verification. The Account is unchanged.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -14938,191 +20839,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -15130,7 +20878,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -15178,101 +20926,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/StartAccountPhoneVerificationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -15307,9 +20970,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -15332,613 +20995,194 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "410": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_SERVICE_KEY_LIMIT_REACHED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Account Service Key Limit Reached", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-service-key-limit-reached", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, - "description": "ACCOUNT_SERVICE_KEY_LIMIT_REACHED: Account Service Key Limit Reached", + "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "410": { + "413": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, - "description": "ACCOUNT_DELETED: Account Deleted", + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "413": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "429": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RateLimitedProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", + "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -15946,60 +21190,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/StartAccountPhoneVerificationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -16034,9 +21234,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -16059,105 +21259,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -16165,53 +21298,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -16246,9 +21342,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -16271,150 +21367,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/StartAccountPhoneVerificationGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -16429,22 +21413,22 @@ ] } ], - "summary": "Create an Account Service Key", + "summary": "Start a phone number verification", "tags": [ - "Account Service Keys" + "Account" ], "x-photon-mcp": { "enabled": false }, "x-required-permissions": [ "account:write" - ], - "description": "Creates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header." + ] } }, - "/v1/account/service-keys/{serviceKeyId}": { + "/v1/account/profile-picture": { "delete": { - "operationId": "revokeAccountServiceKey", + "description": "Removes the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header.", + "operationId": "resetAccountProfilePicture", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -16457,15 +21441,6 @@ "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } - }, - { - "in": "path", - "name": "serviceKeyId", - "required": true, - "schema": { - "pattern": "^pho_ask_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - } } ], "responses": { @@ -16473,125 +21448,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "serviceKey": { - "additionalProperties": false, - "properties": { - "accountId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "serviceKeyId": { - "type": "string" - } - }, - "required": [ - "accountId", - "createdAt", - "expiresAt", - "name", - "revokedAt", - "serviceKeyId" - ], - "type": "object" - } - }, - "required": [ - "serviceKey" - ], - "type": "object" + "$ref": "#/components/schemas/Account" } } }, - "description": "The revoked key metadata. Repeated revocation is stable.", + "description": "The Account reset to its default profile picture.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -16599,191 +21487,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResetAccountProfilePictureBadRequestProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -16791,7 +21526,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -16839,101 +21574,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ResetAccountProfilePictureForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -16968,9 +21618,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -16993,150 +21643,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_SERVICE_KEY_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Account Service Key Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-service-key-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -17144,105 +21682,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ACCOUNT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Account Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/account-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -17250,105 +21721,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -17356,189 +21760,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResetAccountProfilePictureUnprocessableEntityProblem" } } }, "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -17546,60 +21799,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResetAccountProfilePictureInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -17634,9 +21843,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -17659,105 +21868,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -17765,53 +21907,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -17846,9 +21951,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -17871,150 +21976,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResetAccountProfilePictureGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -18029,191 +22022,182 @@ ] } ], - "summary": "Revoke an Account Service Key", + "summary": "Remove a profile picture", "tags": [ - "Account Service Keys" + "Account" ], "x-required-permissions": [ "account:write" + ] + }, + "put": { + "description": "Commits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account.", + "operationId": "commitAccountProfilePicture", + "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + } ], - "description": "Revokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header." - } - }, - "/v1/auth/device/code": { - "post": { - "description": "Starts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored.", - "operationId": "deviceAuthorize", - "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommitAccountProfilePictureRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "properties": { - "device_code": { - "description": "Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize.", - "type": "string" - }, - "expires_in": { - "description": "Lifetime of the device code and user code, in seconds.", - "type": "number" - }, - "interval": { - "description": "Minimum number of seconds to wait between token polling requests.", - "type": "number" - }, - "user_code": { - "description": "Code the user enters at verification_uri to authorize this device.", - "type": "string" - }, - "verification_uri": { - "description": "Browser URL where the user enters user_code and authorizes the device.", - "type": "string" - }, - "verification_uri_complete": { - "description": "Browser URL with user_code included, ready to open or encode as a QR code.", - "type": "string" - } - }, - "required": [ - "device_code", - "expires_in", - "interval", - "user_code", - "verification_uri", - "verification_uri_complete" - ], - "type": "object" - } - } - }, - "description": "Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/Account" } + } + }, + "description": "The Account with its committed profile picture.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, "400": { - "description": "WorkOS rejected the request. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CommitAccountProfilePictureBadRequestProblem" } + } + }, + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "502": { - "description": "WorkOS could not be reached (problem+json).", + "403": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/CommitAccountProfilePictureForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -18224,38 +22208,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -18268,278 +22252,177 @@ } } } - } - }, - "security": [], - "summary": "Start Device Authorization", - "tags": [ - "Device Authorization" - ], - "x-photon-mcp": { - "enabled": false - } - } - }, - "/v1/auth/device/token": { - "post": { - "description": "Exchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.", - "operationId": "deviceToken", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "properties": { - "device_code": { - "description": "device_code returned by POST /v1/auth/device/code. Required for a device-code grant.", - "minLength": 1, - "type": "string" - }, - "grant_type": { - "const": "urn:ietf:params:oauth:grant-type:device_code", - "description": "Selects the device authorization grant to poll or exchange a device code.", - "type": "string" - } - }, - "required": [ - "device_code", - "grant_type" - ], - "type": "object" - }, - { - "properties": { - "grant_type": { - "const": "refresh_token", - "description": "Selects the refresh-token grant to obtain a new token pair.", - "type": "string" - }, - "refresh_token": { - "description": "Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "grant_type", - "refresh_token" - ], - "type": "object" - } - ] + }, + "404": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/AccountNotFoundProblem" + } } }, - "application/x-www-form-urlencoded": { - "schema": { - "oneOf": [ - { - "properties": { - "device_code": { - "description": "device_code returned by POST /v1/auth/device/code. Required for a device-code grant.", - "minLength": 1, - "type": "string" - }, - "grant_type": { - "const": "urn:ietf:params:oauth:grant-type:device_code", - "description": "Selects the device authorization grant to poll or exchange a device code.", - "type": "string" - } - }, - "required": [ - "device_code", - "grant_type" - ], - "type": "object" - }, - { - "properties": { - "grant_type": { - "const": "refresh_token", - "description": "Selects the refresh-token grant to obtain a new token pair.", - "type": "string" - }, - "refresh_token": { - "description": "Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "grant_type", - "refresh_token" - ], - "type": "object" - } - ] + "description": "ACCOUNT_NOT_FOUND: Account Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "description": "Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding.", - "required": true - }, - "responses": { - "200": { + "410": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "properties": { - "access_token": { - "description": "Bearer access token for authenticated Photon API requests.", - "type": "string" - }, - "authentication_method": { - "description": "Authentication method used for the device login, when returned. Omitted for refresh grants.", - "type": "string" - }, - "expires_in": { - "description": "Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable.", - "type": "number" - }, - "refresh_token": { - "description": "Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one.", - "type": "string" - }, - "user": { - "description": "Profile of the authenticated user.", - "properties": { - "email": { - "description": "Authenticated user's email address.", - "type": "string" - }, - "first_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "User's first name, or null when not set." - }, - "id": { - "description": "Authenticated user's identity identifier; distinct from the Photon Account ID.", - "type": "string" - }, - "last_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "User's last name, or null when not set." - } - }, - "required": [ - "id", - "email", - "first_name", - "last_name" - ], - "type": "object" - } - }, - "required": [ - "access_token", - "expires_in", - "refresh_token", - "user" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, - "description": "Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one.", + "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } + } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/CommitAccountProfilePictureUnprocessableEntityProblem" } } + }, + "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "400": { + "500": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "properties": { - "error": { - "description": "OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval.", - "type": "string" - }, - "error_description": { - "description": "Optional human-readable explanation of the OAuth error.", - "type": "string" - } - }, - "required": [ - "error" - ], - "type": "object" + "$ref": "#/components/schemas/CommitAccountProfilePictureInternalServerErrorProblem" } } }, - "description": "authorization_pending, slow_down, access_denied, expired_token, invalid_grant, invalid_request, or unsupported_grant_type. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -18550,38 +22433,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -18595,73 +22478,59 @@ } } }, - "429": { - "description": "Relayed slow_down; back off the polling interval.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "502": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UpstreamFailureProblem" } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { - "description": "server_error: the login could not be completed; retry the login from the start.", + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -18672,38 +22541,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -18717,223 +22586,117 @@ } } }, - "502": { - "description": "WorkOS could not be reached (problem+json).", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "504": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CommitAccountProfilePictureGatewayTimeoutProblem" } + } + }, + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } }, - "security": [], - "summary": "Exchange Device Code or Refresh Token", + "security": [ + { + "accountServiceKey": [] + }, + { + "oauth2": [ + "account:write" + ] + } + ], + "summary": "Commit a profile picture", "tags": [ - "Device Authorization" + "Account" ], - "x-photon-mcp": { - "enabled": false - } + "x-required-permissions": [ + "account:write" + ] } }, - "/v1/auth/login/enrollment": { + "/v1/account/profile-picture/uploads": { "post": { - "operationId": "startEnterpriseLogin", + "description": "Creates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields.", + "operationId": "createAccountProfilePictureUpload", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "invitationToken": { - "pattern": "^[A-Za-z0-9_-]{43}$", - "type": "string" - }, - "organizationId": { - "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "returnTo": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "organizationId", - "returnTo" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "invitationToken": { - "pattern": "^[A-Za-z0-9_-]{43}$", - "type": "string" - }, - "returnTo": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "invitationToken", - "returnTo" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retryToken": { - "pattern": "^enroll_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", - "type": "string" - } - }, - "required": [ - "retryToken" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProfilePictureUploadRequest" } } }, "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/ProfilePictureUpload" } } }, - "description": "Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication.", + "description": "A short-lived, Account-bound presigned S3 POST.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -18941,152 +22704,103 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_RETURN_TO: Invalid Return To", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } - } - }, - "security": [], - "summary": "Start company sign-in without an existing Account", - "tags": [ - "Authentication" - ], - "x-photon-mcp": { - "enabled": false - }, - "description": "Returns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials." - } - }, - "/v1/auth/oauth/scopes": { - "get": { - "description": "Lists the business permissions available to OAuth applications.", - "operationId": "listOauthScopes", - "parameters": [], - "responses": { - "200": { + }, + "403": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "properties": { - "scopes": { - "description": "Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included.", - "items": { - "description": "OAuth business permission slug.", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "scopes" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAccountProfilePictureUploadForbiddenProblem" } } }, - "description": "The configurable OAuth business permissions.", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -19097,38 +22811,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -19142,208 +22856,176 @@ } } }, - "503": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "410": { + "content": { + "application/problem+json": { "schema": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/AccountDeletedProblem" } + } + }, + "description": "ACCOUNT_DELETED: Account Deleted", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } + } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "504": { + "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateAccountProfilePictureUploadInternalServerErrorProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -19354,38 +23036,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -19398,235 +23080,60 @@ } } } - } - }, - "security": [], - "summary": "List OAuth scopes", - "tags": [ - "OAuth Discovery" - ] - } - }, - "/v1/auth/organizations/{orgId}/connection-status": { - "get": { - "description": "Requires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization.", - "operationId": "getOrganizationConnectionStatus", - "parameters": [ - { - "in": "path", - "name": "orgId", - "required": true, - "schema": { - "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - } - } - ], - "responses": { - "200": { + }, + "502": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "properties": { - "membership": { - "properties": { - "errorCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "retryAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "enum": [ - "pending", - "syncing", - "ready", - "error", - "blocked" - ], - "type": "string" - } - }, - "required": [ - "status", - "errorCode", - "retryAt" - ], - "type": "object" - }, - "organization": { - "properties": { - "errorCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "enum": [ - "pending", - "syncing", - "ready", - "error", - "blocked" - ], - "type": "string" - } - }, - "required": [ - "status", - "errorCode" - ], - "type": "object" - }, - "organizationId": { - "type": "string" - }, - "synchronized": { - "type": "boolean" - } - }, - "required": [ - "organizationId", - "organization", - "membership", - "synchronized" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "Organization mapping and current member synchronization.", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "400": { + "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -19637,38 +23144,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -19682,70 +23189,119 @@ } } }, - "401": { + "504": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/CreateAccountProfilePictureUploadGatewayTimeoutProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "oauth2": [ + "account:write" + ] + } + ], + "summary": "Create a profile picture upload", + "tags": [ + "Account" + ], + "x-required-permissions": [ + "account:write" + ] + } + }, + "/v1/account/service-keys": { + "get": { + "description": "Returns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created.", + "operationId": "listAccountServiceKeys", + "parameters": [], + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ListAccountServiceKeysResponse" } } + }, + "description": "Unrevoked Account Service Key metadata, including expired keys, newest first.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "403": { + "401": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { "Link": { "description": "Optional related resources.", @@ -19771,6 +23327,12 @@ "type": "string" } }, + "WWW-Authenticate": { + "required": true, + "schema": { + "type": "string" + } + }, "X-Request-ID": { "description": "Application request identifier.", "schema": { @@ -19779,57 +23341,20 @@ } } }, - "404": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_CONNECTION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization Connection Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-connection-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListAccountServiceKeysForbiddenProblem" } } }, - "description": "ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -19840,38 +23365,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -19885,254 +23410,81 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SYNC_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization Synchronization Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sync-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "410": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -20140,60 +23492,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListAccountServiceKeysInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -20228,9 +23536,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -20253,105 +23561,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -20359,53 +23600,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -20440,9 +23644,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -20465,150 +23669,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListAccountServiceKeysGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -20618,181 +23710,78 @@ "accountServiceKey": [] } ], - "summary": "Read organization and own membership synchronization", + "summary": "List Account Service Keys", "tags": [ - "Organization Connections" + "Account Service Keys" ], - "x-photon-mcp": { - "enabled": false - } - } - }, - "/v1/auth/organizations/{orgId}/connection-sync/retry": { + "x-required-permissions": [ + "security:read" + ] + }, "post": { - "description": "Reconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy.", - "operationId": "retryOrganizationConnectionSync", + "description": "Creates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header.", + "operationId": "createAccountServiceKey", "parameters": [ { - "in": "path", - "name": "orgId", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", "required": true, "schema": { - "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAccountServiceKeyRequest" + } + } + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "properties": { - "membership": { - "properties": { - "errorCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "retryAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "enum": [ - "pending", - "syncing", - "ready", - "error", - "blocked" - ], - "type": "string" - } - }, - "required": [ - "status", - "errorCode", - "retryAt" - ], - "type": "object" - }, - "organization": { - "properties": { - "errorCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "enum": [ - "pending", - "syncing", - "ready", - "error", - "blocked" - ], - "type": "string" - } - }, - "required": [ - "status", - "errorCode" - ], - "type": "object" - }, - "organizationId": { - "type": "string" - }, - "synchronized": { - "type": "boolean" - } - }, - "required": [ - "organizationId", - "organization", - "membership", - "synchronized" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAccountServiceKeyResponse" } } }, - "description": "Current synchronization state after requesting retry.", + "description": "The created Account Service Key and its one-time credential.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -20800,105 +23789,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAccountServiceKeyBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -20906,7 +23828,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -20954,46 +23876,66 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/CreateAccountServiceKeyForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, "Link": { - "description": "Optional related resources.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Optional rate limit information.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "schema": { + "type": "string" + } + }, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Application request identifier.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -21003,105 +23945,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_CONNECTION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization Connection Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-connection-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountNotFoundProblem" } } }, - "description": "ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found", + "description": "ACCOUNT_NOT_FOUND: Account Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -21109,250 +23984,155 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SYNC_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization Synchronization Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sync-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountServiceKeyLimitReachedProblem" } } }, - "description": "ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable", + "description": "ACCOUNT_SERVICE_KEY_LIMIT_REACHED: Account Service Key Limit Reached", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "410": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AccountDeletedProblem" } + } + }, + "description": "ACCOUNT_DELETED: Account Deleted", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAccountServiceKeyUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -21360,60 +24140,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateAccountServiceKeyInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -21448,9 +24184,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -21473,105 +24209,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -21579,53 +24248,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -21660,9 +24292,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -21685,150 +24317,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateAccountServiceKeyGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -21838,25 +24358,41 @@ "accountServiceKey": [] } ], - "summary": "Retry own organization connection synchronization", + "summary": "Create an Account Service Key", "tags": [ - "Organization Connections" + "Account Service Keys" ], "x-photon-mcp": { "enabled": false - } + }, + "x-required-permissions": [ + "security:write" + ] } }, - "/v1/auth/organizations/{orgId}/sso": { - "get": { - "operationId": "getOrganizationSsoConfiguration", + "/v1/account/service-keys/{serviceKeyId}": { + "delete": { + "description": "Revokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header.", + "operationId": "revokeAccountServiceKey", "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, { "in": "path", - "name": "orgId", + "name": "serviceKeyId", "required": true, "schema": { - "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "pattern": "^pho_ask_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } } @@ -21866,157 +24402,38 @@ "content": { "application/json": { "schema": { - "properties": { - "connectionChangedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "connectionGeneration": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - }, - "connectionState": { - "enum": [ - "not_configured", - "configuring", - "ready", - "error" - ], - "type": "string" - }, - "connectionType": { - "type": "string" - }, - "desiredSsoEnforced": { - "type": "boolean" - }, - "domains": { - "items": { - "properties": { - "domain": { - "type": "string" - }, - "state": { - "enum": [ - "verified", - "pending", - "failed" - ], - "type": "string" - } - }, - "required": [ - "domain", - "state" - ], - "type": "object" - }, - "type": "array" - }, - "organizationId": { - "type": "string" - }, - "policySyncStatus": { - "enum": [ - "synced", - "manual_required" - ], - "type": "string" - }, - "providerAvailable": { - "type": "boolean" - }, - "ssoEnforced": { - "type": "boolean" - }, - "ssoJitEnabled": { - "type": "boolean" - }, - "version": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - } - }, - "required": [ - "organizationId", - "connectionState", - "connectionGeneration", - "connectionChangedAt", - "version", - "ssoEnforced", - "desiredSsoEnforced", - "ssoJitEnabled", - "policySyncStatus" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeAccountServiceKeyResponse" } } }, - "description": "Current connection and independent local policy state.", + "description": "The revoked key metadata. Repeated revocation is stable.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -22024,150 +24441,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeAccountServiceKeyBadRequestProblem" } } }, - "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -22175,7 +24480,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -22223,46 +24528,66 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/RevokeAccountServiceKeyForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, "Link": { - "description": "Optional related resources.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Optional rate limit information.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", + "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", + "type": "string" + } + }, "X-Request-ID": { - "description": "Application request identifier.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -22272,317 +24597,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeAccountServiceKeyNotFoundProblem" } } }, - "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "description": "ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "410": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AccountDeletedProblem" } } }, - "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", + "description": "ACCOUNT_DELETED: Account Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "412": { + "413": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -22590,144 +24714,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeAccountServiceKeyUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -22735,60 +24753,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeAccountServiceKeyInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -22823,9 +24797,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -22848,105 +24822,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -22954,53 +24861,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -23035,9 +24905,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -23060,150 +24930,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeAccountServiceKeyGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -23213,1138 +24971,503 @@ "accountServiceKey": [] } ], - "summary": "Read organization SSO configuration", + "summary": "Revoke an Account Service Key", "tags": [ - "Organization SSO" - ], - "x-photon-mcp": { - "enabled": false - }, - "description": "Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings." - }, - "patch": { - "operationId": "updateOrganizationSsoPolicy", - "parameters": [ - { - "in": "path", - "name": "orgId", - "required": true, - "schema": { - "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - } - } + "Account Service Keys" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - }, - "ssoJitEnabled": { - "type": "boolean" - } - }, - "required": [ - "expectedVersion", - "ssoJitEnabled" - ], - "type": "object" - } - } - }, - "required": true - }, + "x-required-permissions": [ + "security:write" + ] + } + }, + "/v1/auth/device/code": { + "post": { + "description": "Starts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored.", + "operationId": "deviceAuthorize", + "parameters": [], "responses": { "200": { "content": { "application/json": { "schema": { - "properties": { - "connectionChangedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "connectionGeneration": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - }, - "connectionState": { - "enum": [ - "not_configured", - "configuring", - "ready", - "error" - ], - "type": "string" - }, - "connectionType": { - "type": "string" - }, - "desiredSsoEnforced": { - "type": "boolean" - }, - "domains": { - "items": { - "properties": { - "domain": { - "type": "string" - }, - "state": { - "enum": [ - "verified", - "pending", - "failed" - ], - "type": "string" - } - }, - "required": [ - "domain", - "state" - ], - "type": "object" - }, - "type": "array" - }, - "organizationId": { - "type": "string" - }, - "policySyncStatus": { - "enum": [ - "synced", - "manual_required" - ], - "type": "string" - }, - "providerAvailable": { - "type": "boolean" - }, - "ssoEnforced": { - "type": "boolean" - }, - "ssoJitEnabled": { - "type": "boolean" - }, - "version": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - } - }, - "required": [ - "organizationId", - "connectionState", - "connectionGeneration", - "connectionChangedAt", - "version", - "ssoEnforced", - "desiredSsoEnforced", - "ssoJitEnabled", - "policySyncStatus" - ], - "type": "object" + "$ref": "#/components/schemas/DeviceAuthorizeResponse" } } }, - "description": "Current connection and independent local policy state.", + "description": "Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, "400": { + "description": "The authorization request was rejected. OAuth errors use error and error_description fields.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [], + "summary": "Start Device Authorization", + "tags": [ + "Device Authorization" + ], + "x-photon-mcp": { + "enabled": false + } + } + }, + "/v1/auth/device/token": { + "post": { + "description": "Exchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.", + "operationId": "deviceToken", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceTokenRequest" + } + }, + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/DeviceTokenRequest" } } }, - "401": { + "description": "Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding.", + "required": true + }, + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/DeviceTokenResponse" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one.", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "400": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/DeviceTokenBadRequestResponse" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "authorization_pending, slow_down, access_denied, expired_token, invalid_grant, invalid_request, or unsupported_grant_type. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "429": { + "description": "Relayed slow_down; back off the polling interval.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", + "500": { + "description": "server_error: the login could not be completed; retry the login from the start.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "412": { + "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [], + "summary": "Exchange Device Code or Refresh Token", + "tags": [ + "Device Authorization" + ], + "x-photon-mcp": { + "enabled": false + } + } + }, + "/v1/auth/login/enrollment": { + "post": { + "description": "Returns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials.", + "operationId": "startEnterpriseLogin", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartEnterpriseLoginRequest" } } }, - "422": { + "required": true + }, + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/StartEnterpriseLoginResponse" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "400": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidReturnToProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "INVALID_RETURN_TO: Invalid Return To", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } - }, - "502": { + } + }, + "security": [], + "summary": "Start company sign-in without an existing Account", + "tags": [ + "Authentication" + ], + "x-photon-mcp": { + "enabled": false + } + } + }, + "/v1/auth/oauth/scopes": { + "get": { + "description": "Lists the business permissions available to OAuth applications.", + "operationId": "listOauthScopes", + "parameters": [], + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListOauthScopesResponse" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "The configurable OAuth business permissions.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -24352,105 +25475,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -24458,172 +25514,53 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListOauthScopesGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } }, - "security": [ - { - "accountServiceKey": [] - } - ], - "summary": "Update organization SSO policy", + "security": [], + "summary": "List OAuth scopes", "tags": [ - "Organization SSO" - ], - "x-photon-mcp": { - "enabled": false - }, - "description": "Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing." + "OAuth Discovery" + ] } }, - "/v1/auth/organizations/{orgId}/sso/admission": { - "post": { - "operationId": "beginOrganizationSsoAdmission", + "/v1/auth/organizations/{orgId}/connection-status": { + "get": { + "description": "Requires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization.", + "operationId": "getOrganizationConnectionStatus", "parameters": [ { "in": "path", @@ -24635,101 +25572,43 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "returnTo": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "returnTo" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationConnectionStatus" } } }, - "description": "Targeted SSO authorization URL.", + "description": "Organization mapping and current member synchronization.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -24737,150 +25616,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -24888,7 +25655,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -24936,18 +25703,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/GetOrganizationConnectionStatusForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -24985,317 +25745,77 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "409": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationConnectionNotFoundProblem" } } }, - "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", + "description": "ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "RateLimit": { + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "412": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSyncUnavailableProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -25303,144 +25823,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -25448,60 +25862,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationConnectionStatusInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -25536,9 +25906,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -25561,105 +25931,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -25667,53 +25970,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -25748,9 +26014,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -25773,150 +26039,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationConnectionStatusGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -25926,19 +26080,19 @@ "accountServiceKey": [] } ], - "summary": "Begin organization SSO admission for an existing Account", + "summary": "Read organization and own membership synchronization", "tags": [ - "Organization SSO" + "Organization Connections" ], "x-photon-mcp": { "enabled": false - }, - "description": "Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership." + } } }, - "/v1/auth/organizations/{orgId}/sso/authenticate": { + "/v1/auth/organizations/{orgId}/connection-sync/retry": { "post": { - "operationId": "beginOrganizationAuthentication", + "description": "Reconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy.", + "operationId": "retryOrganizationConnectionSync", "parameters": [ { "in": "path", @@ -25950,101 +26104,43 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "returnTo": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "returnTo" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationConnectionStatus" } } }, - "description": "Targeted SSO authorization URL.", + "description": "Current synchronization state after requesting retry.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26052,150 +26148,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26203,7 +26187,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -26251,18 +26235,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/RetryOrganizationConnectionSyncForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -26300,105 +26277,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationConnectionNotFoundProblem" } } }, - "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "description": "ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26406,211 +26316,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "412": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSyncUnavailableProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26618,144 +26355,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26763,60 +26394,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RetryOrganizationConnectionSyncInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -26851,9 +26438,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -26876,105 +26463,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -26982,53 +26502,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -27063,9 +26546,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -27088,150 +26571,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RetryOrganizationConnectionSyncGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -27241,19 +26612,19 @@ "accountServiceKey": [] } ], - "summary": "Authenticate to the current organization SSO connection", + "summary": "Retry own organization connection synchronization", "tags": [ - "Organization SSO" + "Organization Connections" ], "x-photon-mcp": { "enabled": false - }, - "description": "Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session." + } } }, - "/v1/auth/organizations/{orgId}/sso/closure-authenticate": { - "post": { - "operationId": "beginOrganizationClosureAuthentication", + "/v1/auth/organizations/{orgId}/sso": { + "get": { + "description": "Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings.", + "operationId": "getOrganizationSsoConfiguration", "parameters": [ { "in": "path", @@ -27265,101 +26636,43 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "returnTo": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "returnTo" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConfiguration" } } }, - "description": "Targeted SSO authorization URL.", + "description": "Current connection and independent local policy state.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -27367,150 +26680,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationSsoConfigurationBadRequestProblem" } } }, "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -27518,7 +26719,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -27566,18 +26767,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/GetOrganizationSsoConfigurationForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -27615,105 +26809,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } } }, "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -27721,105 +26848,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -27827,105 +26887,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetOrganizationSsoConfigurationPreconditionFailedProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -27933,144 +26926,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -28078,60 +26965,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationSsoConfigurationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -28166,9 +27009,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -28191,105 +27034,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -28297,53 +27073,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -28378,9 +27117,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -28403,150 +27142,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationSsoConfigurationGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -28556,19 +27183,17 @@ "accountServiceKey": [] } ], - "summary": "Authenticate the current Owner to inspect organization closure", + "summary": "Read organization SSO configuration", "tags": [ "Organization SSO" ], "x-photon-mcp": { "enabled": false - }, - "description": "Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization." - } - }, - "/v1/auth/organizations/{orgId}/sso/invitation": { - "post": { - "operationId": "beginInvitationSso", + } + }, + "patch": { + "description": "Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing.", + "operationId": "updateOrganizationSsoPolicy", "parameters": [ { "in": "path", @@ -28584,22 +27209,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "returnTo": { - "minLength": 1, - "type": "string" - }, - "token": { - "pattern": "^[A-Za-z0-9_-]{43}$", - "type": "string" - } - }, - "required": [ - "token", - "returnTo" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyRequest" } } }, @@ -28610,76 +27220,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConfiguration" } } }, - "description": "Invitation-bound SSO authorization URL.", + "description": "Current connection and independent local policy state.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -28687,150 +27259,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyBadRequestProblem" } } }, "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -28838,7 +27298,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -28886,18 +27346,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -28935,105 +27388,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } } }, "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -29041,105 +27427,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -29147,105 +27466,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyPreconditionFailedProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -29253,144 +27505,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -29398,60 +27544,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -29486,9 +27588,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -29511,105 +27613,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -29617,53 +27652,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -29698,9 +27696,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -29723,150 +27721,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateOrganizationSsoPolicyGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -29876,19 +27762,19 @@ "accountServiceKey": [] } ], - "summary": "Authenticate to an invitation's organization SSO connection", + "summary": "Update organization SSO policy", "tags": [ "Organization SSO" ], "x-photon-mcp": { "enabled": false - }, - "description": "Returns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation." + } } }, - "/v1/auth/organizations/{orgId}/sso/portal": { + "/v1/auth/organizations/{orgId}/sso/admission": { "post": { - "operationId": "createOrganizationSsoPortalLink", + "description": "Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership.", + "operationId": "beginOrganizationSsoAdmission", "parameters": [ { "in": "path", @@ -29904,25 +27790,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "intent": { - "default": "sso", - "enum": [ - "sso", - "domain_verification" - ], - "type": "string" - }, - "returnTo": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "returnTo" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRequest" } } }, @@ -29933,75 +27801,38 @@ "content": { "application/json": { "schema": { - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRedirect" } } }, - "description": "Short-lived provider setup link.", + "description": "Targeted SSO authorization URL.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30009,150 +27840,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationSsoAdmissionBadRequestProblem" } } }, "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30160,7 +27879,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -30208,18 +27927,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/BeginOrganizationSsoAdmissionForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -30257,105 +27969,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } } }, "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30363,105 +28008,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30469,105 +28047,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginOrganizationSsoAdmissionPreconditionFailedProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30575,144 +28086,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30720,60 +28125,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationSsoAdmissionInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -30808,9 +28169,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -30833,105 +28194,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -30939,53 +28233,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -31020,9 +28277,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -31045,150 +28302,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationSsoAdmissionGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -31198,19 +28343,19 @@ "accountServiceKey": [] } ], - "summary": "Create organization SSO setup portal", + "summary": "Begin organization SSO admission for an existing Account", "tags": [ "Organization SSO" ], "x-photon-mcp": { "enabled": false - }, - "description": "Returns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow." + } } }, - "/v1/auth/organizations/{orgId}/sso/refresh": { + "/v1/auth/organizations/{orgId}/sso/authenticate": { "post": { - "operationId": "refreshOrganizationSsoConnection", + "description": "Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session.", + "operationId": "beginOrganizationAuthentication", "parameters": [ { "in": "path", @@ -31222,162 +28367,53 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationAuthenticationRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "properties": { - "connectionChangedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "connectionGeneration": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - }, - "connectionState": { - "enum": [ - "not_configured", - "configuring", - "ready", - "error" - ], - "type": "string" - }, - "connectionType": { - "type": "string" - }, - "desiredSsoEnforced": { - "type": "boolean" - }, - "domains": { - "items": { - "properties": { - "domain": { - "type": "string" - }, - "state": { - "enum": [ - "verified", - "pending", - "failed" - ], - "type": "string" - } - }, - "required": [ - "domain", - "state" - ], - "type": "object" - }, - "type": "array" - }, - "organizationId": { - "type": "string" - }, - "policySyncStatus": { - "enum": [ - "synced", - "manual_required" - ], - "type": "string" - }, - "providerAvailable": { - "type": "boolean" - }, - "ssoEnforced": { - "type": "boolean" - }, - "ssoJitEnabled": { - "type": "boolean" - }, - "version": { - "pattern": "^(0|[1-9][0-9]{0,19})$", - "type": "string" - } - }, - "required": [ - "organizationId", - "connectionState", - "connectionGeneration", - "connectionChangedAt", - "version", - "ssoEnforced", - "desiredSsoEnforced", - "ssoJitEnabled", - "policySyncStatus" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRedirect" } } }, - "description": "Current connection and independent local policy state.", + "description": "Targeted SSO authorization URL.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -31385,150 +28421,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_RETURN_TO", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Return To", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-return-to", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationAuthenticationBadRequestProblem" } } }, "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -31536,7 +28460,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -31584,18 +28508,11 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_FORBIDDEN_403" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - } - ] + "$ref": "#/components/schemas/BeginOrganizationAuthenticationForbiddenProblem" } } }, - "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -31633,105 +28550,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Organization SSO Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } } }, "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -31739,105 +28589,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Organization SSO Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -31845,105 +28628,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ORGANIZATION_SSO_PRECONDITION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 412, - "type": "number" - }, - "title": { - "const": "Organization SSO Precondition Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/organization-sso-precondition-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginOrganizationAuthenticationPreconditionFailedProblem" } } }, - "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -31951,144 +28667,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -32096,60 +28706,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationAuthenticationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -32184,9 +28750,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -32209,105 +28775,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -32315,53 +28814,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -32396,9 +28858,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -32421,150 +28883,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginOrganizationAuthenticationGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -32574,318 +28924,379 @@ "accountServiceKey": [] } ], - "summary": "Refresh organization SSO connection", + "summary": "Authenticate to the current organization SSO connection", "tags": [ "Organization SSO" ], "x-photon-mcp": { "enabled": false - }, - "description": "Refreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body." + } } }, - "/v1/installation-requests": { + "/v1/auth/organizations/{orgId}/sso/closure-authenticate": { "post": { - "description": "Authenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required.", - "operationId": "createAppInstallationRequest", - "parameters": [], + "description": "Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization.", + "operationId": "beginOrganizationClosureAuthentication", + "parameters": [ + { + "in": "path", + "name": "orgId", + "required": true, + "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "appId": { - "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "clientAssertion": { - "maxLength": 16384, - "minLength": 1, - "type": "string" - }, - "redirectUri": { - "maxLength": 4096, - "type": "string" - }, - "state": { - "maxLength": 4096, - "type": "string" - } - }, - "required": [ - "appId", - "clientAssertion", - "redirectUri", - "state" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRequest" } } }, "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "properties": { - "appId": { - "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "appVersion": { - "pattern": "^[1-9][0-9]*$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "redirectUri": { - "maxLength": 4096, - "type": "string" - }, - "requestId": { - "pattern": "^pho_air_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "state": { - "maxLength": 4096, - "type": "string" - } - }, - "required": [ - "requestId", - "appId", - "appVersion", - "redirectUri", - "state", - "createdAt" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRedirect" } } }, - "description": "Installation request metadata. No customer credential or access is issued.", + "description": "Targeted SSO authorization URL.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/BeginOrganizationClosureAuthenticationBadRequestProblem" } + } + }, + "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "400": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginOrganizationClosureAuthenticationForbiddenProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "Link": { + "description": "Optional related resources.", "schema": { "type": "string" } }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "RateLimit": { + "description": "Optional rate limit information.", "schema": { - "type": "boolean" + "type": "string" } }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "RateLimit-Policy": { + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, - "RateLimit": { - "description": "Current rate-limit state.", + "Retry-After": { + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { "type": "string" } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + } + } + }, + "404": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } + } + }, + "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } + } + }, + "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "412": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/BeginOrganizationClosureAuthenticationPreconditionFailedProblem" } + } + }, + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "401": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "APP_INSTALLATION_ASSERTION_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 401, - "type": "number" - }, - "title": { - "const": "Invalid Installation Client Assertion", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/app-installation-assertion-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginOrganizationClosureAuthenticationInternalServerErrorProblem" } } }, - "description": "APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -32896,38 +29307,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -32941,102 +29352,59 @@ } } }, - "409": { + "502": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "APP_INSTALLATION_ASSERTION_REPLAYED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Installation Assertion Already Used", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/app-installation-assertion-replayed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "APP_INSTALLATION_CONFIG_CHANGED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Installation App Configuration Changed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/app-installation-config-changed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "APP_INSTALLATION_ASSERTION_REPLAYED: Installation Assertion Already Used; APP_INSTALLATION_CONFIG_CHANGED: Installation App Configuration Changed", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -33047,38 +29415,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -33092,1092 +29460,436 @@ } } }, - "422": { + "504": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/BeginOrganizationClosureAuthenticationGatewayTimeoutProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + } + ], + "summary": "Authenticate the current Owner to inspect organization closure", + "tags": [ + "Organization SSO" + ], + "x-photon-mcp": { + "enabled": false + } + } + }, + "/v1/auth/organizations/{orgId}/sso/disable": { + "post": { + "description": "Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run.", + "operationId": "disableOrganizationSso", + "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, + { + "in": "path", + "name": "orgId", + "required": true, + "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DisableOrganizationSsoRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/OrganizationSsoConfiguration" } + } + }, + "description": "Current connection and independent local policy state.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "502": { + "400": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DisableOrganizationSsoBadRequestProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "503": { + "401": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "504": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DisableOrganizationSsoForbiddenProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } - } - }, - "security": [], - "summary": "Request an app installation", - "tags": [ - "App Installations" - ], - "x-photon-mcp": { - "enabled": false - } - } - }, - "/v1/installation-requests/redeem": { - "post": { - "description": "The registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential.", - "operationId": "redeemAppInstallationDelivery", - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "appId": { - "pattern": "^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "clientAssertion": { - "maxLength": 16384, - "minLength": 1, - "type": "string" - }, - "code": { - "pattern": "^[A-Za-z0-9_-]{43}$", - "type": "string" - } - }, - "required": [ - "appId", - "clientAssertion", - "code" - ], - "type": "object" - } - } }, - "required": true - }, - "responses": { - "200": { + "404": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "clientId": { - "maxLength": 256, - "pattern": "^client_[A-Za-z0-9]+$", - "type": "string" - }, - "clientSecret": { - "maxLength": 8192, - "minLength": 1, - "type": "string" - }, - "installationId": { - "pattern": "^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "const": "created", - "type": "string" - } - }, - "required": [ - "installationId", - "status", - "clientId", - "clientSecret" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "installationId": { - "pattern": "^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "delivery_consumed", - "recovery_required", - "revocation_pending", - "revoked" - ], - "type": "string" - } - }, - "required": [ - "installationId", - "status" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } } }, - "description": "First successful delivery or metadata-only operation status.", + "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "400": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "401": { + "412": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "APP_INSTALLATION_ASSERTION_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 401, - "type": "number" - }, - "title": { - "const": "Invalid Installation Client Assertion", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/app-installation-assertion-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DisableOrganizationSsoPreconditionFailedProblem" } } }, - "description": "APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "APP_INSTALLATION_DELIVERY_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Installation Delivery Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/app-installation-delivery-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DisableOrganizationSsoUnprocessableEntityProblem" } } }, - "description": "APP_INSTALLATION_DELIVERY_UNAVAILABLE: Installation Delivery Unavailable", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/DisableOrganizationSsoInternalServerErrorProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -34188,38 +29900,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -34237,105 +29949,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -34343,53 +29988,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -34400,38 +30008,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -34449,465 +30057,118 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DisableOrganizationSsoGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } }, - "security": [], - "summary": "Redeem an approved installation credential", + "security": [ + { + "accountServiceKey": [] + } + ], + "summary": "Turn organization SSO off", "tags": [ - "App Installations" + "Organization SSO" ], "x-photon-mcp": { "enabled": false } } }, - "/v1/organizations/{organizationId}/billing": { - "get": { - "operationId": "getOrganizationBillingOverview", + "/v1/auth/organizations/{orgId}/sso/invitation": { + "post": { + "description": "Returns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation.", + "operationId": "beginInvitationSso", "parameters": [ { "in": "path", - "name": "organizationId", + "name": "orgId", "required": true, "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BeginInvitationSsoRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "entitlementsVersion": { - "description": "Bumps on every entitlement change for the organization.", - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "subscription": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "cancelsAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the subscription will end, ISO 8601." - }, - "currentPeriodEnd": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "End of the current billing period, ISO 8601." - }, - "entitlements": { - "items": { - "additionalProperties": false, - "properties": { - "featureKey": { - "description": "Feature gate key.", - "type": "string" - }, - "value": { - "description": "Gate value as a string.", - "type": "string" - } - }, - "required": [ - "featureKey", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "fixedCharges": { - "description": "Fixed charges defined by the organization's current plan. Quantity is the plan default.", - "items": { - "additionalProperties": false, - "properties": { - "chargeModel": { - "enum": [ - "graduated", - "standard", - "volume" - ], - "type": "string" - }, - "displayName": { - "type": "string" - }, - "fixedChargeCode": { - "type": "string" - }, - "payInAdvance": { - "type": "boolean" - }, - "pricing": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "tiers": { - "items": { - "additionalProperties": false, - "properties": { - "flatAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fromUnit": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "perUnitAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "toUnit": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "flatAmount", - "fromUnit", - "perUnitAmount", - "toUnit" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "amount", - "tiers" - ], - "type": "object" - }, - "prorated": { - "type": "boolean" - }, - "quantity": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "chargeModel", - "displayName", - "fixedChargeCode", - "payInAdvance", - "pricing", - "prorated", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "planCode": { - "description": "The organization's plan; display only.", - "type": "string" - }, - "status": { - "description": "State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.", - "enum": [ - "active", - "past_due", - "terminated" - ], - "type": "string", - "x-enumDescriptions": { - "active": "Subscribed and in good standing, on a free or a paid plan.", - "past_due": "The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.", - "terminated": "The subscription is gone. Not reported by the overview, which omits categories holding nothing." - } - } - }, - "required": [ - "cancelsAt", - "currentPeriodEnd", - "entitlements", - "fixedCharges", - "planCode", - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "The organization-owned subscription, or null when billing was never opened or has ended." - } - }, - "required": [ - "entitlementsVersion", - "subscription" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationAuthenticationRedirect" } } }, - "description": "The organization-owned plan and its resolved entitlements.", + "description": "Invitation-bound SSO authorization URL.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -34915,117 +30176,98 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginInvitationSsoBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "401": { + "403": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/BeginInvitationSsoForbiddenProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Link": { "description": "Optional related resources.", @@ -35051,12 +30293,6 @@ "type": "string" } }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, "X-Request-ID": { "description": "Application request identifier.", "schema": { @@ -35065,263 +30301,120 @@ } } }, - "403": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } + } + }, + "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } + } + }, + "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "412": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BeginInvitationSsoPreconditionFailedProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition", + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -35329,144 +30422,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -35474,60 +30461,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginInvitationSsoInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -35562,9 +30505,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -35587,105 +30530,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -35693,53 +30569,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -35774,9 +30613,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -35799,150 +30638,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BeginInvitationSsoGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -35950,128 +30677,79 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] - }, - { - "oauth2": [ - "billing:read" - ] } ], - "summary": "Get the organization's billing overview", + "summary": "Authenticate to an invitation's organization SSO connection", "tags": [ - "Organization Billing" - ], - "x-required-permissions": [ - "billing:read" + "Organization SSO" ], - "description": "Returns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan." + "x-photon-mcp": { + "enabled": false + } } }, - "/v1/organizations/{organizationId}/billing/checkout": { + "/v1/auth/organizations/{orgId}/sso/portal": { "post": { - "operationId": "createOrganizationPaymentMethodCheckout", + "description": "Returns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow.", + "operationId": "createOrganizationSsoPortalLink", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", - "name": "organizationId", + "name": "orgId", "required": true, "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "checkoutUrl": { - "description": "Hosted Stripe page; send the user here.", - "format": "uri", - "type": "string" - } - }, - "required": [ - "checkoutUrl" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse" } } }, - "description": "Hosted card-capture page for the organization.", + "description": "Short-lived provider setup link.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -36079,191 +30757,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -36271,7 +30796,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -36319,153 +30844,80 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkForbiddenProblem" } - }, + } + }, + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "format": "date-time", "type": "string" } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + } + } + }, + "404": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } + } + }, + "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -36473,295 +30925,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition", + "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "412": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkPreconditionFailedProblem" } } + }, + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -36769,60 +31042,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -36857,9 +31086,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -36882,105 +31111,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -36988,98 +31150,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYMENT_PROVIDER_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Payment Provider Not Ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payment-provider-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; PAYMENT_PROVIDER_NOT_READY: Payment Provider Not Ready\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -37114,9 +31194,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -37139,150 +31219,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationSsoPortalLinkGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -37292,28 +31260,26 @@ "accountServiceKey": [] } ], - "summary": "Get a payment-method checkout URL for the organization", + "summary": "Create organization SSO setup portal", "tags": [ - "Organization Billing" + "Organization SSO" ], "x-photon-mcp": { "enabled": false - }, - "x-required-permissions": [ - "billing:manage" - ], - "description": "Returns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward." + } } }, - "/v1/organizations/{organizationId}/billing/invoices": { - "get": { - "operationId": "listInvoices", + "/v1/auth/organizations/{orgId}/sso/refresh": { + "post": { + "description": "Refreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body.", + "operationId": "refreshOrganizationSsoConnection", "parameters": [ { "in": "path", - "name": "organizationId", + "name": "orgId", "required": true, "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } } @@ -37323,193 +31289,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "invoices": { - "items": { - "additionalProperties": false, - "properties": { - "currency": { - "description": "ISO currency code.", - "type": "string" - }, - "invoiceId": { - "description": "Invoice id.", - "type": "string" - }, - "issuedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Issue date, ISO 8601." - }, - "kind": { - "description": "What produced the invoice.", - "enum": [ - "subscription", - "one_off", - "credit" - ], - "type": "string" - }, - "number": { - "description": "Human invoice number.", - "type": "string" - }, - "paymentStatus": { - "description": "Provider-neutral payment status.", - "enum": [ - "pending", - "succeeded", - "failed" - ], - "type": "string" - }, - "pdfUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Downloadable PDF link." - }, - "subjects": { - "description": "Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges.", - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "projectId": { - "type": "string" - }, - "type": { - "const": "project", - "type": "string" - } - }, - "required": [ - "projectId", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "organizationId": { - "type": "string" - }, - "type": { - "const": "organization", - "type": "string" - } - }, - "required": [ - "organizationId", - "type" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "totalCents": { - "description": "Invoice total in cents.", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "currency", - "invoiceId", - "issuedAt", - "kind", - "number", - "paymentStatus", - "pdfUrl", - "subjects", - "totalCents" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "invoices" - ], - "type": "object" - } - } - }, - "description": "The organization's invoices, newest first.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoConfiguration" } + } + }, + "description": "Current connection and independent local policy state.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -37517,105 +31328,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RefreshOrganizationSsoConnectionBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -37623,7 +31367,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -37671,153 +31415,80 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/RefreshOrganizationSsoConnectionForbiddenProblem" } - }, + } + }, + "description": "FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "format": "date-time", "type": "string" } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + } + } + }, + "404": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OrganizationSsoNotFoundProblem" } + } + }, + "description": "ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -37825,250 +31496,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OrganizationSsoConflictProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition", + "description": "ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "412": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/RefreshOrganizationSsoConnectionPreconditionFailedProblem" } } + }, + "description": "ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -38076,60 +31613,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RefreshOrganizationSsoConnectionInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -38164,9 +31657,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -38189,105 +31682,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -38295,53 +31721,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -38376,9 +31765,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -38401,150 +31790,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RefreshOrganizationSsoConnectionGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -38552,185 +31829,69 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] - }, - { - "oauth2": [ - "billing:read" - ] } ], - "summary": "List invoices", + "summary": "Refresh organization SSO connection", "tags": [ - "Organization Billing" - ], - "x-required-permissions": [ - "billing:read" + "Organization SSO" ], - "description": "Returns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription." + "x-photon-mcp": { + "enabled": false + } } }, - "/v1/organizations/{organizationId}/billing/payment-method": { - "get": { - "operationId": "getOrganizationPaymentMethod", - "parameters": [ - { - "in": "path", - "name": "organizationId", - "required": true, - "schema": { - "type": "string" + "/v1/installation-requests": { + "post": { + "description": "Authenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required.", + "operationId": "createAppInstallationRequest", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAppInstallationRequestRequest" + } } - } - ], + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cardOnFile": { - "description": "True once a card is captured for the payer.", - "type": "boolean" - }, - "paymentMethod": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "brand": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Card network brand, e.g. visa." - }, - "expiresMonth": { - "anyOf": [ - { - "maximum": 12, - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Card expiration month." - }, - "expiresYear": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Four-digit card expiration year." - }, - "last4": { - "anyOf": [ - { - "pattern": "^\\d{4}$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Last four card digits." - } - }, - "required": [ - "brand", - "expiresMonth", - "expiresYear", - "last4" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Metadata for the default card, or null." - } - }, - "required": [ - "cardOnFile", - "paymentMethod" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAppInstallationRequestResponse" } } }, - "description": "Whether the organization has a captured card and its metadata.", + "description": "Installation request metadata. No customer credential or access is issued.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -38738,671 +31899,494 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AppInstallationAssertionInvalidProblem" } + } + }, + "description": "APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CreateAppInstallationRequestConflictProblem" } + } + }, + "description": "APP_INSTALLATION_ASSERTION_REPLAYED: Installation Assertion Already Used; APP_INSTALLATION_CONFIG_CHANGED: Installation App Configuration Changed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "502": { + "content": { + "application/problem+json": { "schema": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/UpstreamFailureProblem" } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "504": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/CreateAppInstallationRequestGatewayTimeoutProblem" } } + }, + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [], + "summary": "Request an app installation", + "tags": [ + "App Installations" + ], + "x-photon-mcp": { + "enabled": false + } + } + }, + "/v1/installation-requests/redeem": { + "post": { + "description": "The registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential.", + "operationId": "redeemAppInstallationDelivery", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedeemAppInstallationDeliveryRequest" + } } }, - "401": { + "required": true + }, + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/RedeemAppInstallationDeliveryResponse" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "First successful delivery or metadata-only operation status.", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "400": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/InvalidArgumentProblem" } + } + }, + "description": "INVALID_ARGUMENT: Invalid Argument", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "401": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AppInstallationAssertionInvalidProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition", + "description": "APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/AppInstallationDeliveryUnavailableProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "APP_INSTALLATION_DELIVERY_UNAVAILABLE: Installation Delivery Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "422": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -39410,105 +32394,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -39516,105 +32433,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -39622,193 +32472,57 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RedeemAppInstallationDeliveryGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } }, - "security": [ - { - "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] - }, - { - "oauth2": [ - "billing:read" - ] - } - ], - "summary": "Check the organization for a card on file", + "security": [], + "summary": "Redeem an approved installation credential", "tags": [ - "Organization Billing" - ], - "x-required-permissions": [ - "billing:read" + "App Installations" ], - "description": "Reports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session." + "x-photon-mcp": { + "enabled": false + } } }, - "/v1/organizations/{organizationId}/billing/projects/{projectId}/cancel": { - "post": { - "operationId": "cancelSubscription", + "/v1/organizations/{organizationId}/billing": { + "get": { + "description": "Returns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan.", + "operationId": "getOrganizationBillingOverview", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", "name": "organizationId", @@ -39816,132 +32530,45 @@ "schema": { "type": "string" } - }, - { - "description": "The project being billed.", - "in": "path", - "name": "projectId", - "required": true, - "schema": { - "type": "string" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - } - }, - "required": [ - "category" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellationScheduled": { - "description": "False when the category held no active subscription.", - "type": "boolean" - }, - "cancelsAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "End of the final paid period, ISO 8601." - }, - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - } - }, - "required": [ - "cancellationScheduled", - "cancelsAt", - "category" - ], - "type": "object" + "$ref": "#/components/schemas/GetOrganizationBillingOverviewResponse" } } }, - "description": "The category remains active through cancelsAt, then stops renewing.", + "description": "The organization-owned plan and its resolved entitlements.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -39949,191 +32576,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -40141,7 +32615,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -40189,101 +32663,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetOrganizationBillingOverviewForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -40318,9 +32707,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -40343,150 +32732,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_REQUEST_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Idempotency Request In Progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-request-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", + "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -40494,189 +32771,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -40684,60 +32810,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationBillingOverviewInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -40772,9 +32854,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -40797,105 +32879,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -40903,98 +32918,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Idempotency Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -41029,9 +32962,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -41054,150 +32987,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationBillingOverviewGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -41205,30 +33026,35 @@ "security": [ { "accountServiceKey": [] + }, + { + "serviceIdentityBearer": [] + }, + { + "oauth2": [ + "billing:read" + ] } ], - "summary": "Cancel a category at the end of its billing period", + "summary": "Get the organization's billing overview", "tags": [ - "Project Billing" + "Organization Billing" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ - "billing:manage" - ], - "description": "Schedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization." + "billing:read" + ] } }, - "/v1/organizations/{organizationId}/billing/projects/{projectId}/purchase": { + "/v1/organizations/{organizationId}/billing/checkout": { "post": { - "operationId": "changePlan", + "description": "Returns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward.", + "operationId": "createOrganizationPaymentMethodCheckout", "parameters": [ { "description": "Identifies one logical mutation across retries.", "in": "header", "name": "Idempotency-Key", - "required": true, + "required": false, "schema": { "maxLength": 255, "minLength": 1, @@ -41243,405 +33069,45 @@ "schema": { "type": "string" } - }, - { - "description": "The project being billed.", - "in": "path", - "name": "projectId", - "required": true, - "schema": { - "type": "string" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - }, - "planCode": { - "description": "Plan to subscribe to, e.g. analytics_pro.", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "category", - "planCode" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "failure": { - "type": "null" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "result": { - "additionalProperties": false, - "properties": { - "type": { - "const": "version", - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "type", - "version" - ], - "type": "object" - }, - "status": { - "const": "succeeded", - "description": "Terminal. The result is authoritative.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "failure": { - "additionalProperties": false, - "properties": { - "code": { - "description": "Stable provider-neutral failure category.", - "enum": [ - "payment_method_required", - "payment_failed", - "not_provisioned", - "invalid_target", - "internal" - ], - "type": "string" - }, - "detail": { - "anyOf": [ - { - "enum": [ - "cancellation_scheduled", - "feature_not_sold_by_plan", - "feature_not_found", - "payment_timeout", - "plan_activation_timeout", - "plan_not_found", - "quantity_out_of_range", - "target_rejected" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "retryable": { - "type": "boolean" - } - }, - "required": [ - "code", - "detail", - "retryable" - ], - "type": "object" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "result": { - "type": "null" - }, - "status": { - "const": "failed", - "description": "Terminal. Failure contains a stable code and retryability.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" - } - ] - } - } - }, - "description": "The idempotency key resolved to an operation that is already terminal.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "202": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "failure": { - "type": "null" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "type": "null" - }, - "result": { - "type": "null" - }, - "status": { - "const": "pending", - "description": "Accepted and still executing. Poll the operation route.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse" } } }, - "description": "Plan change accepted. Poll the returned operation until it succeeds or fails.", + "description": "Hosted card-capture page for the organization.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical billing operation to poll for completion.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum seconds to wait before polling again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -41649,191 +33115,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutBadRequestProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -41841,7 +33154,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -41889,101 +33202,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -42018,9 +33246,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -42043,256 +33271,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_REQUEST_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Idempotency Request In Progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-request-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "413": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -42300,189 +33310,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -42490,60 +33349,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -42578,9 +33393,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -42603,105 +33418,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -42709,98 +33457,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Idempotency Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; PAYMENT_PROVIDER_NOT_READY: Payment Provider Not Ready\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -42835,9 +33501,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -42860,150 +33526,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -43013,35 +33567,23 @@ "accountServiceKey": [] } ], - "summary": "Purchase or change a category's plan", + "summary": "Get a payment-method checkout URL for the organization", "tags": [ - "Project Billing" + "Organization Billing" ], "x-photon-mcp": { "enabled": false }, "x-required-permissions": [ "billing:manage" - ], - "description": "Purchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization." + ] } }, - "/v1/organizations/{organizationId}/billing/projects/{projectId}/resume": { - "post": { - "operationId": "resumeSubscription", + "/v1/organizations/{organizationId}/billing/invoices": { + "get": { + "description": "Returns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription.", + "operationId": "listInvoices", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": false, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", "name": "organizationId", @@ -43049,120 +33591,45 @@ "schema": { "type": "string" } - }, - { - "description": "The project being billed.", - "in": "path", - "name": "projectId", - "required": true, - "schema": { - "type": "string" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - } - }, - "required": [ - "category" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - }, - "resumed": { - "description": "False when the subscription was not scheduled to cancel.", - "type": "boolean" - } - }, - "required": [ - "category", - "resumed" - ], - "type": "object" + "$ref": "#/components/schemas/ListInvoicesResponse" } } }, - "description": "Removes a scheduled cancellation so the category renews normally.", + "description": "A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -43170,191 +33637,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -43362,7 +33676,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -43410,101 +33724,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListInvoicesForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -43539,9 +33768,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -43564,150 +33793,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_REQUEST_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Idempotency Request In Progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-request-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, - "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", + "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -43715,189 +33832,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -43905,60 +33871,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListInvoicesInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -43993,9 +33915,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -44018,105 +33940,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -44124,98 +33979,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Idempotency Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -44250,9 +34023,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -44275,150 +34048,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListInvoicesGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -44426,37 +34087,30 @@ "security": [ { "accountServiceKey": [] + }, + { + "serviceIdentityBearer": [] + }, + { + "oauth2": [ + "billing:read" + ] } ], - "summary": "Resume a category scheduled for cancellation", + "summary": "List invoices", "tags": [ - "Project Billing" + "Organization Billing" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ - "billing:manage" - ], - "description": "Removes a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization." + "billing:read" + ] } }, - "/v1/organizations/{organizationId}/billing/setup-intent": { - "post": { - "operationId": "createOrganizationSetupIntent", + "/v1/organizations/{organizationId}/billing/payment-method": { + "get": { + "description": "Reports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session.", + "operationId": "getOrganizationPaymentMethod", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", "name": "organizationId", @@ -44471,84 +34125,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "clientSecret": { - "description": "Stripe SetupIntent client secret.", - "minLength": 1, - "type": "string" - }, - "publishableKey": { - "description": "Publishable key for the Stripe account backing billing.", - "pattern": "^pk_.*", - "type": "string" - } - }, - "required": [ - "clientSecret", - "publishableKey" - ], - "type": "object" + "$ref": "#/components/schemas/GetOrganizationPaymentMethodResponse" } } }, - "description": "Stripe Elements configuration for capturing the organization's card.", + "description": "Whether the organization has a captured card and its metadata.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -44556,191 +34164,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -44748,7 +34203,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -44796,101 +34251,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetOrganizationPaymentMethodForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -44925,9 +34295,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -44950,105 +34320,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -45056,189 +34359,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -45246,60 +34398,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationPaymentMethodInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -45334,9 +34442,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -45359,105 +34467,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -45465,53 +34506,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -45546,9 +34550,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -45571,150 +34575,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOrganizationPaymentMethodGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -45722,281 +34614,107 @@ "security": [ { "accountServiceKey": [] - } - ], - "summary": "Create a SetupIntent for an in-app card capture", - "tags": [ - "Organization Billing" - ], - "x-photon-mcp": { - "enabled": false - }, - "x-required-permissions": [ - "billing:manage" - ], - "description": "Creates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret." - } - }, - "/v1/organizations/{organizationId}/projects": { - "get": { - "operationId": "listProjects", - "parameters": [ - { - "in": "path", - "name": "organizationId", - "required": true, - "schema": { - "type": "string" - } }, { - "in": "query", - "name": "createdAfter", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } + "serviceIdentityBearer": [] }, { - "in": "query", - "name": "createdBefore", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, + "oauth2": [ + "billing:read" + ] + } + ], + "summary": "Check the organization for a card on file", + "tags": [ + "Organization Billing" + ], + "x-required-permissions": [ + "billing:read" + ] + } + }, + "/v1/organizations/{organizationId}/billing/projects/{projectId}/cancel": { + "post": { + "description": "Schedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization.", + "operationId": "cancelSubscription", + "parameters": [ { - "in": "query", - "name": "query", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": false, "schema": { + "maxLength": 255, "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, { - "in": "query", - "name": "pageSize", + "in": "path", + "name": "organizationId", + "required": true, "schema": { - "maximum": 100, - "minimum": 1, - "type": "integer" + "type": "string" } }, { - "in": "query", - "name": "pageToken", + "description": "The project being billed.", + "in": "path", + "name": "projectId", + "required": true, "schema": { - "maxLength": 2048, - "minLength": 1, "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CancelSubscriptionRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "nextPageToken": { - "type": "string" - }, - "projects": { - "items": { - "additionalProperties": false, - "properties": { - "agentProfile": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" - }, - "billingInitialization": { - "enum": [ - "pending", - "retry_required", - "completed", - "unknown" - ], - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorKind": { - "anyOf": [ - { - "enum": [ - "account", - "service_identity" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "agentProfile", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "projects" - ], - "type": "object" + "$ref": "#/components/schemas/CancelSubscriptionResponse" } } }, - "description": "One page of active projects in the organization.", + "description": "The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -46004,105 +34722,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CancelSubscriptionBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -46110,7 +34761,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -46158,101 +34809,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CancelSubscriptionForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -46287,9 +34853,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -46308,244 +34874,98 @@ } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/CancelSubscriptionConflictProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/CancelSubscriptionUnprocessableEntityProblem" } } }, - "description": "INTERNAL_ERROR: Internal Server Error", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "502": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CancelSubscriptionInternalServerErrorProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -46556,38 +34976,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -46601,57 +35021,59 @@ } } }, + "502": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamFailureProblem" + } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CancelSubscriptionServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -46686,9 +35108,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -46711,150 +35133,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CancelSubscriptionGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -46862,23 +35172,24 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] } ], - "summary": "List accessible projects", + "summary": "Cancel a category at the end of its billing period", "tags": [ - "Projects" + "Project Billing" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "organization:read_projects" - ], - "description": "Returns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter." - }, + "billing:manage" + ] + } + }, + "/v1/organizations/{organizationId}/billing/projects/{projectId}/purchase": { "post": { - "description": "Creates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project.", - "operationId": "createProject", + "description": "Purchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization.", + "operationId": "changePlan", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -46899,224 +35210,114 @@ "schema": { "type": "string" } + }, + { + "description": "The project being billed.", + "in": "path", + "name": "projectId", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "slug": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", - "type": "string" - } - }, - "required": [ - "name", - "slug" - ], - "type": "object" + "$ref": "#/components/schemas/ChangePlanRequest" } } }, "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "agentProfile": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" - }, - "billingInitialization": { - "enum": [ - "pending", - "retry_required", - "completed", - "unknown" - ], - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorKind": { - "anyOf": [ - { - "enum": [ - "account", - "service_identity" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "agentProfile", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/TerminalBillingOperation" } } }, - "description": "The created project.", + "description": "The idempotency key resolved to an operation that is already terminal.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "202": { + "content": { + "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/PendingBillingOperation" } + } + }, + "description": "Plan change accepted. Poll the returned operation until it succeeds or fails.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical billing operation to poll for completion.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum seconds to wait before polling again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -47124,191 +35325,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ChangePlanBadRequestProblem" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -47316,7 +35364,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -47364,101 +35412,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ChangePlanForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -47493,9 +35456,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -47518,108 +35481,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "SLUG_TAKEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "suggestion": { - "type": "string" - }, - "title": { - "const": "Slug Already Taken", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/slug-taken", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ChangePlanConflictProblem" } } }, - "description": "SLUG_TAKEN: Slug Already Taken", + "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -47627,105 +35520,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -47733,189 +35559,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ChangePlanUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -47923,95 +35598,16 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - } - } - }, - "description": "INTERNAL_ERROR: Internal Server Error", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } - }, - "502": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ChangePlanInternalServerErrorProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -48022,38 +35618,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -48067,57 +35663,59 @@ } } }, + "502": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamFailureProblem" + } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ChangePlanServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -48152,9 +35750,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -48177,150 +35775,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ChangePlanGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -48328,24 +35814,37 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] } ], - "summary": "Create a project", + "summary": "Purchase or change a category's plan", "tags": [ - "Projects" + "Project Billing" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "organization:create_project" + "billing:manage" ] } }, - "/v1/organizations/{organizationId}/projects/closure-status": { - "get": { - "operationId": "getProjectClosureStatus", + "/v1/organizations/{organizationId}/billing/projects/{projectId}/resume": { + "post": { + "description": "Removes a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization.", + "operationId": "resumeSubscription", "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": false, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, { "in": "path", "name": "organizationId", @@ -48355,7 +35854,8 @@ } }, { - "in": "query", + "description": "The project being billed.", + "in": "path", "name": "projectId", "required": true, "schema": { @@ -48363,132 +35863,53 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResumeSubscriptionRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "properties": { - "deletionOperationId": { - "anyOf": [ - { - "pattern": "^pho_opr_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "domains": { - "items": { - "properties": { - "blockers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "domain": { - "enum": [ - "projects", - "billing", - "platforms", - "call_registry" - ], - "type": "string" - }, - "ready": { - "type": "boolean" - } - }, - "required": [ - "blockers", - "domain", - "ready" - ], - "type": "object" - }, - "type": "array" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "ready": { - "type": "boolean" - } - }, - "required": [ - "deletionOperationId", - "domains", - "organizationId", - "projectId", - "ready" - ], - "type": "object" + "$ref": "#/components/schemas/ResumeSubscriptionResponse" } } }, - "description": "Current cleanup and settlement evidence. Project deletion alone does not establish readiness.", + "description": "Removes a scheduled cancellation so the category renews normally.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -48496,105 +35917,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ResumeSubscriptionBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -48602,7 +35956,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -48650,101 +36004,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ResumeSubscriptionForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -48779,9 +36048,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -48800,109 +36069,42 @@ } } }, - "404": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ResumeSubscriptionConflictProblem" } } }, - "description": "PROJECT_NOT_FOUND: Project Not Found", + "description": "FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -48910,144 +36112,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ResumeSubscriptionUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -49055,39 +36151,66 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/ResumeSubscriptionInternalServerErrorProblem" } } }, - "description": "INTERNAL_ERROR: Internal Server Error", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, "Link": { - "description": "Optional related resources.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Optional rate limit information.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "schema": { + "type": "string" + } + }, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Application request identifier.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -49097,105 +36220,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -49203,53 +36259,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ResumeSubscriptionServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -49284,9 +36303,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -49309,150 +36328,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResumeSubscriptionGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -49460,57 +36367,42 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] } ], - "summary": "Read project closure progress", + "summary": "Resume a category scheduled for cancellation", "tags": [ - "Projects" + "Project Billing" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "organization:read_projects" - ], - "description": "Returns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion." + "billing:manage" + ] } }, - "/v1/organizations/{organizationId}/projects/count": { - "get": { - "description": "Counts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged.", - "operationId": "countProjects", + "/v1/organizations/{organizationId}/billing/setup-intent": { + "post": { + "description": "Creates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret.", + "operationId": "createOrganizationSetupIntent", "parameters": [ { - "in": "path", - "name": "organizationId", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", "required": true, "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, { - "in": "query", - "name": "createdAfter", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - { - "in": "query", - "name": "createdBefore", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - { - "in": "query", - "name": "query", + "in": "path", + "name": "organizationId", + "required": true, "schema": { - "minLength": 1, "type": "string" } } @@ -49520,78 +36412,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "count": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "count" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOrganizationSetupIntentResponse" } } }, - "description": "The number of matching projects.", + "description": "Payment-provider client configuration (client secret and publishable key) for capturing the organization's card.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -49599,105 +36451,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOrganizationSetupIntentBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -49705,7 +36490,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -49753,101 +36538,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateOrganizationSetupIntentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -49882,9 +36582,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -49903,244 +36603,98 @@ } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/CreateOrganizationSetupIntentUnprocessableEntityProblem" } } }, - "description": "INTERNAL_ERROR: Internal Server Error", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "502": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOrganizationSetupIntentInternalServerErrorProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -50151,38 +36705,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -50196,57 +36750,59 @@ } } }, + "502": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamFailureProblem" + } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -50281,9 +36837,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -50306,150 +36862,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateOrganizationSetupIntentGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -50457,24 +36901,24 @@ "security": [ { "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] } ], - "summary": "Count accessible projects", + "summary": "Create a SetupIntent for an in-app card capture", "tags": [ - "Projects" + "Organization Billing" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "organization:read_projects" + "billing:manage" ] } }, - "/v1/organizations/{organizationId}/projects/slug-availability": { + "/v1/organizations/{organizationId}/projects": { "get": { - "description": "Reports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason.", - "operationId": "checkProjectSlugAvailability", + "description": "Returns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter.", + "operationId": "listProjects", "parameters": [ { "in": "path", @@ -50486,12 +36930,45 @@ }, { "in": "query", - "name": "slug", - "required": true, + "name": "createdAfter", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + { + "in": "query", + "name": "createdBefore", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + { + "in": "query", + "name": "query", "schema": { - "maxLength": 63, "minLength": 1, - "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", + "type": "string" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + { + "in": "query", + "name": "pageToken", + "schema": { + "maxLength": 2048, + "minLength": 1, "type": "string" } } @@ -50501,115 +36978,38 @@ "content": { "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "available": { - "const": true, - "type": "boolean" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "available", - "slug" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "available": { - "const": false, - "type": "boolean" - }, - "reason": { - "enum": [ - "reserved", - "retired", - "taken", - "too_short" - ], - "type": "string" - }, - "slug": { - "type": "string" - }, - "suggestion": { - "type": "string" - } - }, - "required": [ - "available", - "reason", - "slug" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProjectPage" } } }, - "description": "Whether the slug can be allocated, and why not.", + "description": "One page of active projects in the organization.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -50617,105 +37017,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -50723,7 +37056,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -50771,101 +37104,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListProjectsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -50900,9 +37148,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -50925,144 +37173,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -51070,7 +37212,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -51112,563 +37254,55 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "503": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "504": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } - } - } - }, - "security": [ - { - "accountServiceKey": [] - }, - { - "serviceIdentityBearer": [] - } - ], - "summary": "Check slug availability", - "tags": [ - "Projects" - ], - "x-required-permissions": [ - "organization:create_project" - ] - } - }, - "/v1/projects/{id}/attachments": { - "get": { - "description": "Lists the Project's Attachment metadata, with optional time filters.", - "operationId": "listAttachments", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - } - }, - { - "description": "Exclusive upper bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.", - "in": "query", - "name": "createdBefore", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Inclusive lower bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.", - "in": "query", - "name": "createdSince", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Direction along orderBy; desc, the default, is newest first", - "in": "query", - "name": "order", - "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" - } - }, - { - "description": "Sort timestamp; defaults to the filtered timestamp, otherwise created_at. Must match the time bounds.", - "in": "query", - "name": "orderBy", - "schema": { - "enum": [ - "created_at", - "updated_at" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "pattern": "^[0-9]+$", - "type": "string" - } - }, - { - "description": "Token from nextPageToken. Keep the same Project and query.", - "in": "query", - "name": "pageToken", - "schema": { - "maxLength": 4096, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$", - "type": "string" - } - }, - { - "description": "Exclusive upper bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.", - "in": "query", - "name": "updatedBefore", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - }, - { - "description": "Inclusive lower bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.", - "in": "query", - "name": "updatedSince", - "schema": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - } - } - ], - "responses": { - "200": { + } + }, + "503": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "items": { - "items": { - "additionalProperties": false, - "properties": { - "contentType": { - "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - }, - "filename": { - "minLength": 1, - "type": "string" - }, - "id": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "metadata": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "sizeBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - } - }, - "required": [ - "contentType", - "createdAt", - "id", - "projectId", - "sizeBytes", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Continue with this token, even if items is empty. Omitted when no more pages remain.", - "maxLength": 4096, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$", - "type": "string" - } - }, - "required": [ - "items" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "A page of Project Attachments in the requested order.", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -51679,38 +37313,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -51724,11 +37358,181 @@ } } }, + "504": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ListProjectsGatewayTimeoutProblem" + } + } + }, + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "serviceIdentityBearer": [] + } + ], + "summary": "List accessible projects", + "tags": [ + "Projects" + ], + "x-required-permissions": [ + "organization:read_projects" + ] + }, + "post": { + "description": "Creates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project.", + "operationId": "createProject", + "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, + { + "in": "path", + "name": "organizationId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Project" + } + } + }, + "description": "The created project.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/CreateProjectBadRequestProblem" + } + } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -51776,101 +37580,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateProjectForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -51905,9 +37624,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -51926,259 +37645,160 @@ } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/SlugTakenProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "SLUG_TAKEN: Slug Already Taken", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "413": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/CreateProjectUnprocessableEntityProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "500": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/InternalErrorProblem" } - }, + } + }, + "description": "INTERNAL_ERROR: Internal Server Error", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -52188,105 +37808,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -52294,53 +37847,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -52375,9 +37891,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -52400,150 +37916,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateProjectGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -52553,310 +37957,77 @@ "accountServiceKey": [] }, { - "projectApiKey": [] + "serviceIdentityBearer": [] } ], - "summary": "List Project Attachments", + "summary": "Create a project", "tags": [ - "Attachments" + "Projects" ], "x-required-permissions": [ - "project:read" + "organization:create_project" ] - }, - "post": { - "description": "Uploads a file and returns its Attachment once ready to download.", - "operationId": "uploadAttachment", + } + }, + "/v1/organizations/{organizationId}/projects/closure-status": { + "get": { + "description": "Returns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion.", + "operationId": "getProjectClosureStatus", "parameters": [ { "in": "path", - "name": "id", - "required": true, - "schema": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - } - }, - { - "in": "header", - "name": "content-length", - "required": true, - "schema": { - "pattern": "^[1-9][0-9]*$", - "type": "string" - } - }, - { - "in": "header", - "name": "content-type", + "name": "organizationId", "required": true, "schema": { - "maxLength": 512, "type": "string" } }, { - "description": "Reuse the same key and request for retries.", - "in": "header", - "name": "idempotency-key", + "in": "query", + "name": "projectId", "required": true, "schema": { - "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } } ], - "requestBody": { - "content": { - "multipart/related": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length.", - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "contentType": { - "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - }, - "filename": { - "minLength": 1, - "type": "string" - }, - "id": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "metadata": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "sizeBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - } - }, - "required": [ - "contentType", - "createdAt", - "id", - "projectId", - "sizeBytes", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The attachment upload had already been committed.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "201": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "contentType": { - "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - }, - "filename": { - "minLength": 1, - "type": "string" - }, - "id": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "metadata": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "sizeBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - } - }, - "required": [ - "contentType", - "createdAt", - "id", - "projectId", - "sizeBytes", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/GetProjectClosureStatusResponse" } } }, - "description": "The attachment was uploaded and committed.", + "description": "Current cleanup and settlement evidence. Project deletion alone does not establish readiness.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical resource URL of the Attachment.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -52864,150 +38035,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "HTTP_ERROR", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Request Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/http-error", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ATTACHMENT_REQUEST", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Attachment Request", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-attachment-request", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "HTTP_ERROR: Request Failed; INVALID_ATTACHMENT_REQUEST: Invalid Attachment Request", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -53015,7 +38074,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -53063,101 +38122,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetProjectClosureStatusForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -53192,9 +38166,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -53213,208 +38187,179 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ATTACHMENT_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Attachment Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/attachment-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ATTACHMENT_UPLOAD_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Attachment Upload Not Ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/attachment-upload-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, - "description": "ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready", + "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "500": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/InternalErrorProblem" } - }, + } + }, + "description": "INTERNAL_ERROR: Internal Server Error", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "format": "date-time", "type": "string" } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + } + } + }, + "502": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UpstreamFailureProblem" } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "413": { + "503": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -53425,38 +38370,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -53470,209 +38415,244 @@ } } }, - "422": { + "504": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/GetProjectClosureStatusGatewayTimeoutProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "serviceIdentityBearer": [] + } + ], + "summary": "Read project closure progress", + "tags": [ + "Projects" + ], + "x-required-permissions": [ + "organization:read_projects" + ] + } + }, + "/v1/organizations/{organizationId}/projects/count": { + "get": { + "description": "Counts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged.", + "operationId": "countProjects", + "parameters": [ + { + "in": "path", + "name": "organizationId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "createdAfter", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + { + "in": "query", + "name": "createdBefore", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", + "type": "string" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "minLength": 1, + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ProjectCount" } + } + }, + "description": "The number of matching projects.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/InvalidArgumentProblem" } + } + }, + "description": "INVALID_ARGUMENT: Invalid Argument", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/NotAuthenticatedProblem" + } + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "500": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CountProjectsForbiddenProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -53707,9 +38687,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -53728,109 +38708,123 @@ } } }, - "502": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "500": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/InternalErrorProblem" } - }, + } + }, + "description": "INTERNAL_ERROR: Internal Server Error", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "format": "date-time", "type": "string" } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + } + } + }, + "502": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/UpstreamFailureProblem" } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -53838,53 +38832,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -53919,9 +38876,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -53944,150 +38901,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CountProjectsGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -54097,41 +38942,39 @@ "accountServiceKey": [] }, { - "projectApiKey": [] + "serviceIdentityBearer": [] } ], - "summary": "Upload an Attachment", + "summary": "Count accessible projects", "tags": [ - "Attachments" + "Projects" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ - "project:write" + "organization:read_projects" ] } }, - "/v1/projects/{id}/attachments/{attachmentId}": { + "/v1/organizations/{organizationId}/projects/slug-availability": { "get": { - "description": "Returns an Attachment's metadata. Use the content endpoint to download its bytes.", - "operationId": "getAttachment", + "description": "Reports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason.", + "operationId": "checkProjectSlugAvailability", "parameters": [ { "in": "path", - "name": "attachmentId", + "name": "organizationId", "required": true, "schema": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } }, { - "in": "path", - "name": "id", + "in": "query", + "name": "slug", "required": true, "schema": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "type": "string" } } @@ -54141,372 +38984,142 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "contentType": { - "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - }, - "filename": { - "minLength": 1, - "type": "string" - }, - "id": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "metadata": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "sizeBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$", - "type": "string" - } - }, - "required": [ - "contentType", - "createdAt", - "id", - "projectId", - "sizeBytes", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/CheckProjectSlugAvailabilityResponse" } } }, - "description": "The Attachment resource.", + "description": "Whether the slug can be allocated, and why not.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "401": { + "400": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "401": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + }, + "WWW-Authenticate": { + "required": true, "schema": { "type": "string" } }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "404": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ATTACHMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Attachment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/attachment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CheckProjectSlugAvailabilityForbiddenProblem" } } }, - "description": "ATTACHMENT_NOT_FOUND: Attachment Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -54517,38 +39130,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -54566,144 +39179,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -54711,110 +39218,39 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/InternalErrorProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "INTERNAL_ERROR: Internal Server Error", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -54824,105 +39260,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -54930,53 +39299,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -55011,9 +39343,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -55036,150 +39368,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CheckProjectSlugAvailabilityGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -55189,38 +39409,106 @@ "accountServiceKey": [] }, { - "projectApiKey": [] + "serviceIdentityBearer": [] } ], - "summary": "Get an Attachment", + "summary": "Check slug availability", "tags": [ - "Attachments" + "Projects" ], "x-required-permissions": [ - "project:read" + "organization:create_project" ] } }, - "/v1/projects/{id}/attachments/{attachmentId}/content": { + "/v1/projects/{id}/attachments": { "get": { - "description": "Downloads an Attachment's bytes. If unavailable after ten seconds, returns ATTACHMENT_NOT_READY with Retry-After: 5.", - "operationId": "downloadAttachment", + "description": "Lists the Project's Attachment metadata, with optional time filters.", + "operationId": "listAttachments", "parameters": [ { "in": "path", - "name": "attachmentId", + "name": "id", "required": true, "schema": { - "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } }, { - "in": "path", - "name": "id", - "required": true, + "description": "Exclusive upper bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.", + "in": "query", + "name": "createdBefore", "schema": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + } + }, + { + "description": "Inclusive lower bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.", + "in": "query", + "name": "createdSince", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + } + }, + { + "description": "Direction along orderBy; desc, the default, is newest first", + "in": "query", + "name": "order", + "schema": { + "$ref": "#/components/schemas/SortOrder" + } + }, + { + "description": "Sort timestamp; defaults to the filtered timestamp, otherwise created_at. Must match the time bounds.", + "in": "query", + "name": "orderBy", + "schema": { + "$ref": "#/components/schemas/TimestampOrderBy" + } + }, + { + "description": "Items per page. A value above 100 returns at most 100 items.", + "in": "query", + "name": "pageSize", + "schema": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + { + "description": "Token from nextPageToken. Keep the same Project and query.", + "in": "query", + "name": "pageToken", + "schema": { + "maxLength": 4096, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$", + "type": "string" + } + }, + { + "description": "Exclusive upper bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.", + "in": "query", + "name": "updatedBefore", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + } + }, + { + "description": "Inclusive lower bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.", + "in": "query", + "name": "updatedSince", + "schema": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", "type": "string" } } @@ -55228,73 +39516,40 @@ "responses": { "200": { "content": { - "*/*": { - "schema": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentPage" + } } }, - "description": "The Attachment's raw file bytes. Content-Type identifies the media type of the response.", + "description": "A page of Project Attachments in the requested order.", "headers": { - "Content-Disposition": { - "description": "Attachment disposition using the filename declared during upload.", - "schema": { - "type": "string" - } - }, "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -55302,7 +39557,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -55350,101 +39605,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListAttachmentsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -55479,9 +39649,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -55500,163 +39670,59 @@ } } }, - "404": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ATTACHMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Attachment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/attachment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "ATTACHMENT_NOT_FOUND: Attachment Not Found", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ATTACHMENT_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Attachment Not Ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/attachment-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListAttachmentsInternalServerErrorProblem" } } }, - "description": "ATTACHMENT_NOT_READY: Attachment Not Ready", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -55667,41 +39733,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Seconds to wait before retrying the download.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { - "enum": [ - "5" - ], "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -55715,209 +39778,59 @@ } } }, - "422": { + "502": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "503": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -55952,9 +39865,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -55973,499 +39886,238 @@ } } }, - "502": { + "504": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListAttachmentsGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } + } + }, + "security": [ + { + "accountServiceKey": [] }, - "503": { + { + "projectApiKey": [] + } + ], + "summary": "List Project Attachments", + "tags": [ + "Attachments" + ], + "x-required-permissions": [ + "project:read" + ] + }, + "post": { + "description": "Uploads a file and returns its Attachment once ready to download.", + "operationId": "uploadAttachment", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + }, + { + "in": "header", + "name": "content-length", + "required": true, + "schema": { + "pattern": "^[1-9][0-9]*$", + "type": "string" + } + }, + { + "in": "header", + "name": "content-type", + "required": true, + "schema": { + "maxLength": 512, + "type": "string" + } + }, + { + "description": "Reuse the same key and request for retries.", + "in": "header", + "name": "idempotency-key", + "required": true, + "schema": { + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/related": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length.", + "required": true + }, + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/Attachment" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "The attachment upload had already been committed.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "504": { + "201": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/Attachment" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", + "description": "The attachment was uploaded and committed.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical resource URL of the Attachment.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } - } - }, - "security": [ - { - "accountServiceKey": [] }, - { - "projectApiKey": [] - } - ], - "summary": "Download an Attachment", - "tags": [ - "Attachments" - ], - "x-photon-mcp": { - "enabled": false - }, - "x-required-permissions": [ - "project:read" - ] - } - }, - "/v1/projects/{id}/platforms": { - "get": { - "description": "Lists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "listProjectPlatforms", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { + "400": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "platforms": { - "items": { - "additionalProperties": false, - "properties": { - "description": { - "type": "string" - }, - "displayName": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "description", - "displayName", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "platforms" - ], - "type": "object" + "$ref": "#/components/schemas/UploadAttachmentBadRequestProblem" } } }, - "description": "Every platform type available to the project.", + "description": "HTTP_ERROR: Request Failed; INVALID_ATTACHMENT_REQUEST: Invalid Attachment Request", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -56473,7 +40125,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -56521,101 +40173,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UploadAttachmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -56650,9 +40217,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -56671,357 +40238,137 @@ } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/UploadAttachmentConflictProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "413": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "503": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "504": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UploadAttachmentInternalServerErrorProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -57032,38 +40379,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -57076,334 +40423,60 @@ } } } - } - }, - "security": [ - { - "accountServiceKey": [] - }, - { - "projectApiKey": [] - } - ], - "summary": "List project platforms", - "tags": [ - "Platforms" - ], - "x-required-permissions": [ - "platforms:read" - ] - } - }, - "/v1/projects/{id}/platforms/email/domains": { - "post": { - "description": "Reserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "connectEmailDomain", - "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "domain": { - "type": "string" - } - }, - "required": [ - "domain" - ], - "type": "object" - } - } }, - "required": true - }, - "responses": { - "202": { + "502": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal.", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "400": { + "503": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -57414,38 +40487,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -57459,451 +40532,192 @@ } } }, - "401": { + "504": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/UploadAttachmentGatewayTimeoutProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } + } + }, + "security": [ + { + "accountServiceKey": [] }, - "402": { + { + "projectApiKey": [] + } + ], + "summary": "Upload an Attachment", + "tags": [ + "Attachments" + ], + "x-photon-mcp": { + "enabled": false + }, + "x-required-permissions": [ + "project:write" + ] + } + }, + "/v1/projects/{id}/attachments/{attachmentId}": { + "get": { + "description": "Returns an Attachment's metadata. Use the content endpoint to download its bytes.", + "operationId": "getAttachment", + "parameters": [ + { + "in": "path", + "name": "attachmentId", + "required": true, + "schema": { + "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + } + ], + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/Attachment" } } }, - "description": "ENTITLEMENT_REQUIRED: Entitlement Required", + "description": "The Attachment resource.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "401": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "409": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "EMAIL_DOMAIN_ALREADY_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Email Domain Already Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/email-domain-already-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "EMAIL_DOMAIN_CAP_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Email Domain Cap Exceeded", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/email-domain-cap-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAttachmentForbiddenProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -57914,38 +40728,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -57959,299 +40773,81 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AttachmentNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "ATTACHMENT_NOT_FOUND: Attachment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "429": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -58259,60 +40855,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAttachmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -58347,9 +40899,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -58372,105 +40924,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -58478,98 +40963,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -58604,9 +41007,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -58629,150 +41032,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAttachmentGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -58785,25 +41076,35 @@ "projectApiKey": [] } ], - "summary": "Connect email domain", + "summary": "Get an Attachment", "tags": [ - "Email domains" + "Attachments" ], "x-required-permissions": [ - "platforms:write" + "project:read" ] } }, - "/v1/projects/{id}/platforms/imessage": { + "/v1/projects/{id}/attachments/{attachmentId}/content": { "get": { - "description": "Reports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "getProjectImessagePlatform", + "description": "Downloads an Attachment's bytes. If unavailable after ten seconds, returns ATTACHMENT_NOT_READY with Retry-After: 5.", + "operationId": "downloadAttachment", "parameters": [ + { + "in": "path", + "name": "attachmentId", + "required": true, + "schema": { + "pattern": "^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + }, { "in": "path", "name": "id", "required": true, "schema": { + "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", "type": "string" } } @@ -58811,102 +41112,46 @@ "responses": { "200": { "content": { - "application/json": { + "*/*": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "maxUserAssignments": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mode": { - "const": "shared", - "type": "string" - } - }, - "required": [ - "maxUserAssignments", - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "dedicated", - "type": "string" - } - }, - "required": [ - "mode" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DownloadAttachmentResponse" } } }, - "description": "The project's iMessage line mode.", + "description": "The Attachment's raw file bytes. Content-Type identifies the media type of the response.", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "Content-Disposition": { + "description": "Attachment disposition using the filename declared during upload.", "schema": { "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -58914,7 +41159,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -58962,101 +41207,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/DownloadAttachmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -59091,9 +41251,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -59112,209 +41272,140 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/AttachmentNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "ATTACHMENT_NOT_FOUND: Attachment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/AttachmentNotReadyProblem" } + } + }, + "description": "ATTACHMENT_NOT_READY: Attachment Not Ready", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Seconds to wait before retrying the download.", "schema": { - "type": "string" + "$ref": "#/components/schemas/AttachmentNotReadyRetryAfter" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DownloadAttachmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -59349,9 +41440,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -59374,105 +41465,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -59480,98 +41504,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -59606,9 +41548,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -59631,150 +41573,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DownloadAttachmentGatewayTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -59787,19 +41617,22 @@ "projectApiKey": [] } ], - "summary": "Get project iMessage platform", + "summary": "Download an Attachment", "tags": [ - "Platforms" + "Attachments" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "platforms:read" + "project:read" ] } }, - "/v1/projects/{id}/platforms/imessage/assignments": { + "/v1/projects/{id}/platforms": { "get": { - "description": "Lists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "listSharedLineAssignments", + "description": "Lists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "listProjectPlatforms", "parameters": [ { "in": "path", @@ -59808,30 +41641,6 @@ "schema": { "type": "string" } - }, - { - "in": "query", - "name": "includeReleased", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "maximum": 200, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", - "schema": { - "minLength": 1, - "type": "string" - } } ], "responses": { @@ -59839,137 +41648,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignments": { - "items": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - }, - "nextPageToken": { - "type": "string" - } - }, - "required": [ - "assignments" - ], - "type": "object" + "$ref": "#/components/schemas/ListProjectPlatformsResponse" } } }, - "description": "A page of shared line assignments.", + "description": "Every platform type available to the project.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -59977,400 +41687,64 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } - }, - "description": "VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "429": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListProjectPlatformsForbiddenProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -60381,38 +41755,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -60426,170 +41800,59 @@ } } }, - "500": { + "422": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "502": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListProjectPlatformsInternalServerErrorProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -60600,38 +41863,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -60649,103 +41912,39 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } @@ -60755,150 +41954,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RequestTimeoutProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -60911,17 +41998,19 @@ "projectApiKey": [] } ], - "summary": "List shared line assignments", + "summary": "List project platforms", "tags": [ - "Shared line assignments" + "Platforms" ], "x-required-permissions": [ "platforms:read" ] - }, + } + }, + "/v1/projects/{id}/platforms/email/domains": { "post": { - "description": "Maps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "createSharedLineAssignment", + "description": "Reserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "connectEmailDomain", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -60948,268 +42037,203 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "email": { - "format": "email", - "maxLength": 254, - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "handle": { - "anyOf": [ - { - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - }, - { - "format": "email", - "maxLength": 254, - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - } - ] - }, - "lastName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "handle" - ], - "type": "object" + "$ref": "#/components/schemas/ConnectEmailDomainRequest" } } }, "required": true }, "responses": { - "201": { + "202": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "The created shared line assignment.", + "description": "The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "boolean" + "minimum": 0, + "type": "integer" + } + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ConnectEmailDomainBadRequestProblem" } + } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/NotAuthenticatedProblem" + } + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Application request identifier.", "schema": { "type": "string" } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + } + } + }, + "402": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/EntitlementRequiredProblem" } } + }, + "description": "ENTITLEMENT_REQUIRED: Entitlement Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "400": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectEmailDomainForbiddenProblem" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -61220,38 +42244,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -61265,153 +42289,137 @@ } } }, - "401": { + "409": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/ConnectEmailDomainConflictProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ConnectEmailDomainUnprocessableEntityProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "429": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RateLimitedProblem" } } + }, + "description": "RATE_LIMITED: Too Many Requests", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "403": { + "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ConnectEmailDomainInternalServerErrorProblem" + } + } + }, + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -61446,9 +42454,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -61467,184 +42475,59 @@ } } }, - "409": { + "502": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IMESSAGE_MODE_DEDICATED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "iMessage Mode Is Dedicated", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/imessage-mode-dedicated", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SHARED_LINE_CAP_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Shared Line Cap Exceeded", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/shared-line-cap-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_EXISTS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment Exists", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-exists", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ConnectEmailDomainServiceUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -61655,38 +42538,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -61700,247 +42583,179 @@ } } }, - "422": { + "504": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectEmailDomainGatewayTimeoutProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "projectApiKey": [] + } + ], + "summary": "Connect email domain", + "tags": [ + "Email domains" + ], + "x-required-permissions": [ + "platforms:write" + ] + } + }, + "/v1/projects/{id}/platforms/imessage": { + "get": { + "description": "Reports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "getProjectImessagePlatform", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ProjectPlatformSettings" } + } + }, + "description": "The project's iMessage line mode.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "429": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetProjectImessagePlatformForbiddenProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -61951,38 +42766,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -61996,64 +42811,59 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectImessagePlatformInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -62088,9 +42898,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -62113,105 +42923,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -62219,139 +42962,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SHARED_LINE_POOL_EXHAUSTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Shared Line Pool Exhausted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/shared-line-pool-exhausted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectImessagePlatformServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -62386,9 +43006,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -62411,150 +43031,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectImessagePlatformGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -62567,33 +43075,49 @@ "projectApiKey": [] } ], - "summary": "Create shared line assignment", + "summary": "Get project iMessage platform", "tags": [ - "Shared line assignments" + "Platforms" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] } }, - "/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}": { - "delete": { - "description": "Releases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "releaseSharedLineAssignment", + "/v1/projects/{id}/platforms/imessage/assignments": { + "get": { + "description": "Lists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "listSharedLineAssignments", "parameters": [ { "in": "path", - "name": "assignmentId", + "name": "id", "required": true, "schema": { "type": "string" } }, { - "in": "path", - "name": "id", - "required": true, + "in": "query", + "name": "includeReleased", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "maximum": 200, + "minimum": 1, + "type": "integer" + } + }, + { + "in": "query", + "name": "pageToken", "schema": { + "minLength": 1, "type": "string" } } @@ -62603,122 +43127,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignmentPage" } } }, - "description": "The released shared line assignment.", + "description": "A page of shared line assignments.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -62726,7 +43166,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -62774,207 +43214,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Assignment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListSharedLineAssignmentsForbiddenProblem" } } }, - "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -62985,38 +43234,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -63034,144 +43283,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -63179,105 +43322,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -63285,60 +43361,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListSharedLineAssignmentsInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -63373,9 +43405,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -63398,105 +43430,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -63504,53 +43469,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -63585,9 +43513,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -63610,150 +43538,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListSharedLineAssignmentsGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -63766,23 +43582,27 @@ "projectApiKey": [] } ], - "summary": "Release shared line assignment", + "summary": "List shared line assignments", "tags": [ "Shared line assignments" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] }, - "get": { - "description": "Reads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "getSharedLineAssignment", + "post": { + "description": "Maps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "createSharedLineAssignment", "parameters": [ { - "in": "path", - "name": "assignmentId", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", "required": true, "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, @@ -63795,135 +43615,100 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSharedLineAssignmentRequest" + } + } + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignment" } } }, - "description": "The shared line assignment.", + "description": "The created shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/CreateSharedLineAssignmentBadRequestProblem" } } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -63971,101 +43756,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateSharedLineAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -64100,9 +43800,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -64121,109 +43821,42 @@ } } }, - "404": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Assignment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateSharedLineAssignmentConflictProblem" } } }, - "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", + "description": "PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -64231,144 +43864,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/CreateSharedLineAssignmentUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -64376,105 +43903,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -64482,60 +43942,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -64570,9 +43986,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -64595,105 +44011,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -64701,53 +44050,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateSharedLineAssignmentServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -64782,9 +44094,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -64807,150 +44119,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -64963,29 +44163,25 @@ "projectApiKey": [] } ], - "summary": "Get shared line assignment", + "summary": "Create shared line assignment", "tags": [ "Shared line assignments" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] } }, - "/v1/projects/{id}/platforms/imessage/dedicated": { - "post": { - "description": "Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "provisionImessageDedicatedLine", + "/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}": { + "delete": { + "description": "Releases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "releaseSharedLineAssignment", "parameters": [ { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", + "in": "path", + "name": "assignmentId", "required": true, "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, @@ -64999,321 +44195,42 @@ } ], "responses": { - "202": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/SharedLineAssignment" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "The released shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -65321,7 +44238,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -65365,211 +44282,20 @@ } } }, - "402": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ReleaseSharedLineAssignmentForbiddenProblem" } } }, - "description": "ENTITLEMENT_REQUIRED: Entitlement Required", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -65604,9 +44330,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -65625,109 +44351,42 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AssignmentNotFoundProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing", + "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -65735,189 +44394,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -65925,105 +44433,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -66031,60 +44472,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -66119,9 +44516,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -66144,105 +44541,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -66250,98 +44580,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -66376,9 +44624,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -66401,525 +44649,116 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - } - }, - "security": [ - { - "accountServiceKey": [] - }, - { - "projectApiKey": [] - } - ], - "summary": "Provision dedicated iMessage line", - "tags": [ - "Dedicated iMessage lines" - ], - "x-required-permissions": [ - "platforms:write" - ] - } - }, - "/v1/projects/{id}/platforms/imessage/dedicated/{resourceId}": { - "delete": { - "description": "Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure.", - "operationId": "releaseImessageDedicatedLine", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The iMessage product and its charge period were removed.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } + } + }, + "security": [ + { + "accountServiceKey": [] }, - "202": { + { + "projectApiKey": [] + } + ], + "summary": "Release shared line assignment", + "tags": [ + "Shared line assignments" + ], + "x-required-permissions": [ + "platforms:write" + ] + }, + "get": { + "description": "Reads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "getSharedLineAssignment", + "parameters": [ + { + "in": "path", + "name": "assignmentId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignment" } } }, - "description": "The removal is still running. GET the Location after the Retry-After interval.", + "description": "The shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -66927,7 +44766,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -66975,101 +44814,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetSharedLineAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -67104,9 +44858,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -67129,105 +44883,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AssignmentNotFoundProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found", + "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -67235,144 +44922,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -67380,105 +44961,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -67486,60 +45000,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -67574,9 +45044,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -67599,105 +45069,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -67705,53 +45108,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -67786,9 +45152,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -67811,150 +45177,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -67967,255 +45221,136 @@ "projectApiKey": [] } ], - "summary": "Release dedicated iMessage line", + "summary": "Get shared line assignment", "tags": [ - "Dedicated iMessage lines" + "Shared line assignments" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] } }, - "/v1/projects/{id}/platforms/operations": { - "get": { - "description": "Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "listOperations", + "/v1/projects/{id}/platforms/imessage/dedicated": { + "post": { + "description": "Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "provisionImessageDedicatedLine", "parameters": [ { - "in": "path", - "name": "id", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", "required": true, "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "maximum": 200, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", - "schema": { - "minLength": 1, - "type": "string" - } - }, - { - "in": "query", - "name": "resourceId", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "schema": { + "maxLength": 255, "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, { - "in": "query", - "name": "type", + "in": "path", + "name": "id", + "required": true, "schema": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], "type": "string" } } ], "responses": { - "200": { + "202": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "nextPageToken": { - "type": "string" - }, - "operations": { - "items": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "operations" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "A page of the project's operations.", + "description": "The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineBadRequestProblem" } } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -68259,105 +45394,59 @@ } } }, + "402": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/EntitlementRequiredProblem" + } + } + }, + "description": "ENTITLEMENT_REQUIRED: Entitlement Required", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -68392,9 +45481,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -68413,254 +45502,120 @@ } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectClosingProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "PROJECT_CLOSING: Project Is Closing", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineUnprocessableEntityProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -68668,60 +45623,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -68756,9 +45667,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -68781,105 +45692,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -68887,53 +45731,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -68968,9 +45775,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -68993,150 +45800,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionImessageDedicatedLineGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -69149,19 +45844,19 @@ "projectApiKey": [] } ], - "summary": "List operations", + "summary": "Provision dedicated iMessage line", "tags": [ - "Operations" + "Dedicated iMessage lines" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] } }, - "/v1/projects/{id}/platforms/operations/{operationId}": { - "get": { - "description": "Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "getOperation", + "/v1/projects/{id}/platforms/imessage/dedicated/{resourceId}": { + "delete": { + "description": "Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure.", + "operationId": "releaseImessageDedicatedLine", "parameters": [ { "in": "path", @@ -69173,7 +45868,7 @@ }, { "in": "path", - "name": "operationId", + "name": "resourceId", "required": true, "schema": { "type": "string" @@ -69185,228 +45880,99 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "operation": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - }, - "resource": { - "additionalProperties": false, - "properties": { - "abilities": { - "items": { - "type": "string" - }, - "type": "array" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "retiredAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "unallocated", - "active", - "retired" - ], - "type": "string" - }, - "type": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "abilities", - "createdAt", - "detail", - "projectId", - "resourceId", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - }, - "required": [ - "operation" - ], - "type": "object" - } - } - }, - "description": "The operation, and the resource it produced once one exists.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/Operation" } + } + }, + "description": "The iMessage product and its charge period were removed.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "202": { + "content": { + "application/json": { "schema": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/Operation" } + } + }, + "description": "The removal is still running. GET the Location after the Retry-After interval.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "minimum": 0, + "type": "integer" } + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -69414,7 +45980,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -69462,101 +46028,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ReleaseImessageDedicatedLineForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -69591,9 +46072,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -69616,105 +46097,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "OPERATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Operation Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/operation-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, - "description": "OPERATION_NOT_FOUND: Operation Not Found", + "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -69722,144 +46136,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -69867,105 +46175,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -69973,60 +46214,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseImessageDedicatedLineInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -70061,9 +46258,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -70086,105 +46283,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -70192,53 +46322,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -70273,9 +46366,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -70298,150 +46391,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseImessageDedicatedLineGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -70454,19 +46435,19 @@ "projectApiKey": [] } ], - "summary": "Get operation", + "summary": "Release dedicated iMessage line", "tags": [ - "Operations" + "Dedicated iMessage lines" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] } }, - "/v1/projects/{id}/platforms/operations/{operationId}/cancel": { - "post": { - "description": "Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "cancelOperation", + "/v1/projects/{id}/platforms/operations": { + "get": { + "description": "Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "listOperations", "parameters": [ { "in": "path", @@ -70477,12 +46458,43 @@ } }, { - "in": "path", - "name": "operationId", - "required": true, + "in": "query", + "name": "pageSize", + "schema": { + "maximum": 200, + "minimum": 1, + "type": "integer" + } + }, + { + "in": "query", + "name": "pageToken", + "schema": { + "minLength": 1, + "type": "string" + } + }, + { + "in": "query", + "name": "resourceId", "schema": { "type": "string" } + }, + { + "in": "query", + "name": "state", + "schema": { + "minLength": 1, + "type": "string" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "$ref": "#/components/schemas/OperationType" + } } ], "responses": { @@ -70490,158 +46502,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/OperationPage" } } }, - "description": "The cancelled operation.", + "description": "A page of the project's operations.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -70649,7 +46541,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -70697,313 +46589,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "OPERATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Operation Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/operation-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "OPERATION_NOT_FOUND: Operation Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "409": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "OPERATION_NOT_CANCELLABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Operation Not Cancellable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/operation-not-cancellable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListOperationsForbiddenProblem" } } }, - "description": "OPERATION_NOT_CANCELLABLE: Operation Not Cancellable", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -71014,38 +46609,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -71063,144 +46658,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -71208,105 +46697,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -71314,60 +46736,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListOperationsInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -71402,9 +46780,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -71427,105 +46805,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -71533,53 +46844,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -71614,9 +46888,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -71639,150 +46913,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListOperationsGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -71795,19 +46957,19 @@ "projectApiKey": [] } ], - "summary": "Cancel operation", + "summary": "List operations", "tags": [ "Operations" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] } }, - "/v1/projects/{id}/platforms/resources": { + "/v1/projects/{id}/platforms/operations/{operationId}": { "get": { - "description": "Lists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "listResources", + "description": "Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "getOperation", "parameters": [ { "in": "path", @@ -71818,43 +46980,10 @@ } }, { - "in": "query", - "name": "ability", - "schema": { - "minLength": 1, - "type": "string" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "maximum": 200, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", - "schema": { - "minLength": 1, - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "schema": { - "minLength": 1, - "type": "string" - } - }, - { - "in": "query", - "name": "type", + "in": "path", + "name": "operationId", + "required": true, "schema": { - "minLength": 1, "type": "string" } } @@ -71864,140 +46993,49 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "nextPageToken": { - "type": "string" - }, - "resources": { - "items": { - "additionalProperties": false, - "properties": { - "abilities": { - "items": { - "type": "string" - }, - "type": "array" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "retiredAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "unallocated", - "active", - "retired" - ], - "type": "string" - }, - "type": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "abilities", - "createdAt", - "detail", - "projectId", - "resourceId", - "state", - "type", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "resources" - ], - "type": "object" + "$ref": "#/components/schemas/GetOperationResponse" } } }, - "description": "A page of the project's resources.", + "description": "The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal.", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "Cache-Control": { + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -72005,7 +47043,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -72053,101 +47091,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetOperationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -72182,9 +47135,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -72203,254 +47156,120 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/OperationNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "OPERATION_NOT_FOUND: Operation Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -72458,60 +47277,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOperationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -72546,9 +47321,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -72571,105 +47346,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -72677,53 +47385,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -72758,9 +47429,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -72783,150 +47454,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetOperationGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -72939,19 +47498,19 @@ "projectApiKey": [] } ], - "summary": "List resources", + "summary": "Get operation", "tags": [ - "Resources" + "Operations" ], "x-required-permissions": [ "platforms:read" ] } }, - "/v1/projects/{id}/platforms/resources/{resourceId}": { - "delete": { - "description": "Gives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "releaseResource", + "/v1/projects/{id}/platforms/operations/{operationId}/cancel": { + "post": { + "description": "Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "cancelOperation", "parameters": [ { "in": "path", @@ -72963,7 +47522,7 @@ }, { "in": "path", - "name": "resourceId", + "name": "operationId", "required": true, "schema": { "type": "string" @@ -72975,333 +47534,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The release finished inside this request. The resource is gone.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "202": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "The release is still running at the provider. GET the Location after the Retry-After interval; a terminal answer may arrive on any read.", + "description": "The cancelled operation.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -73309,7 +47573,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -73357,101 +47621,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CancelOperationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -73486,9 +47665,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -73511,105 +47690,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OperationNotFoundProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found", + "description": "OPERATION_NOT_FOUND: Operation Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -73617,150 +47729,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_SENDER_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Sender Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-sender-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_SENDER_PROVISIONING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Sender Provisioning", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-sender-provisioning", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/OperationNotCancellableProblem" } } }, - "description": "WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning", + "description": "OPERATION_NOT_CANCELLABLE: Operation Not Cancellable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -73768,144 +47768,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -73913,105 +47807,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -74019,60 +47846,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CancelOperationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -74107,9 +47890,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -74132,105 +47915,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -74238,53 +47954,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -74319,9 +47998,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -74344,150 +48023,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CancelOperationGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -74500,17 +48067,19 @@ "projectApiKey": [] } ], - "summary": "Release resource", + "summary": "Cancel operation", "tags": [ - "Resources" + "Operations" ], "x-required-permissions": [ "platforms:write" ] - }, + } + }, + "/v1/projects/{id}/platforms/resources": { "get": { - "description": "Reads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "getResource", + "description": "Lists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "listResources", "parameters": [ { "in": "path", @@ -74521,10 +48090,43 @@ } }, { - "in": "path", - "name": "resourceId", - "required": true, + "in": "query", + "name": "ability", + "schema": { + "minLength": 1, + "type": "string" + } + }, + { + "in": "query", + "name": "pageSize", "schema": { + "maximum": 200, + "minimum": 1, + "type": "integer" + } + }, + { + "in": "query", + "name": "pageToken", + "schema": { + "minLength": 1, + "type": "string" + } + }, + { + "in": "query", + "name": "state", + "schema": { + "minLength": 1, + "type": "string" + } + }, + { + "in": "query", + "name": "type", + "schema": { + "minLength": 1, "type": "string" } } @@ -74534,125 +48136,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "abilities": { - "items": { - "type": "string" - }, - "type": "array" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "retiredAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "unallocated", - "active", - "retired" - ], - "type": "string" - }, - "type": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "abilities", - "createdAt", - "detail", - "projectId", - "resourceId", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/ResourcePage" } } }, - "description": "The resource.", + "description": "A page of the project's resources.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -74660,7 +48175,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -74708,207 +48223,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListResourcesForbiddenProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -74919,38 +48243,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -74968,144 +48292,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -75113,105 +48331,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -75219,60 +48370,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListResourcesInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -75307,9 +48414,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -75332,105 +48439,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -75438,53 +48478,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -75519,9 +48522,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -75544,491 +48547,100 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListResourcesGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - } - }, - "security": [ - { - "accountServiceKey": [] - }, - { - "projectApiKey": [] - } - ], - "summary": "Get resource", - "tags": [ - "Resources" - ], - "x-required-permissions": [ - "platforms:read" - ] - } - }, - "/v1/projects/{id}/platforms/sms/lines/{resourceId}/campaign": { - "delete": { - "description": "Any project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously.", - "operationId": "unassignSmsLineCampaign", - "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "expectedVersion", - "required": true, - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The original terminal operation on an authorized replay.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } + } + }, + "security": [ + { + "accountServiceKey": [] }, - "202": { + { + "projectApiKey": [] + } + ], + "summary": "List resources", + "tags": [ + "Resources" + ], + "x-required-permissions": [ + "platforms:read" + ] + } + }, + "/v1/projects/{id}/platforms/resources/{resourceId}": { + "delete": { + "description": "Gives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "releaseResource", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "resourceId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "Assignment accepted. Poll the operation Location until terminal.", + "description": "The release finished inside this request. The resource is gone.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -76038,16 +48650,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -76057,216 +48663,63 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "400": { + "202": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_INVALID_REQUEST", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid SMS campaign request", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-invalid-request", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/Operation" } } }, - "description": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "The release is still running at the provider. GET the Location after the Retry-After interval; a terminal answer may arrive on any read.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -76274,7 +48727,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -76322,142 +48775,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_ORGANIZATION_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Campaign belongs to another organization", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ReleaseResourceForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -76492,9 +48819,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -76517,150 +48844,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Campaign not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "SMS line not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, - "description": "SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found", + "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -76668,355 +48883,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_UNSUPPORTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "SMS line unsupported", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-unsupported", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign not ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment version conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_MUTATION_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment mutation in progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CAPACITY_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign number capacity exhausted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_RECONCILIATION_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign reconciliation required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/ReleaseResourceConflictProblem" } + } + }, + "description": "WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -77024,105 +48922,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -77130,105 +48961,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -77236,60 +49000,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseResourceInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -77324,9 +49044,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -77349,105 +49069,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -77455,98 +49108,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CONTEXT_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Campaign context unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -77581,9 +49152,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -77606,150 +49177,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseResourceGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -77762,17 +49221,17 @@ "projectApiKey": [] } ], - "summary": "Remove SMS line campaign", + "summary": "Release resource", "tags": [ - "SMS campaigns" + "Resources" ], "x-required-permissions": [ "platforms:write" ] }, "get": { - "description": "Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee.", - "operationId": "getSmsLineCampaignAssignment", + "description": "Reads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "getResource", "parameters": [ { "in": "path", @@ -77796,289 +49255,38 @@ "content": { "application/json": { "schema": { - "properties": { - "campaign": { - "anyOf": [ - { - "properties": { - "id": { - "type": "string" - }, - "organizationId": { - "type": "string" - } - }, - "required": [ - "id", - "organizationId" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "campaignObservedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "eligibility": { - "enum": [ - "eligible", - "blocked", - "unknown" - ], - "type": "string" - }, - "observedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "operationId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "providerAssignmentStatus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "reasonCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "requestedCampaignId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "resourceId": { - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "campaign", - "campaignObservedAt", - "eligibility", - "observedAt", - "operationId", - "providerAssignmentStatus", - "reasonCode", - "requestedCampaignId", - "resourceId", - "version" - ], - "type": "object" - } - } - }, - "description": "Current assignment, including an untouched version of 1.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_INVALID_REQUEST", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid SMS campaign request", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-invalid-request", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/Resource" } } }, - "description": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request", + "description": "The resource.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -78086,7 +49294,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -78134,142 +49342,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_ORGANIZATION_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Campaign belongs to another organization", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetResourceForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -78304,9 +49386,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -78329,506 +49411,77 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Campaign not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "SMS line not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, - "description": "SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found", + "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "422": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_UNSUPPORTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "SMS line unsupported", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-unsupported", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign not ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment version conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_MUTATION_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment mutation in progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CAPACITY_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign number capacity exhausted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_RECONCILIATION_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign reconciliation required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -78836,105 +49489,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -78942,60 +49528,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetResourceInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -79030,9 +49572,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -79055,105 +49597,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -79161,98 +49636,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CONTEXT_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Campaign context unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -79287,9 +49680,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -79312,150 +49705,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetResourceGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -79468,17 +49749,19 @@ "projectApiKey": [] } ], - "summary": "Read SMS line campaign assignment", + "summary": "Get resource", "tags": [ - "SMS campaigns" + "Resources" ], "x-required-permissions": [ "platforms:read" ] - }, - "put": { - "description": "Attach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously.", - "operationId": "assignSmsLineCampaign", + } + }, + "/v1/projects/{id}/platforms/sms/lines/{resourceId}/campaign": { + "delete": { + "description": "Any project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously.", + "operationId": "unassignSmsLineCampaign", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -79507,190 +49790,67 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "expectedVersion", + "required": true, + "schema": { + "type": "number" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "campaignId": { - "type": "string" - }, - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "campaignId", - "expectedVersion" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The original terminal operation on an authorized replay.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/Operation" + } + } + }, + "description": "The original terminal operation on an authorized replay. No Retry-After is emitted.", + "headers": { + "Cache-Control": { + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -79698,120 +49858,27 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "Assignment accepted. Poll the operation Location until terminal.", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "Cache-Control": { + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -79821,16 +49888,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -79840,24 +49901,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -79865,191 +49915,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_INVALID_REQUEST", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid SMS campaign request", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-invalid-request", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignSmsLineCampaignBadRequestProblem" } } }, "description": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -80057,7 +49954,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -80105,142 +50002,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_ORGANIZATION_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Campaign belongs to another organization", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UnassignSmsLineCampaignForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -80275,9 +50046,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -80300,150 +50071,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Campaign not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "SMS line not found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignSmsLineCampaignNotFoundProblem" } } }, "description": "SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -80451,355 +50110,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_LINE_UNSUPPORTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "SMS line unsupported", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-line-unsupported", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_NOT_READY", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign not ready", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-not-ready", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment version conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_MUTATION_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment mutation in progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CAPACITY_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign number capacity exhausted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_RECONCILIATION_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Campaign reconciliation required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/UnassignSmsLineCampaignConflictProblem" } + } + }, + "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -80807,105 +50149,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" } } }, "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -80913,105 +50188,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -81019,60 +50227,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignSmsLineCampaignInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -81107,9 +50271,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -81132,105 +50296,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -81238,98 +50335,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SMS_CAMPAIGN_CONTEXT_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Campaign context unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignSmsLineCampaignServiceUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -81364,9 +50379,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -81389,150 +50404,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignSmsLineCampaignGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -81545,230 +50448,79 @@ "projectApiKey": [] } ], - "summary": "Assign or replace SMS line campaign", + "summary": "Remove SMS line campaign", "tags": [ "SMS campaigns" ], "x-required-permissions": [ "platforms:write" ] - } - }, - "/v1/projects/{id}/platforms/sms/numbers": { - "post": { - "description": "Buys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path.", - "operationId": "purchaseSmsNumber", + }, + "get": { + "description": "Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee.", + "operationId": "getSmsLineCampaignAssignment", "parameters": [ { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", + "in": "path", + "name": "id", "required": true, "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, { "in": "path", - "name": "id", + "name": "resourceId", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "areaCode": { - "pattern": "^[2-9][0-9]{2}$", - "type": "string" - }, - "countryCode": { - "const": "US", - "type": "string" - } - }, - "required": [ - "countryCode" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { - "202": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentResponse" } } }, - "description": "The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists.", + "description": "Current assignment, including an untouched version of 1.", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "Cache-Control": { + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "schema": { - "format": "uri-reference", - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -81776,150 +50528,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/SmsCampaignInvalidRequestProblem" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -81927,7 +50567,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -81971,211 +50611,20 @@ } } }, - "402": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentForbiddenProblem" } } }, - "description": "ENTITLEMENT_REQUIRED: Entitlement Required", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -82210,9 +50659,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -82231,299 +50680,81 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentNotFoundProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing", + "description": "SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "409": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentConflictProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -82531,105 +50762,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -82637,60 +50801,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -82725,9 +50845,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -82750,105 +50870,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -82856,98 +50909,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -82982,9 +50953,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -83007,150 +50978,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetSmsLineCampaignAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -83163,20 +51022,30 @@ "projectApiKey": [] } ], - "summary": "Purchase SMS number", + "summary": "Read SMS line campaign assignment", "tags": [ - "SMS numbers" + "SMS campaigns" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] - } - }, - "/v1/projects/{id}/platforms/sms/numbers/area-codes": { - "get": { - "description": "Lists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project.", - "operationId": "listNumberAreaCodes", + }, + "put": { + "description": "Attach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously.", + "operationId": "assignSmsLineCampaign", "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, { "in": "path", "name": "id", @@ -83186,113 +51055,179 @@ } }, { - "in": "query", - "name": "countryCode", + "in": "path", + "name": "resourceId", "required": true, "schema": { - "const": "US", "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignSmsLineCampaignRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "areaCodes": { - "items": { - "pattern": "^[2-9][0-9]{2}$", - "type": "string" - }, - "type": "array" - }, - "countryCode": { - "const": "US", - "type": "string" - } - }, - "required": [ - "areaCodes", - "countryCode" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "Current area-code coverage. An empty list is a successful coverage read, not an upstream failure.", + "description": "The original terminal operation on an authorized replay. No Retry-After is emitted.", "headers": { "Cache-Control": { - "description": "Private cache with the remaining five-minute service-cache lifetime.", + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "202": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Operation" + } + } + }, + "description": "Assignment accepted. Poll the operation Location until terminal.", + "headers": { + "Cache-Control": { + "description": "Assignment and operation responses must not be cached.", "schema": { + "example": "no-store", "type": "string" } }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/AssignSmsLineCampaignBadRequestProblem" } } + }, + "description": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -83340,101 +51275,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/AssignSmsLineCampaignForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -83469,9 +51319,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -83490,148 +51340,120 @@ } } }, + "404": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/AssignSmsLineCampaignNotFoundProblem" + } + } + }, + "description": "SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/AssignSmsLineCampaignConflictProblem" + } + } + }, + "description": "PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/IdempotencyKeyReusedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -83639,105 +51461,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -83745,60 +51500,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AssignSmsLineCampaignInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -83833,9 +51544,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -83858,105 +51569,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -83964,53 +51608,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AssignSmsLineCampaignServiceUnavailableProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -84045,9 +51652,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -84070,150 +51677,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AssignSmsLineCampaignGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -84226,20 +51721,32 @@ "projectApiKey": [] } ], - "summary": "List supported number area codes", + "summary": "Assign or replace SMS line campaign", "tags": [ - "SMS numbers" + "SMS campaigns" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] } }, - "/v1/projects/{id}/platforms/sms/numbers/countries": { - "get": { - "description": "Lists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project.", - "operationId": "listNumberCountries", + "/v1/projects/{id}/platforms/sms/numbers": { + "post": { + "description": "Buys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path.", + "operationId": "purchaseSmsNumber", "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, { "in": "path", "name": "id", @@ -84249,617 +51756,207 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PurchaseSmsNumberRequest" + } + } + }, + "required": true + }, "responses": { - "200": { + "202": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "countries": { - "items": { - "additionalProperties": false, - "properties": { - "callingCode": { - "pattern": "^\\+[1-9][0-9]{0,2}$", - "type": "string" - }, - "countryCode": { - "pattern": "^[A-Z]{2}$", - "type": "string" - }, - "displayName": { - "type": "string" - } - }, - "required": [ - "callingCode", - "countryCode", - "displayName" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "countries" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, - "description": "Supported countries.", + "description": "The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "401": { + "400": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/PurchaseSmsNumberBadRequestProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "401": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "429": { + "402": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/EntitlementRequiredProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "ENTITLEMENT_REQUIRED: Entitlement Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "500": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/PurchaseSmsNumberForbiddenProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -84894,9 +51991,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -84915,530 +52012,137 @@ } } }, - "502": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectClosingProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "PROJECT_CLOSING: Project Is Closing", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "503": { + "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PurchaseSmsNumberUnprocessableEntityProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "504": { + "429": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RateLimitedProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - } - }, - "security": [ - { - "accountServiceKey": [] - }, - { - "projectApiKey": [] - } - ], - "summary": "List supported number countries", - "tags": [ - "SMS numbers" - ], - "x-required-permissions": [ - "platforms:read" - ] - } - }, - "/v1/projects/{id}/platforms/telegram/bots": { - "post": { - "description": "Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.", - "operationId": "connectTelegramBot", - "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": {}, - "type": "object" + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "required": true - }, - "responses": { - "202": { + "500": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/PurchaseSmsNumberInternalServerErrorProblem" } } }, - "description": "Setup accepted. Open detail.setupUrl and poll the operation.", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -85449,46 +52153,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { - "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { - "minimum": 0, - "type": "integer" + "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -85502,102 +52198,59 @@ } } }, - "400": { + "502": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/PurchaseSmsNumberServiceUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -85608,38 +52261,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -85653,354 +52306,194 @@ } } }, - "401": { + "504": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/PurchaseSmsNumberGatewayTimeoutProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } + } + }, + "security": [ + { + "accountServiceKey": [] }, - "403": { + { + "projectApiKey": [] + } + ], + "summary": "Purchase SMS number", + "tags": [ + "SMS numbers" + ], + "x-required-permissions": [ + "platforms:write" + ] + } + }, + "/v1/projects/{id}/platforms/sms/numbers/area-codes": { + "get": { + "description": "Lists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project.", + "operationId": "listNumberAreaCodes", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "countryCode", + "required": true, + "schema": { + "const": "US", + "type": "string" + } + } + ], + "responses": { + "200": { "content": { - "application/problem+json": { + "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListNumberAreaCodesResponse" + } + } + }, + "description": "Current area-code coverage. An empty list is a successful coverage read, not an upstream failure.", + "headers": { + "Cache-Control": { + "description": "Private cache with the remaining five-minute service-cache lifetime.", "schema": { "type": "string" } }, + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "409": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "TELEGRAM_PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Telegram Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/telegram-project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "TELEGRAM_PROVISION_IN_PROGRESS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "operationId": { - "type": "string" - }, - "operationUrl": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Telegram Provision In Progress", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/telegram-provision-in-progress", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "operationId", - "operationUrl" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberAreaCodesForbiddenProblem" } } }, - "description": "TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -86011,38 +52504,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -86060,189 +52553,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -86250,105 +52592,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -86356,60 +52631,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberAreaCodesInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -86444,9 +52675,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -86469,105 +52700,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -86575,53 +52739,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -86656,9 +52783,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -86681,150 +52808,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberAreaCodesGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -86837,19 +52852,19 @@ "projectApiKey": [] } ], - "summary": "Connect Telegram bot", + "summary": "List supported number area codes", "tags": [ - "Telegram" + "SMS numbers" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] } }, - "/v1/projects/{id}/platforms/voice/lines/profile-assignments/batch": { - "post": { - "description": "Atomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project.", - "operationId": "batchUpdateVoiceLineProfileAssignments", + "/v1/projects/{id}/platforms/sms/numbers/countries": { + "get": { + "description": "Lists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project.", + "operationId": "listNumberCountries", "parameters": [ { "in": "path", @@ -86860,167 +52875,43 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "updates": { - "items": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "profileId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "resourceId": { - "type": "string" - } - }, - "required": [ - "expectedVersion", - "profileId", - "resourceId" - ], - "type": "object" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "updates" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignments": { - "items": { - "additionalProperties": false, - "properties": { - "profileId": { - "type": "string" - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "projectId", - "resourceId", - "resourceVersion", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "assignments" - ], - "type": "object" + "$ref": "#/components/schemas/ListNumberCountriesResponse" } } }, - "description": "The updated line profile assignments.", + "description": "Supported countries.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -87028,492 +52919,64 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { - "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } - }, - "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } - } - } - }, - "403": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "409": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Default Profile Assignment Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberCountriesForbiddenProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -87524,38 +52987,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -87573,144 +53036,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -87718,105 +53075,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -87824,60 +53114,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberCountriesInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -87912,9 +53158,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -87937,105 +53183,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -88043,53 +53222,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -88124,9 +53266,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -88149,150 +53291,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListNumberCountriesGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -88305,362 +53335,203 @@ "projectApiKey": [] } ], - "summary": "Batch update Voice line profile assignments", + "summary": "List supported number countries", "tags": [ - "Voice" + "SMS numbers" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] } }, - "/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile": { - "delete": { - "description": "Removes a line's explicit override when the resource version matches so the line follows the project default. Profiles and the pstn_voice ability are unchanged. Requires platforms:write bound to the path project.", - "operationId": "unassignVoiceLineProfile", + "/v1/projects/{id}/platforms/telegram/bots": { + "post": { + "description": "Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.", + "operationId": "connectTelegramBot", "parameters": [ { - "in": "path", - "name": "id", + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", "required": true, "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", "type": "string" } }, { "in": "path", - "name": "resourceId", + "name": "id", "required": true, "schema": { "type": "string" } - }, - { - "in": "query", - "name": "expectedVersion", - "required": true, - "schema": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectTelegramBotRequest" + } + } + }, + "required": true + }, "responses": { - "204": { - "description": "The Voice profile was unassigned.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "202": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Operation" } + } + }, + "description": "Setup accepted. Open detail.setupUrl and poll the operation.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "401": { + "400": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/ConnectTelegramBotBadRequestProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "401": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "404": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ConnectTelegramBotForbiddenProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -88671,38 +53542,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -88720,105 +53591,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ConnectTelegramBotConflictProblem" } } }, - "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "description": "TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -88826,144 +53630,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ConnectTelegramBotUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -88971,105 +53669,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -89077,60 +53708,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectTelegramBotInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -89165,9 +53752,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -89190,105 +53777,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -89296,53 +53816,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -89377,9 +53860,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -89402,150 +53885,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectTelegramBotGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -89558,17 +53929,19 @@ "projectApiKey": [] } ], - "summary": "Unassign Voice line profile", + "summary": "Connect Telegram bot", "tags": [ - "Voice" + "Telegram" ], "x-required-permissions": [ "platforms:write" ] - }, - "get": { - "description": "Gets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project.", - "operationId": "getVoiceLineProfileAssignment", + } + }, + "/v1/projects/{id}/platforms/voice/lines/profile-assignments/batch": { + "post": { + "description": "Atomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project.", + "operationId": "batchUpdateVoiceLineProfileAssignments", "parameters": [ { "in": "path", @@ -89577,115 +53950,55 @@ "schema": { "type": "string" } - }, - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "profileId": { - "type": "string" - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "projectId", - "resourceId", - "resourceVersion", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse" } } }, - "description": "The line profile assignment.", + "description": "The updated line profile assignments.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "RateLimit": { + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -89693,7 +54006,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -89741,101 +54054,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -89870,9 +54098,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -89895,250 +54123,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found", + "description": "RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsConflictProblem" } } + }, + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -90146,105 +54240,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -90252,60 +54279,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -90340,9 +54323,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -90365,105 +54348,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -90471,53 +54387,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -90552,9 +54431,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -90577,150 +54456,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -90733,17 +54500,19 @@ "projectApiKey": [] } ], - "summary": "Get Voice line profile assignment", + "summary": "Batch update Voice line profile assignments", "tags": [ "Voice" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] - }, - "put": { - "description": "Assigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project.", - "operationId": "assignVoiceLineProfile", + } + }, + "/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile": { + "delete": { + "description": "Removes a line's explicit override when the resource version matches so the line follows the project default. Profiles and the pstn_voice ability are unchanged. Requires platforms:write bound to the path project.", + "operationId": "unassignVoiceLineProfile", "parameters": [ { "in": "path", @@ -90760,132 +54529,48 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "expectedVersion", + "required": true, + "schema": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "profileId": { - "type": "string" - } - }, - "required": [ - "expectedVersion", - "profileId" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "profileId": { - "type": "string" - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "projectId", - "resourceId", - "resourceVersion", - "updatedAt" - ], - "type": "object" - } - } - }, - "description": "The updated Voice line profile assignment.", + "204": { + "description": "The Voice profile was unassigned.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -90893,7 +54578,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -90941,101 +54626,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UnassignVoiceLineProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -91070,9 +54670,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -91095,150 +54695,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, - "description": "RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -91246,191 +54734,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Default Profile Assignment Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/VoiceProfileVersionConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -91438,144 +54773,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -91583,105 +54812,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -91689,60 +54851,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignVoiceLineProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -91777,9 +54895,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -91802,105 +54920,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -91908,53 +54959,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -91989,9 +55003,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -92014,150 +55028,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UnassignVoiceLineProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -92170,19 +55072,17 @@ "projectApiKey": [] } ], - "summary": "Assign Voice line profile", + "summary": "Unassign Voice line profile", "tags": [ "Voice" ], "x-required-permissions": [ "platforms:write" ] - } - }, - "/v1/projects/{id}/platforms/voice/profiles": { + }, "get": { - "description": "Lists reusable Voice profiles in this project. Requires platforms:read bound to the path project.", - "operationId": "listVoiceProfiles", + "description": "Gets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project.", + "operationId": "getVoiceLineProfileAssignment", "parameters": [ { "in": "path", @@ -92193,30 +55093,10 @@ } }, { - "in": "query", - "name": "default", - "schema": { - "enum": [ - "true", - "false" - ], - "type": "string" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "maximum": 200, - "minimum": 1, - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", + "in": "path", + "name": "resourceId", + "required": true, "schema": { - "minLength": 1, "type": "string" } } @@ -92226,290 +55106,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "nextPageToken": { - "type": "string" - }, - "profiles": { - "items": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "profiles" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceLineProfileAssignment" } } }, - "description": "A page of Voice profiles.", + "description": "The line profile assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -92517,7 +55145,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -92565,101 +55193,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetVoiceLineProfileAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -92694,9 +55237,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -92715,254 +55258,120 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -92970,60 +55379,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetVoiceLineProfileAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -93058,9 +55423,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -93083,105 +55448,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -93189,53 +55487,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -93270,9 +55531,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -93295,150 +55556,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetVoiceLineProfileAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -93451,7 +55600,7 @@ "projectApiKey": [] } ], - "summary": "List Voice profiles", + "summary": "Get Voice line profile assignment", "tags": [ "Voice" ], @@ -93459,9 +55608,9 @@ "platforms:read" ] }, - "post": { - "description": "Creates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project.", - "operationId": "createVoiceProfile", + "put": { + "description": "Assigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project.", + "operationId": "assignVoiceLineProfile", "parameters": [ { "in": "path", @@ -93470,315 +55619,63 @@ "schema": { "type": "string" } + }, + { + "in": "path", + "name": "resourceId", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - } - }, - "required": [ - "name", - "protocol" - ], - "type": "object" + "$ref": "#/components/schemas/AssignVoiceLineProfileRequest" } } }, "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceLineProfileAssignment" } } }, - "description": "The created Voice profile.", + "description": "The updated Voice line profile assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -93786,7 +55683,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -93834,101 +55731,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/AssignVoiceLineProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -93963,9 +55775,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -93984,299 +55796,120 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_DEFAULT_PROFILE_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Default Profile Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-default-profile-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AssignVoiceLineProfileNotFoundProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required", + "description": "RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/AssignVoiceLineProfileConflictProblem" } } + }, + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -94284,105 +55917,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -94390,60 +55956,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AssignVoiceLineProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -94478,9 +56000,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -94503,105 +56025,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -94609,53 +56064,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -94690,9 +56108,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -94715,150 +56133,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/AssignVoiceLineProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -94871,7 +56177,7 @@ "projectApiKey": [] } ], - "summary": "Create Voice profile", + "summary": "Assign Voice line profile", "tags": [ "Voice" ], @@ -94880,10 +56186,10 @@ ] } }, - "/v1/projects/{id}/platforms/voice/profiles/default": { + "/v1/projects/{id}/platforms/voice/profiles": { "get": { - "description": "Gets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project.", - "operationId": "getDefaultVoiceProfile", + "description": "Lists reusable Voice profiles in this project. Requires platforms:read bound to the path project.", + "operationId": "listVoiceProfiles", "parameters": [ { "in": "path", @@ -94892,6 +56198,30 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "default", + "schema": { + "$ref": "#/components/schemas/ListVoiceProfilesDefaultInput" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "maximum": 200, + "minimum": 1, + "type": "integer" + } + }, + { + "in": "query", + "name": "pageToken", + "schema": { + "minLength": 1, + "type": "string" + } } ], "responses": { @@ -94899,531 +56229,103 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfilePage" } } }, - "description": "The current default Voice profile.", + "description": "A page of Voice profiles.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "401": { - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" - } - } - }, - "description": "NOT_AUTHENTICATED: Not Authenticated", - "headers": { "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "401": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "404": { + "403": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListVoiceProfilesForbiddenProblem" } } }, - "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -95434,38 +56336,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -95483,144 +56385,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -95628,105 +56424,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -95734,60 +56463,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListVoiceProfilesInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -95822,9 +56507,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -95847,105 +56532,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -95953,53 +56571,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -96034,9 +56615,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -96059,150 +56640,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListVoiceProfilesGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -96215,7 +56684,7 @@ "projectApiKey": [] } ], - "summary": "Get default Voice profile", + "summary": "List Voice profiles", "tags": [ "Voice" ], @@ -96223,9 +56692,9 @@ "platforms:read" ] }, - "patch": { - "description": "Patches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project.", - "operationId": "updateDefaultVoiceProfile", + "post": { + "description": "Creates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project.", + "operationId": "createVoiceProfile", "parameters": [ { "in": "path", @@ -96240,308 +56709,49 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - } - }, - "required": [ - "expectedVersion" - ], - "type": "object" + "$ref": "#/components/schemas/CreateVoiceProfileRequest" } } }, "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfile" } } }, - "description": "The updated default Voice profile.", + "description": "The created Voice profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -96549,7 +56759,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -96597,207 +56807,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "404": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateVoiceProfileForbiddenProblem" } } }, - "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -96808,38 +56827,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -96857,232 +56876,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_DIRECTION_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Direction Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-direction-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateVoiceProfileConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -97090,144 +56915,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -97235,105 +56954,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -97341,60 +56993,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -97429,9 +57037,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -97454,105 +57062,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -97560,53 +57101,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -97641,9 +57145,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -97666,150 +57170,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -97822,17 +57214,19 @@ "projectApiKey": [] } ], - "summary": "Update default Voice profile", + "summary": "Create Voice profile", "tags": [ "Voice" ], "x-required-permissions": [ "platforms:write" ] - }, - "put": { - "description": "Creates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project.", - "operationId": "createDefaultVoiceProfile", + } + }, + "/v1/projects/{id}/platforms/voice/profiles/default": { + "get": { + "description": "Gets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project.", + "operationId": "getDefaultVoiceProfile", "parameters": [ { "in": "path", @@ -97842,584 +57236,44 @@ "type": "string" } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - } - }, - "required": [ - "protocol" - ], - "type": "object" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" - } - } - }, - "description": "The identically replayed default Voice profile.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "201": { + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfile" } } }, - "description": "The created default Voice profile.", + "description": "The current default Voice profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -98427,7 +57281,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -98475,101 +57329,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetDefaultVoiceProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -98604,9 +57373,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -98625,154 +57394,42 @@ } } }, - "409": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_DEFAULT_PROFILE_EXISTS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Default Profile Exists", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-default-profile-exists", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists", + "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -98780,144 +57437,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -98925,105 +57476,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -99031,60 +57515,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetDefaultVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -99119,9 +57559,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -99144,105 +57584,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -99250,53 +57623,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -99331,9 +57667,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -99356,150 +57692,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetDefaultVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -99512,19 +57736,17 @@ "projectApiKey": [] } ], - "summary": "Create default Voice profile", + "summary": "Get default Voice profile", "tags": [ "Voice" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] - } - }, - "/v1/projects/{id}/platforms/voice/profiles/{profileId}": { - "delete": { - "description": "Deletes an additional profile when expectedVersion matches. Assigned profiles require force=true, which atomically removes every stored override so affected lines follow the default. The default can never be deleted. Requires platforms:write bound to the path project.", - "operationId": "deleteVoiceProfile", + }, + "patch": { + "description": "Patches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project.", + "operationId": "updateDefaultVoiceProfile", "parameters": [ { "in": "path", @@ -99533,96 +57755,55 @@ "schema": { "type": "string" } - }, - { - "in": "path", - "name": "profileId", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "expectedVersion", - "required": true, - "schema": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - { - "in": "query", - "name": "force", - "schema": { - "enum": [ - "true", - "false" - ], - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDefaultVoiceProfileRequest" + } + } + }, + "required": true + }, "responses": { - "204": { - "description": "The Voice profile was deleted.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/VoiceProfile" } + } + }, + "description": "The updated default Voice profile.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -99630,7 +57811,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -99678,101 +57859,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateDefaultVoiceProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -99807,9 +57903,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -99832,105 +57928,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -99938,150 +57967,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_IN_USE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile In Use", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-in-use", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/UpdateDefaultVoiceProfileConflictProblem" } + } + }, + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -100089,144 +58006,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -100234,105 +58045,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -100340,60 +58084,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateDefaultVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -100428,9 +58128,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -100453,105 +58153,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -100559,53 +58192,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -100640,9 +58236,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -100665,150 +58261,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateDefaultVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -100821,7 +58305,7 @@ "projectApiKey": [] } ], - "summary": "Delete Voice profile", + "summary": "Update default Voice profile", "tags": [ "Voice" ], @@ -100829,9 +58313,9 @@ "platforms:write" ] }, - "get": { - "description": "Gets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project.", - "operationId": "getVoiceProfile", + "put": { + "description": "Creates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project.", + "operationId": "createDefaultVoiceProfile", "parameters": [ { "in": "path", @@ -100840,290 +58324,94 @@ "schema": { "type": "string" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDefaultVoiceProfileRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VoiceProfile" + } + } + }, + "description": "The identically replayed default Voice profile.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } }, - { - "in": "path", - "name": "profileId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfile" } } }, - "description": "The Voice profile.", + "description": "The created default Voice profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -101131,7 +58419,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -101179,101 +58467,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateDefaultVoiceProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -101308,9 +58511,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -101329,109 +58532,42 @@ } } }, - "404": { + "409": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateDefaultVoiceProfileConflictProblem" } } }, - "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -101439,144 +58575,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -101584,105 +58614,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -101690,60 +58653,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateDefaultVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -101778,9 +58697,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -101803,105 +58722,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -101909,53 +58761,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -101990,9 +58805,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -102015,150 +58830,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateDefaultVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -102171,17 +58874,19 @@ "projectApiKey": [] } ], - "summary": "Get Voice profile", + "summary": "Create default Voice profile", "tags": [ "Voice" ], "x-required-permissions": [ - "platforms:read" + "platforms:write" ] - }, - "patch": { - "description": "Patches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project.", - "operationId": "updateVoiceProfile", + } + }, + "/v1/projects/{id}/platforms/voice/profiles/{profileId}": { + "delete": { + "description": "Deletes an additional profile when expectedVersion matches. Assigned profiles require force=true, which atomically removes every stored override so affected lines follow the default. The default can never be deleted. Requires platforms:write bound to the path project.", + "operationId": "deleteVoiceProfile", "parameters": [ { "in": "path", @@ -102198,267 +58903,120 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "expectedVersion", + "required": true, + "schema": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + { + "in": "query", + "name": "force", + "schema": { + "$ref": "#/components/schemas/DeleteVoiceProfileForceInput" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - } - }, - "required": [ - "expectedVersion" - ], - "type": "object" + "responses": { + "204": { + "description": "The Voice profile was deleted.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "required": true - }, - "responses": { - "200": { + "401": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "configuration": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "outbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "inbound", - "outbound" - ], - "type": "object" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "lineCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mediaEncryption": { - "enum": [ - "auto", - "srtp" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "profileId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "protocol": { - "const": "sip", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "version": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "The updated Voice profile.", + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { + "Link": { + "description": "Optional related resources.", + "schema": { + "type": "string" + } + }, + "RateLimit": { + "description": "Optional rate limit information.", + "schema": { + "type": "string" + } + }, + "RateLimit-Policy": { + "description": "Optional rate limit policy.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "description": "Optional retry delay or HTTP date.", + "schema": { + "type": "string" + } + }, + "WWW-Authenticate": { + "required": true, + "schema": { + "type": "string" + } + }, + "X-Request-ID": { + "description": "Application request identifier.", + "schema": { + "type": "string" + } + } + } + }, + "403": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/DeleteVoiceProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -102469,38 +59027,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -102514,153 +59072,284 @@ } } }, - "401": { + "404": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/DeleteVoiceProfileConflictProblem" + } + } + }, + "description": "VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN: Voice Default Profile Deletion Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "429": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/RateLimitedProblem" + } + } + }, + "description": "RATE_LIMITED: Too Many Requests", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "500": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/DeleteVoiceProfileInternalServerErrorProblem" + } + } + }, + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, + "Link": { + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Optional rate limit information.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, - "WWW-Authenticate": { - "required": true, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Application request identifier.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "403": { + "502": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamFailureProblem" + } + } + }, + "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -102695,9 +59384,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -102716,290 +59405,185 @@ } } }, - "404": { + "504": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DeleteVoiceProfileGatewayTimeoutProblem" } } }, - "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "projectApiKey": [] + } + ], + "summary": "Delete Voice profile", + "tags": [ + "Voice" + ], + "x-required-permissions": [ + "platforms:write" + ] + }, + "get": { + "description": "Gets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project.", + "operationId": "getVoiceProfile", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "profileId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/VoiceProfile" } + } + }, + "description": "The Voice profile.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "409": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_DIRECTION_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Direction Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-direction-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetVoiceProfileForbiddenProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -103010,38 +59594,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -103055,254 +59639,120 @@ } } }, - "422": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -103310,60 +59760,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -103398,9 +59804,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -103423,105 +59829,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -103529,53 +59868,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -103610,9 +59912,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -103635,150 +59937,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -103791,19 +59981,17 @@ "projectApiKey": [] } ], - "summary": "Update Voice profile", + "summary": "Get Voice profile", "tags": [ "Voice" ], "x-required-permissions": [ - "platforms:write" + "platforms:read" ] - } - }, - "/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound": { - "delete": { - "description": "Removes a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project.", - "operationId": "deleteVoiceProfileInbound", + }, + "patch": { + "description": "Patches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project.", + "operationId": "updateVoiceProfile", "parameters": [ { "in": "path", @@ -103820,135 +60008,55 @@ "schema": { "type": "string" } - }, - { - "in": "query", - "name": "expectedVersion", - "required": true, - "schema": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateVoiceProfileRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "inbound", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfile" } } }, - "description": "The removed inbound configuration and next profile version.", + "description": "The updated Voice profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -103956,7 +60064,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -104004,101 +60112,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateVoiceProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -104133,9 +60156,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -104158,105 +60181,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -104264,150 +60220,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileConflictProblem" } } }, - "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -104415,144 +60259,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -104560,105 +60298,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -104666,60 +60337,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -104754,9 +60381,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -104779,105 +60406,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -104885,53 +60445,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -104966,9 +60489,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -104991,150 +60514,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -105147,17 +60558,19 @@ "projectApiKey": [] } ], - "summary": "Remove Voice profile inbound configuration", + "summary": "Update Voice profile", "tags": [ "Voice" ], "x-required-permissions": [ "platforms:write" ] - }, - "patch": { - "description": "Updates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project.", - "operationId": "updateVoiceProfileInbound", + } + }, + "/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound": { + "delete": { + "description": "Removes a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project.", + "operationId": "deleteVoiceProfileInbound", "parameters": [ { "in": "path", @@ -105174,177 +60587,55 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "expectedVersion", + "required": true, + "schema": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "password": { - "minLength": 1, - "type": "string" - }, - "username": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "password", - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "expectedVersion" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "inbound", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileInboundConfiguration" } } }, - "description": "The updated inbound configuration and profile version.", + "description": "The removed inbound configuration and next profile version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -105352,7 +60643,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -105400,101 +60691,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/DeleteVoiceProfileInboundForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -105529,9 +60735,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -105554,105 +60760,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -105660,191 +60799,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileInboundConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", + "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -105852,144 +60838,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -105997,105 +60877,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -106103,60 +60916,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileInboundInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -106191,9 +60960,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -106216,105 +60985,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -106322,53 +61024,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -106403,9 +61068,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -106428,150 +61093,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileInboundGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -106584,20 +61137,17 @@ "projectApiKey": [] } ], - "summary": "Update Voice profile inbound configuration", + "summary": "Remove Voice profile inbound configuration", "tags": [ "Voice" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ "platforms:write" ] }, - "put": { - "description": "Creates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project.", - "operationId": "replaceVoiceProfileInbound", + "patch": { + "description": "Updates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project.", + "operationId": "updateVoiceProfileInbound", "parameters": [ { "in": "path", @@ -106620,51 +61170,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "password": { - "minLength": 1, - "type": "string" - }, - "username": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "password", - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "credentials", - "destinationUri", - "expectedVersion" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateVoiceProfileInboundRequest" } } }, @@ -106675,237 +61181,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "inbound", - "profileVersion" - ], - "type": "object" - } - } - }, - "description": "The replaced inbound configuration and profile version.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "201": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "inbound": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "credentials": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "destinationUri": { - "type": "string" - } - }, - "required": [ - "credentials", - "destinationUri" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "inbound", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileInboundConfiguration" } } }, - "description": "The newly created inbound configuration and profile version.", + "description": "The updated inbound configuration and profile version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -106913,7 +61220,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -106961,101 +61268,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateVoiceProfileInboundForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -107090,9 +61312,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -107115,105 +61337,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -107221,191 +61376,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileInboundConflictProblem" } } }, "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -107413,144 +61415,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -107558,105 +61454,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -107664,60 +61493,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileInboundInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -107752,9 +61537,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -107777,105 +61562,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -107883,53 +61601,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -107964,9 +61645,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -107989,150 +61670,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileInboundGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -108145,7 +61714,7 @@ "projectApiKey": [] } ], - "summary": "Create or replace Voice profile inbound configuration", + "summary": "Update Voice profile inbound configuration", "tags": [ "Voice" ], @@ -108155,12 +61724,10 @@ "x-required-permissions": [ "platforms:write" ] - } - }, - "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound": { - "delete": { - "description": "Revokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project.", - "operationId": "deleteVoiceProfileOutbound", + }, + "put": { + "description": "Creates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project.", + "operationId": "replaceVoiceProfileInbound", "parameters": [ { "in": "path", @@ -108177,107 +61744,102 @@ "schema": { "type": "string" } - }, - { - "in": "query", - "name": "expectedVersion", - "required": true, - "schema": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceVoiceProfileInboundRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "outbound": { - "type": "null" - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "outbound", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileInboundConfiguration" } } }, - "description": "Outbound calling was revoked.", + "description": "The replaced inbound configuration and profile version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "201": { + "content": { + "application/json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/VoiceProfileInboundConfiguration" } } + }, + "description": "The newly created inbound configuration and profile version.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -108325,101 +61887,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ReplaceVoiceProfileInboundForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -108454,9 +61931,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -108479,105 +61956,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -108585,150 +61995,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_NOT_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Not Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-not-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReplaceVoiceProfileInboundConflictProblem" } } }, - "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -108736,144 +62034,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -108881,105 +62073,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -108987,60 +62112,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReplaceVoiceProfileInboundInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -109075,9 +62156,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -109100,105 +62181,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -109206,53 +62220,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -109287,9 +62264,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -109312,150 +62289,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReplaceVoiceProfileInboundGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -109468,17 +62333,22 @@ "projectApiKey": [] } ], - "summary": "Revoke Voice profile outbound credential", + "summary": "Create or replace Voice profile inbound configuration", "tags": [ "Voice" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ "platforms:write" ] - }, - "patch": { - "description": "Changes a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project.", - "operationId": "updateVoiceProfileOutboundAuthentication", + } + }, + "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound": { + "delete": { + "description": "Revokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project.", + "operationId": "deleteVoiceProfileOutbound", "parameters": [ { "in": "path", @@ -109495,217 +62365,55 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "expectedVersion", + "required": true, + "schema": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - } - }, - "required": [ - "algorithm" - ], - "type": "object" - }, - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "authentication", - "expectedVersion" - ], - "type": "object" - } - } - }, - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "outbound": { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "outbound", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/DeleteVoiceProfileOutboundResponse" } } }, - "description": "The current outbound configuration and profile version.", + "description": "Outbound calling was revoked.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -109713,7 +62421,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -109761,101 +62469,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/DeleteVoiceProfileOutboundForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -109890,9 +62513,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -109915,105 +62538,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -110021,232 +62577,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_NOT_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Not Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-not-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileOutboundConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", + "description": "VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -110254,144 +62616,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -110399,105 +62655,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -110505,60 +62694,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileOutboundInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -110593,9 +62738,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -110618,105 +62763,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -110724,53 +62802,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -110805,9 +62846,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -110830,150 +62871,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteVoiceProfileOutboundGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -110986,7 +62915,7 @@ "projectApiKey": [] } ], - "summary": "Update Voice profile outbound authentication policy", + "summary": "Revoke Voice profile outbound credential", "tags": [ "Voice" ], @@ -110994,22 +62923,10 @@ "platforms:write" ] }, - "put": { - "description": "Configures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.", - "operationId": "configureVoiceProfileOutbound", + "patch": { + "description": "Changes a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project.", + "operationId": "updateVoiceProfileOutboundAuthentication", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", "name": "id", @@ -111031,35 +62948,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - } - }, - "required": [ - "algorithm" - ], - "type": "object" - }, - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "authentication", - "expectedVersion" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationRequest" } } }, @@ -111070,520 +62959,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "outbound": { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - "password": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "outbound", - "password", - "profileVersion" - ], - "type": "object" - } - } - }, - "description": "An idempotent replay with an explicit null password.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "201": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "outbound": { - "additionalProperties": false, - "properties": { - "authentication": { - "additionalProperties": false, - "properties": { - "algorithm": { - "enum": [ - "sha-256", - "md5" - ], - "type": "string" - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "username": { - "type": "string" - }, - "validFrom": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "algorithm", - "previousPasswordValidUntil", - "username", - "validFrom" - ], - "type": "object" - }, - "connection": { - "additionalProperties": false, - "properties": { - "endpoints": { - "items": { - "additionalProperties": false, - "properties": { - "host": { - "type": "string" - }, - "port": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "transport": { - "enum": [ - "udp", - "tcp", - "tls" - ], - "type": "string" - } - }, - "required": [ - "host", - "port", - "transport" - ], - "type": "object" - }, - "minItems": 1, - "type": "array" - }, - "realm": { - "type": "string" - } - }, - "required": [ - "endpoints", - "realm" - ], - "type": "object" - } - }, - "required": [ - "authentication", - "connection" - ], - "type": "object" - }, - "password": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "outbound", - "password", - "profileVersion" - ], - "type": "object" - } - } - }, - "description": "The configured outbound connection and display-once password.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse" } } }, - "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "description": "The current outbound configuration and profile version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -111591,7 +62998,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -111639,101 +63046,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -111768,9 +63090,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -111793,105 +63115,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -111899,232 +63154,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Already Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_CONFIGURED: Voice Outbound Already Configured", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -112132,189 +63193,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -112322,105 +63232,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -112428,60 +63271,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -112516,9 +63315,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -112541,105 +63340,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -112647,53 +63379,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -112728,9 +63423,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -112753,150 +63448,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -112909,22 +63492,17 @@ "projectApiKey": [] } ], - "summary": "Configure Voice profile outbound credential", + "summary": "Update Voice profile outbound authentication policy", "tags": [ "Voice" ], - "x-photon-mcp": { - "enabled": false - }, "x-required-permissions": [ "platforms:write" ] - } - }, - "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound/rotate": { - "post": { - "description": "Rotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.", - "operationId": "rotateVoiceProfileOutboundCredential", + }, + "put": { + "description": "Configures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.", + "operationId": "configureVoiceProfileOutbound", "parameters": [ { "description": "Identifies one logical mutation across retries.", @@ -112959,26 +63537,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expectedVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "mode": { - "enum": [ - "normal", - "emergency" - ], - "type": "string" - } - }, - "required": [ - "expectedVersion", - "mode" - ], - "type": "object" + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundRequest" } } }, @@ -112989,254 +63548,116 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "password": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "previousPasswordValidUntil": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "profileVersion": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "password", - "previousPasswordValidUntil", - "profileVersion" - ], - "type": "object" + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundResponse" } } }, - "description": "The rotated password result and next profile version.", + "description": "An idempotent replay with an explicit null password.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "201": { + "content": { + "application/json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundResponse" } } + }, + "description": "The configured outbound connection and display-once password.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "400": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -113244,7 +63665,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -113292,101 +63713,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -113421,9 +63757,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -113446,105 +63782,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Voice Profile Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" } } }, "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -113552,232 +63821,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_PROFILE_VERSION_CONFLICT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Profile Version Conflict", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-profile-version-conflict", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_OPERATION_PENDING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Operation Pending", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-operation-pending", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VOICE_OUTBOUND_NOT_CONFIGURED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Voice Outbound Not Configured", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/voice-outbound-not-configured", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundConflictProblem" } } }, - "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_CONFIGURED: Voice Outbound Already Configured", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -113785,189 +63860,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -113975,105 +63899,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -114081,60 +63938,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -114169,9 +63982,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -114194,105 +64007,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -114300,53 +64046,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -114381,9 +64090,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -114406,150 +64115,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConfigureVoiceProfileOutboundGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -114562,7 +64159,7 @@ "projectApiKey": [] } ], - "summary": "Rotate Voice outbound credential", + "summary": "Configure Voice profile outbound credential", "tags": [ "Voice" ], @@ -114574,11 +64171,23 @@ ] } }, - "/v1/projects/{id}/platforms/whatsapp": { - "get": { - "description": "Reports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.", - "operationId": "getProjectWhatsappPlatform", + "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound/rotate": { + "post": { + "description": "Rotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.", + "operationId": "rotateVoiceProfileOutboundCredential", "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, { "in": "path", "name": "id", @@ -114586,454 +64195,375 @@ "schema": { "type": "string" } + }, + { + "in": "path", + "name": "profileId", + "required": true, + "schema": { + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialRequest" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "maxUserAssignments": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "mode": { - "const": "shared", - "type": "string" - } - }, - "required": [ - "maxUserAssignments", - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "dedicated", - "type": "string" - } - }, - "required": [ - "mode" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse" } } }, - "description": "The project's WhatsApp line mode.", + "description": "The rotated password result and next profile version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialBadRequestProblem" } + } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "401": { + "403": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialForbiddenProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", + "schema": { + "pattern": "^@-?[0-9]+$", + "type": "string" + } + }, + "Idempotent-Replayed": { + "description": "True when this response was replayed from an earlier attempt.", + "schema": { + "type": "boolean" + } + }, "Link": { - "description": "Optional related resources.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Optional rate limit information.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, - "WWW-Authenticate": { - "required": true, + "Sunset": { + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Application request identifier.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", + "schema": { + "type": "string" + } + }, + "X-Trace-ID": { + "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", "schema": { + "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "403": { + "404": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/VoiceProfileNotFoundProblem" + } + } + }, + "description": "VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialConflictProblem" } + } + }, + "description": "PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "422": { + "429": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -115041,60 +64571,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -115129,9 +64615,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -115154,105 +64640,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -115260,98 +64679,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, - "description": "BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -115386,9 +64723,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -115411,150 +64748,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -115567,32 +64792,23 @@ "projectApiKey": [] } ], - "summary": "Get project WhatsApp platform", + "summary": "Rotate Voice outbound credential", "tags": [ - "Platforms" + "Voice" ], + "x-photon-mcp": { + "enabled": false + }, "x-required-permissions": [ - "platforms:read" + "platforms:write" ] } }, - "/v1/projects/{id}/platforms/whatsapp-business/account": { - "delete": { - "description": "Disconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted.", - "operationId": "disconnectWhatsappBusinessAccount", + "/v1/projects/{id}/platforms/whatsapp": { + "get": { + "description": "Reports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.", + "operationId": "getProjectWhatsappPlatform", "parameters": [ - { - "description": "Identifies one logical mutation across retries.", - "in": "header", - "name": "Idempotency-Key", - "required": true, - "schema": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[\\x21-\\x7e]{1,255}$", - "type": "string" - } - }, { "in": "path", "name": "id", @@ -115607,424 +64823,103 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectPlatformSettings" } } }, - "description": "The replayed disconnect operation is terminal.", + "description": "The project's WhatsApp line mode.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "202": { + "401": { "content": { - "application/json": { + "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, - "description": "Account disconnect accepted. Poll Location after Retry-After.", + "description": "NOT_AUTHENTICATED: Not Authenticated", "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "Location": { - "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", + "description": "Optional related resources.", "schema": { - "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Minimum number of seconds to wait before reading the operation again.", - "schema": { - "minimum": 0, - "type": "integer" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "Optional retry delay or HTTP date.", "schema": { - "format": "date-time", "type": "string" } }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "WWW-Authenticate": { + "required": true, "schema": { "type": "string" } }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "X-Request-ID": { + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "400": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectWhatsappPlatformForbiddenProblem" } } }, - "description": "IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -116035,38 +64930,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -116080,153 +64975,59 @@ } } }, - "401": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "NOT_AUTHENTICATED: Not Authenticated", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, - "WWW-Authenticate": { - "required": true, - "schema": { - "type": "string" - } + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" } } }, - "403": { + "500": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetProjectWhatsappPlatformInternalServerErrorProblem" + } + } + }, + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -116261,9 +65062,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -116282,208 +65083,59 @@ } } }, - "404": { + "502": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_WABA_NOT_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Not Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-waba-not-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "409": { + "503": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_ACCOUNT_DISCONNECTING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Disconnecting", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-account-disconnecting", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_ACCOUNT_PROVISIONING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Has Provisioning Numbers", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-account-provisioning", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectWhatsappPlatformServiceUnavailableProblem" } } }, - "description": "WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers", + "description": "BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -116494,38 +65146,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -116539,360 +65191,280 @@ } } }, - "422": { + "504": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectWhatsappPlatformGatewayTimeoutProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + } + }, + "security": [ + { + "accountServiceKey": [] + }, + { + "projectApiKey": [] + } + ], + "summary": "Get project WhatsApp platform", + "tags": [ + "Platforms" + ], + "x-required-permissions": [ + "platforms:read" + ] + } + }, + "/v1/projects/{id}/platforms/whatsapp-business/account": { + "delete": { + "description": "Disconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted.", + "operationId": "disconnectWhatsappBusinessAccount", + "parameters": [ + { + "description": "Identifies one logical mutation across retries.", + "in": "header", + "name": "Idempotency-Key", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Operation" } + } + }, + "description": "The replayed disconnect operation is terminal.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "202": { + "content": { + "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/Operation" } + } + }, + "description": "Account disconnect accepted. Poll Location after Retry-After.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "$ref": "#/components/headers/Link" + }, + "Location": { + "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", "schema": { + "format": "uri-reference", "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Minimum number of seconds to wait before reading the operation again.", "schema": { - "type": "string" + "minimum": 0, + "type": "integer" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, - "429": { + "400": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountBadRequestProblem" } } }, - "description": "RATE_LIMITED: Too Many Requests", + "description": "IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "401": { + "content": { + "application/problem+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } - }, + } + }, + "description": "NOT_AUTHENTICATED: Not Authenticated", + "headers": { "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Optional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Optional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Optional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Optional retry delay or HTTP date.", "schema": { "type": "string" } }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "WWW-Authenticate": { + "required": true, "schema": { - "format": "date-time", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "description": "Application request identifier.", "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", "type": "string" } } } }, - "500": { + "403": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountForbiddenProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -116927,9 +65499,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -116948,163 +65520,176 @@ } } }, - "502": { + "404": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WhatsappWabaNotConnectedProblem" } } }, - "description": "UPSTREAM_FAILURE: Upstream Service Failure", + "description": "WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "409": { + "content": { + "application/problem+json": { "schema": { - "format": "date-time", - "type": "string" + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountConflictProblem" } + } + }, + "description": "WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountUnprocessableEntityProblem" } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "429": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/RateLimitedProblem" } } + }, + "description": "RATE_LIMITED: Too Many Requests", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "503": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountInternalServerErrorProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -117139,9 +65724,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -117160,102 +65745,59 @@ } } }, - "504": { + "502": { "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -117266,38 +65808,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -117310,6 +65852,45 @@ } } } + }, + "504": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/DisconnectWhatsappBusinessAccountGatewayTimeoutProblem" + } + } + }, + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } } }, "security": [ @@ -117346,223 +65927,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "accountName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "alerts": { - "items": { - "additionalProperties": false, - "properties": { - "description": { - "type": "string" - }, - "entityId": { - "type": "string" - }, - "entityType": { - "type": "string" - }, - "observedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "severity": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "description", - "entityId", - "entityType", - "observedAt", - "severity", - "status", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "businessId": { - "type": "string" - }, - "businessName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "connectedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "maxPhoneNumbersPerBusiness": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "outboundCapacity": { - "enum": [ - "50", - "250", - "1000", - "2000", - "10000", - "100000", - "UNLIMITED", - "UNTIERED", - "UNKNOWN" - ], - "type": "string" - }, - "restriction": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "observedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "status": { - "enum": [ - "FLAGGED", - "DISABLED", - "REINSTATED", - "UNKNOWN" - ], - "type": "string" - } - }, - "required": [ - "observedAt", - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "reviewStatus": { - "enum": [ - "PENDING", - "APPROVED", - "REJECTED", - "UNKNOWN" - ], - "type": "string" - }, - "senderCount": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "subscribedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "wabaId": { - "type": "string" - } - }, - "required": [ - "accountName", - "alerts", - "businessId", - "businessName", - "connectedAt", - "outboundCapacity", - "restriction", - "reviewStatus", - "senderCount", - "wabaId" - ], - "type": "object" + "$ref": "#/components/schemas/WhatsappBusinessAccount" } } }, "description": "The project's connected account.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -117570,7 +65966,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -117618,101 +66014,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetWhatsappBusinessAccountForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -117747,9 +66058,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -117772,105 +66083,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_WABA_NOT_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Not Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-waba-not-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WhatsappWabaNotConnectedProblem" } } }, "description": "WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -117878,144 +66122,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -118023,105 +66161,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -118129,60 +66200,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessAccountInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -118217,9 +66244,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -118242,105 +66269,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -118348,53 +66308,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -118429,9 +66352,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -118454,150 +66377,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessAccountGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -118638,118 +66449,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "phoneNumbers": { - "items": { - "additionalProperties": false, - "properties": { - "displayName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "ownership": { - "enum": [ - "photon", - "meta" - ], - "type": "string" - }, - "phoneNumber": { - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - }, - "phoneNumberId": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "displayName", - "ownership", - "phoneNumber", - "phoneNumberId" - ], - "type": "object" - }, - "type": "array" - }, - "wabaId": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "phoneNumbers", - "wabaId" - ], - "type": "object" + "$ref": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse" } } }, "description": "The current Meta number inventory for the connected WABA.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -118757,7 +66488,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -118805,101 +66536,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWhatsappAccountPhoneNumbersForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -118934,9 +66580,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -118959,105 +66605,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_WABA_NOT_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Not Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-waba-not-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WhatsappWabaNotConnectedProblem" } } }, "description": "WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -119065,144 +66644,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -119210,105 +66683,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -119316,60 +66722,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListWhatsappAccountPhoneNumbersInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -119404,9 +66766,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -119429,105 +66791,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -119535,53 +66830,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -119616,9 +66874,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -119641,150 +66899,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -119836,19 +66982,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "displayName": { - "type": "string" - }, - "voipResourceId": { - "type": "string" - } - }, - "required": [ - "voipResourceId" - ], - "type": "object" + "$ref": "#/components/schemas/CreateWhatsappVoipSenderRequest" } } }, @@ -119859,120 +66993,20 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "The sender provision was accepted. Poll the Location after Retry-After until the operation is terminal.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -119982,16 +67016,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -120001,24 +67029,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -120026,150 +67043,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -120177,7 +67082,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -120225,105 +67130,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/EntitlementRequiredProblem" } } }, "description": "ENTITLEMENT_REQUIRED: Entitlement Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -120331,101 +67169,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateWhatsappVoipSenderForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -120460,9 +67213,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -120485,150 +67238,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_WABA_NOT_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Not Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-waba-not-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp VoIP Source Not Eligible", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderNotFoundProblem" } } }, "description": "WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -120636,314 +67277,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_ACCOUNT_DISCONNECTING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Disconnecting", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-account-disconnecting", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_ACCOUNT_PROVISIONING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Business Account Has Provisioning Numbers", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-account-provisioning", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_SENDER_CONNECTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Sender Connected", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-sender-connected", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_SENDER_PROVISIONING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Sender Provisioning", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-sender-provisioning", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_VOIP_SOURCE_RELEASING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp VoIP Source Releasing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderConflictProblem" } } }, "description": "PROJECT_CLOSING: Project Is Closing; WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers; WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning; WHATSAPP_VOIP_SOURCE_RELEASING: WhatsApp VoIP Source Releasing", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -120951,230 +67316,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_DISPLAY_NAME_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "WhatsApp Display Name Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; WHATSAPP_DISPLAY_NAME_UNAVAILABLE: WhatsApp Display Name Unavailable; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -121182,105 +67355,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -121288,60 +67394,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -121376,9 +67438,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -121401,105 +67463,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -121507,98 +67502,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderServiceUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -121633,9 +67546,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -121658,150 +67571,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappVoipSenderGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -121853,30 +67654,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "phoneNumberId": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "wabaId": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "code", - "phoneNumberId", - "wabaId" - ], - "type": "object" + "$ref": "#/components/schemas/ConnectWhatsappBusinessRequest" } } }, @@ -121887,120 +67665,20 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "The code was accepted and onboarding was dispatched. GET the Location after the Retry-After interval until the operation is terminal.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -122010,16 +67688,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -122029,24 +67701,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122054,150 +67715,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectWhatsappBusinessBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122205,7 +67754,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -122253,105 +67802,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/EntitlementRequiredProblem" } } }, "description": "ENTITLEMENT_REQUIRED: Entitlement Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122359,101 +67841,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ConnectWhatsappBusinessForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -122488,9 +67885,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -122513,105 +67910,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectClosingProblem" } } }, "description": "PROJECT_CLOSING: Project Is Closing", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122619,189 +67949,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectWhatsappBusinessUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122809,105 +67988,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -122915,60 +68027,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectWhatsappBusinessInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -123003,9 +68071,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -123028,105 +68096,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -123134,98 +68135,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectWhatsappBusinessServiceUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -123260,9 +68179,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -123285,150 +68204,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ConnectWhatsappBusinessGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -123490,83 +68297,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "pattern": "^\\d{6}$", - "type": "string" - }, - "receivedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "code", - "receivedAt" - ], - "type": "object" + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse" } } }, "description": "A verification code received strictly after receivedAfter. Treat it as an authentication secret.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -123574,7 +68336,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -123622,101 +68384,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -123751,9 +68428,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -123776,150 +68453,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_VERIFICATION_CODE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "WhatsApp Verification Code Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeNotFoundProblem" } } }, "description": "RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -123927,189 +68492,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_VERIFICATION_WINDOW_EXPIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "WhatsApp Verification Window Expired", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-verification-window-expired", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; WHATSAPP_VERIFICATION_WINDOW_EXPIRED: WhatsApp Verification Window Expired", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -124117,105 +68531,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -124223,60 +68570,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -124311,9 +68614,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -124336,105 +68639,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -124442,53 +68678,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -124523,9 +68722,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -124548,150 +68747,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -124735,87 +68822,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "configId": { - "type": "string" - }, - "graphVersion": { - "type": "string" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "configId", - "graphVersion", - "scopes" - ], - "type": "object" + "$ref": "#/components/schemas/GetWhatsappSignupConfigResponse" } } }, "description": "The parameters to launch Embedded Signup with.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -124823,7 +68861,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -124871,465 +68909,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.\n\nOptional rate limit information.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "422": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - } - }, - "description": "VALIDATION_FAILED: Request Validation Failed", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "429": { - "content": { - "application/problem+json": { - "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - } - }, - "description": "RATE_LIMITED: Too Many Requests", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } - }, - "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } - }, - "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } - }, - "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } - }, - "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } - }, - "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } - }, - "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } - } - } - }, - "500": { - "content": { - "application/problem+json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappSignupConfigForbiddenProblem" } } }, - "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -125364,9 +68953,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -125385,99 +68974,98 @@ } } }, - "503": { + "422": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, - "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, "Link": { - "description": "Optional related resources.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Optional rate limit information.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Optional rate limit policy.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Optional retry delay or HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Application request identifier.", + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "429": { + "content": { + "application/problem+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RateLimitedProblem" } } + }, + "description": "RATE_LIMITED: Too Many Requests", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, - "504": { + "500": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetWhatsappSignupConfigInternalServerErrorProblem" } } }, - "description": "REQUEST_TIMEOUT: Request Timeout", + "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -125488,38 +69076,38 @@ } }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", + "description": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "schema": { "type": "string" } }, "RateLimit": { - "description": "Current rate-limit state.", + "description": "Current rate-limit state.\n\nOptional rate limit information.", "schema": { "type": "string" } }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", + "description": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "schema": { "type": "string" } }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", + "description": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "schema": { "type": "string" } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", + "description": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "schema": { "type": "string" } @@ -125532,6 +69120,87 @@ } } } + }, + "503": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/UpstreamUnavailableProblem" + } + } + }, + "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", + "headers": { + "Link": { + "description": "Optional related resources.", + "schema": { + "type": "string" + } + }, + "RateLimit": { + "description": "Optional rate limit information.", + "schema": { + "type": "string" + } + }, + "RateLimit-Policy": { + "description": "Optional rate limit policy.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "description": "Optional retry delay or HTTP date.", + "schema": { + "type": "string" + } + }, + "X-Request-ID": { + "description": "Application request identifier.", + "schema": { + "type": "string" + } + } + } + }, + "504": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + } + }, + "description": "REQUEST_TIMEOUT: Request Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } } }, "security": [ @@ -125597,137 +69266,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignments": { - "items": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" - }, - "type": "array" - }, - "nextPageToken": { - "type": "string" - } - }, - "required": [ - "assignments" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignmentPage" } } }, "description": "A page of WhatsApp shared line assignments.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -125735,7 +69305,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -125783,101 +69353,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWhatsappSharedLineAssignmentsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -125912,9 +69397,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -125937,144 +69422,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -126082,105 +69461,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -126188,60 +69500,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListWhatsappSharedLineAssignmentsInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -126276,9 +69544,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -126301,105 +69569,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -126407,53 +69608,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -126488,9 +69652,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -126513,150 +69677,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -126706,33 +69758,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "email": { - "format": "email", - "maxLength": 254, - "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", - "type": "string" - }, - "firstName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "handle": { - "pattern": "^\\+[1-9]\\d{1,14}$", - "type": "string" - }, - "lastName": { - "maxLength": 100, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "handle" - ], - "type": "object" + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentRequest" } } }, @@ -126743,122 +69769,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignment" } } }, "description": "The created WhatsApp shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -126866,150 +69808,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -127017,7 +69847,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -127065,101 +69895,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -127194,9 +69939,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -127219,232 +69964,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "WHATSAPP_MODE_DEDICATED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "WhatsApp Mode Is Dedicated", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/whatsapp-mode-dedicated", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SHARED_LINE_CAP_EXCEEDED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Shared Line Cap Exceeded", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/shared-line-cap-exceeded", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_EXISTS", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Assignment Exists", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-exists", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentConflictProblem" } } }, "description": "PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -127452,189 +70003,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -127642,105 +70042,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -127748,60 +70081,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -127836,9 +70125,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -127861,105 +70150,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -127967,139 +70189,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "SHARED_LINE_POOL_EXHAUSTED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Shared Line Pool Exhausted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/shared-line-pool-exhausted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentServiceUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -128134,9 +70233,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -128159,150 +70258,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -128351,122 +70338,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignment" } } }, "description": "The released WhatsApp shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -128474,7 +70377,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -128522,101 +70425,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -128651,9 +70469,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -128676,105 +70494,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Assignment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AssignmentNotFoundProblem" } } }, "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -128782,144 +70533,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -128927,105 +70572,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -129033,60 +70611,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -129121,9 +70655,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -129146,105 +70680,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -129252,53 +70719,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -129333,9 +70763,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -129358,150 +70788,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -129548,122 +70866,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "assignedPhoneNumber": { - "type": "string" - }, - "assignmentId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "email": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "handle": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "platform": { - "enum": [ - "imessage", - "whatsapp" - ], - "type": "string" - }, - "projectId": { - "type": "string" - }, - "releasedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "handle", - "platform", - "projectId", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/SharedLineAssignment" } } }, "description": "The WhatsApp shared line assignment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -129671,7 +70905,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -129719,101 +70953,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetWhatsappSharedLineAssignmentForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -129848,9 +70997,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -129873,105 +71022,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ASSIGNMENT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Assignment Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/assignment-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/AssignmentNotFoundProblem" } } }, "description": "ASSIGNMENT_NOT_FOUND: Assignment Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -129979,144 +71061,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -130124,105 +71100,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -130230,60 +71139,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappSharedLineAssignmentInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -130318,9 +71183,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -130343,105 +71208,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -130449,53 +71247,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -130530,9 +71291,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -130555,150 +71316,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetWhatsappSharedLineAssignmentGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -130722,7 +71371,7 @@ }, "/v1/projects/{id}/platforms/whatsapp/dedicated": { "post": { - "description": "Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent.", + "description": "Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent.", "operationId": "provisionWhatsappDedicatedLine", "parameters": [ { @@ -130751,120 +71400,20 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -130874,16 +71423,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -130893,24 +71436,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -130918,150 +71450,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131069,7 +71489,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -131117,105 +71537,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "ENTITLEMENT_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 402, - "type": "number" - }, - "title": { - "const": "Entitlement Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/entitlement-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/EntitlementRequiredProblem" } } }, "description": "ENTITLEMENT_REQUIRED: Entitlement Required", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131223,101 +71576,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -131352,9 +71620,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -131377,105 +71645,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_CLOSING", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Project Is Closing", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-closing", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectClosingProblem" } } }, "description": "PROJECT_CLOSING: Project Is Closing", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131483,189 +71684,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131673,105 +71723,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131779,60 +71762,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -131867,9 +71806,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -131892,105 +71831,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -131998,98 +71870,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "BILLING_NOT_PROVISIONED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Billing Not Provisioned", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/billing-not-provisioned", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineServiceUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -132124,9 +71914,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -132149,150 +71939,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ProvisionWhatsappDedicatedLineGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -132316,7 +71994,7 @@ }, "/v1/projects/{id}/platforms/whatsapp/dedicated/{resourceId}": { "delete": { - "description": "Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure.", + "description": "Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure.", "operationId": "releaseWhatsappDedicatedLine", "parameters": [ { @@ -132341,120 +72019,20 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "The WhatsApp ability and its charge period were removed.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -132464,16 +72042,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -132483,24 +72055,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -132508,120 +72069,20 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "cancellable": { - "type": "boolean" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "detail": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "endedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "error": { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "code", - "detail" - ], - "type": "object" - }, - "operationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "resourceId": { - "type": "string" - }, - "resourceType": { - "type": "string" - }, - "startedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "state": { - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" - }, - "type": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "cancellable", - "createdAt", - "operationId", - "projectId", - "resourceType", - "state", - "type", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Operation" } } }, "description": "The removal is still running. GET the Location after the Retry-After interval.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "Location": { "description": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", @@ -132631,16 +72092,10 @@ } }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { "description": "Minimum number of seconds to wait before reading the operation again.", @@ -132650,24 +72105,13 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -132675,7 +72119,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -132723,101 +72167,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ReleaseWhatsappDedicatedLineForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -132852,9 +72211,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -132877,105 +72236,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Resource Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ResourceNotFoundProblem" } } }, "description": "RESOURCE_NOT_FOUND: Resource Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -132983,144 +72275,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -133128,105 +72314,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "RATE_LIMITED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 429, - "type": "number" - }, - "title": { - "const": "Too Many Requests", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/rate-limited", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RateLimitedProblem" } } }, "description": "RATE_LIMITED: Too Many Requests", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -133234,60 +72353,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseWhatsappDedicatedLineInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -133322,9 +72397,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -133347,105 +72422,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -133453,53 +72461,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -133534,9 +72505,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -133559,150 +72530,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ReleaseWhatsappDedicatedLineGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -133726,6 +72585,7 @@ }, "/v1/projects/{projectId}": { "delete": { + "description": "Starts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation.", "operationId": "deleteProject", "parameters": [ { @@ -133754,189 +72614,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "agentProfile": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" - }, - "billingInitialization": { - "enum": [ - "pending", - "retry_required", - "completed", - "unknown" - ], - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorKind": { - "anyOf": [ - { - "enum": [ - "account", - "service_identity" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "agentProfile", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Project" } } }, "description": "The deleted project tombstone.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -133944,150 +72653,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteProjectBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -134095,7 +72692,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -134143,101 +72740,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/DeleteProjectForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -134272,9 +72784,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -134297,105 +72809,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -134403,105 +72848,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -134509,189 +72887,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteProjectUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -134699,7 +72926,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -134741,105 +72968,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -134847,53 +73007,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -134928,9 +73051,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -134953,150 +73076,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/DeleteProjectGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -135115,10 +73126,10 @@ ], "x-required-permissions": [ "project:delete" - ], - "description": "Starts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation." + ] }, "get": { + "description": "Returns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses.", "operationId": "getProject", "parameters": [ { @@ -135135,189 +73146,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "agentProfile": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" - }, - "billingInitialization": { - "enum": [ - "pending", - "retry_required", - "completed", - "unknown" - ], - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorKind": { - "anyOf": [ - { - "enum": [ - "account", - "service_identity" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "agentProfile", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Project" } } }, "description": "The requested project.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -135325,7 +73185,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -135373,101 +73233,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetProjectForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -135502,9 +73277,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -135527,105 +73302,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -135633,105 +73341,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -135739,144 +73380,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -135884,7 +73419,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -135926,105 +73461,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -136032,53 +73500,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -136113,9 +73544,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -136138,150 +73569,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetProjectGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -136300,10 +73619,10 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses." + ] }, "patch": { + "description": "Updates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header.", "operationId": "updateProject", "parameters": [ { @@ -136331,18 +73650,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateProjectRequest" } } }, @@ -136353,189 +73661,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "agentProfile": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" - }, - "billingInitialization": { - "enum": [ - "pending", - "retry_required", - "completed", - "unknown" - ], - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "createdByActorKind": { - "anyOf": [ - { - "enum": [ - "account", - "service_identity" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "organizationId": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "agentProfile", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt" - ], - "type": "object" + "$ref": "#/components/schemas/Project" } } }, "description": "The updated project.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -136543,150 +73700,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -136694,7 +73739,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -136742,101 +73787,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateProjectForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -136871,9 +73831,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -136896,105 +73856,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137002,105 +73895,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137108,105 +73934,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137214,189 +73973,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137404,7 +74012,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -137446,105 +74054,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137552,53 +74093,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -137633,9 +74137,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -137658,150 +74162,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -137820,12 +74212,12 @@ ], "x-required-permissions": [ "project:write" - ], - "description": "Updates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/agent-profile": { "get": { + "description": "Returns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar.", "operationId": "getAgentProfile", "parameters": [ { @@ -137842,93 +74234,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" + "$ref": "#/components/schemas/AgentProfile" } } }, "description": "The Project's agent profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -137936,7 +74273,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -137984,101 +74321,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetAgentProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -138113,9 +74365,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -138138,105 +74390,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -138244,105 +74429,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -138350,144 +74468,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -138495,7 +74507,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -138537,105 +74549,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -138643,53 +74588,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -138724,9 +74632,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -138749,150 +74657,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetAgentProfileGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -138911,10 +74707,10 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar." + ] }, "patch": { + "description": "Updates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header.", "operationId": "updateAgentProfile", "parameters": [ { @@ -138942,25 +74738,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" + "$ref": "#/components/schemas/UpdateAgentProfileRequest" } } }, @@ -138971,93 +74749,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" + "$ref": "#/components/schemas/AgentProfile" } } }, "description": "The updated agent profile.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139065,150 +74788,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAgentProfileBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139216,7 +74827,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -139264,101 +74875,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateAgentProfileForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -139393,9 +74919,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -139418,105 +74944,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139524,105 +74983,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139630,105 +75022,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139736,189 +75061,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAgentProfileUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -139926,7 +75100,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -139968,105 +75142,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -140074,53 +75181,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -140155,9 +75225,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -140180,150 +75250,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateAgentProfileGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -140342,12 +75300,12 @@ ], "x-required-permissions": [ "project:write" - ], - "description": "Updates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/agent-profile/avatar": { "delete": { + "description": "Replaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header.", "operationId": "resetAgentProfileAvatar", "parameters": [ { @@ -140376,101 +75334,85 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" + "$ref": "#/components/schemas/AgentProfile" } } }, - "description": "The agent profile reset to the default avatar.", + "description": "The agent profile with the project's default avatar.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "400": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ResetAgentProfileAvatarBadRequestProblem" } } + }, + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "401": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -140518,101 +75460,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ResetAgentProfileAvatarForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -140647,9 +75504,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -140672,105 +75529,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -140778,105 +75568,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -140884,144 +75607,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ResetAgentProfileAvatarUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -141029,7 +75646,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -141071,105 +75688,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -141177,53 +75727,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -141258,9 +75771,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -141283,150 +75796,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ResetAgentProfileAvatarGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -141445,8 +75846,7 @@ ], "x-required-permissions": [ "project:write" - ], - "description": "Replaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header." + ] }, "put": { "description": "Commits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile.", @@ -141477,16 +75877,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "uploadId": { - "type": "string" - } - }, - "required": [ - "uploadId" - ], - "type": "object" + "$ref": "#/components/schemas/CommitAgentProfileAvatarRequest" } } }, @@ -141497,93 +75888,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "avatarUrl": { - "format": "uri", - "type": "string" - }, - "firstName": { - "minLength": 1, - "type": "string" - }, - "lastName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "avatarUrl", - "firstName", - "lastName" - ], - "type": "object" + "$ref": "#/components/schemas/AgentProfile" } } }, "description": "The agent profile with its committed avatar.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -141591,191 +75927,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CommitAgentProfileAvatarBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -141783,7 +75966,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -141831,101 +76014,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CommitAgentProfileAvatarForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -141960,9 +76058,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -141985,105 +76083,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -142091,105 +76122,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -142197,105 +76161,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -142303,189 +76200,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CommitAgentProfileAvatarUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -142493,7 +76239,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -142535,105 +76281,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -142641,53 +76320,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -142722,9 +76364,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -142747,150 +76389,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CommitAgentProfileAvatarGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -142930,21 +76460,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType" - ], - "type": "object" + "$ref": "#/components/schemas/CreateAgentProfileAvatarUploadRequest" } } }, @@ -142955,97 +76471,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expiresAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "formFields": { - "additionalProperties": { - "type": "string" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "uploadId": { - "type": "string" - }, - "uploadUrl": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "expiresAt", - "formFields", - "uploadId", - "uploadUrl" - ], - "type": "object" + "$ref": "#/components/schemas/AgentProfileAvatarUpload" } } }, "description": "A short-lived, project-bound presigned S3 POST.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -143053,7 +76510,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -143101,101 +76558,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateAgentProfileAvatarUploadForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -143230,9 +76602,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -143255,105 +76627,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -143361,105 +76666,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -143467,144 +76705,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -143612,7 +76744,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -143654,105 +76786,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -143760,53 +76825,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -143841,9 +76869,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -143866,150 +76894,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateAgentProfileAvatarUploadGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -144033,6 +76949,7 @@ }, "/v1/projects/{projectId}/api-keys": { "get": { + "description": "Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation.", "operationId": "listProjectApiKeys", "parameters": [ { @@ -144049,153 +76966,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiKeys": { - "items": { - "additionalProperties": false, - "properties": { - "apiKeyId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "permissions": { - "items": { - "description": "Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.", - "type": "string" - }, - "type": "array" - }, - "permissionsUpdatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "projectId": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "apiKeys" - ], - "type": "object" - } - } - }, - "description": "Every live key on the project, newest first. Never includes secrets.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/ListProjectApiKeysResponse" } + } + }, + "description": "The project's keys that have not been revoked, newest first. Never includes secrets.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -144203,105 +77005,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -144309,7 +77044,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -144357,101 +77092,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListProjectApiKeysForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -144486,9 +77136,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -144511,105 +77161,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -144617,105 +77200,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -144723,144 +77239,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -144868,7 +77278,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -144910,105 +77320,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -145016,7 +77359,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -145058,105 +77401,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RequestTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -145178,6 +77454,7 @@ ] }, "post": { + "description": "Creates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header.", "operationId": "createProjectApiKey", "parameters": [ { @@ -145205,39 +77482,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "expiresAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "name": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "permissions": { - "items": { - "enum": [ - "events:read", - "events:write", - "platforms:read", - "platforms:write", - "project:read", - "project:write" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "name", - "permissions" - ], - "type": "object" + "$ref": "#/components/schemas/CreateProjectApiKeyRequest" } } }, @@ -145248,154 +77493,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiKey": { - "additionalProperties": false, - "properties": { - "apiKeyId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "permissions": { - "items": { - "description": "Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.", - "type": "string" - }, - "type": "array" - }, - "permissionsUpdatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "projectId": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt" - ], - "type": "object" - }, - "secret": { - "type": "string" - } - }, - "required": [ - "apiKey", - "secret" - ], - "type": "object" - } - } - }, - "description": "The created key, with its secret. The secret is shown only here and cannot be recovered afterwards.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/CreateProjectApiKeyResponse" } + } + }, + "description": "The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -145403,191 +77532,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateProjectApiKeyBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -145595,7 +77571,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -145643,101 +77619,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateProjectApiKeyForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -145772,9 +77663,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -145797,105 +77688,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -145903,105 +77727,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "API_KEY_LIMIT_REACHED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "API Key Limit Reached", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/api-key-limit-reached", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ApiKeyLimitReachedProblem" } } }, "description": "API_KEY_LIMIT_REACHED: API Key Limit Reached", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146009,105 +77766,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146115,105 +77805,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146221,189 +77844,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/CreateProjectApiKeyUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146411,7 +77883,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -146453,105 +77925,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146559,7 +77964,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -146601,105 +78006,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RequestTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -146718,12 +78056,12 @@ }, "x-required-permissions": [ "project:manage_api_keys" - ], - "description": "Creates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/api-keys/{apiKeyId}": { "delete": { + "description": "Revokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header.", "operationId": "revokeProjectApiKey", "parameters": [ { @@ -146760,150 +78098,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiKey": { - "additionalProperties": false, - "properties": { - "apiKeyId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "permissions": { - "items": { - "description": "Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.", - "type": "string" - }, - "type": "array" - }, - "permissionsUpdatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "projectId": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt" - ], - "type": "object" - } - }, - "required": [ - "apiKey" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectApiKeyResponse" } } }, "description": "The revoked key. Repeating the delete returns the same revokedAt.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -146911,105 +78137,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeProjectApiKeyBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -147017,7 +78176,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -147065,101 +78224,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/RevokeProjectApiKeyForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -147194,9 +78268,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -147219,150 +78293,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "API_KEY_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "API Key Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/api-key-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/RevokeProjectApiKeyNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -147370,105 +78332,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -147476,144 +78371,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/RevokeProjectApiKeyUnprocessableEntityProblem" } } }, - "description": "VALIDATION_FAILED: Request Validation Failed", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -147621,7 +78410,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -147663,105 +78452,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -147769,7 +78491,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -147811,105 +78533,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RequestTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -147928,10 +78583,10 @@ }, "x-required-permissions": [ "project:manage_api_keys" - ], - "description": "Revokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header." + ] }, "patch": { + "description": "Replaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header.", "operationId": "updateProjectApiKey", "parameters": [ { @@ -147967,28 +78622,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "permissions": { - "items": { - "enum": [ - "events:read", - "events:write", - "platforms:read", - "platforms:write", - "project:read", - "project:write" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "permissions" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateProjectApiKeyRequest" } } }, @@ -147999,150 +78633,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiKey": { - "additionalProperties": false, - "properties": { - "apiKeyId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "createdByAccountId": { - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "permissions": { - "items": { - "description": "Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.", - "type": "string" - }, - "type": "array" - }, - "permissionsUpdatedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "projectId": { - "type": "string" - }, - "revokedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt" - ], - "type": "object" - } - }, - "required": [ - "apiKey" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectApiKeyResponse" } } }, "description": "The key with its new permission list. Sending the list it already holds returns it unchanged.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -148150,191 +78672,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REQUIRED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Required", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-required", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_INVALID", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Idempotency Key Invalid", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-invalid", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectApiKeyBadRequestProblem" } } }, "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -148342,7 +78711,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -148390,101 +78759,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateProjectApiKeyForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -148519,9 +78803,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -148544,150 +78828,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Project Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "API_KEY_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "API Key Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/api-key-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectApiKeyNotFoundProblem" } } }, "description": "PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -148695,105 +78867,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "API_KEY_REVOKED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "API Key Revoked", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/api-key-revoked", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ApiKeyRevokedProblem" } } }, "description": "API_KEY_REVOKED: API Key Revoked", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -148801,105 +78906,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PROJECT_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Project Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/project-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ProjectDeletedProblem" } } }, "description": "PROJECT_DELETED: Project Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -148907,105 +78945,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "PAYLOAD_TOO_LARGE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 413, - "type": "number" - }, - "title": { - "const": "Payload Too Large", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/payload-too-large", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -149013,189 +78984,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/UpdateProjectApiKeyUnprocessableEntityProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -149203,7 +79023,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -149245,105 +79065,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -149351,7 +79104,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -149393,105 +79146,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RequestTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -149510,12 +79196,12 @@ }, "x-required-permissions": [ "project:manage_api_keys" - ], - "description": "Replaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/billing": { "get": { + "description": "Returns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview.", "operationId": "getBillingOverview", "parameters": [ { @@ -149533,362 +79219,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "entitlementsVersion": { - "description": "Bumps on every entitlement change in any category.", - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "subscriptions": { - "description": "One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened.", - "items": { - "additionalProperties": false, - "properties": { - "cancelsAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the subscription will end instead of renewing, ISO 8601." - }, - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - }, - "categoryDisplayName": { - "anyOf": [ - { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Display name for the subscription category; absent or null when unconfigured." - }, - "currentPeriodEnd": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "End of the current billing period, ISO 8601." - }, - "entitlements": { - "description": "Feature gates granted by this category's plan.", - "items": { - "additionalProperties": false, - "properties": { - "featureKey": { - "description": "Feature gate key, e.g. imessage_shared_lines.max_user_assignments.", - "type": "string" - }, - "value": { - "description": "Gate value as a string.", - "type": "string" - } - }, - "required": [ - "featureKey", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "fixedCharges": { - "description": "Fixed charges defined by this category's current plan. Quantity is the plan default.", - "items": { - "additionalProperties": false, - "properties": { - "chargeModel": { - "enum": [ - "graduated", - "standard", - "volume" - ], - "type": "string" - }, - "displayName": { - "type": "string" - }, - "fixedChargeCode": { - "type": "string" - }, - "payInAdvance": { - "type": "boolean" - }, - "pricing": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "tiers": { - "items": { - "additionalProperties": false, - "properties": { - "flatAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fromUnit": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "perUnitAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "toUnit": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "flatAmount", - "fromUnit", - "perUnitAmount", - "toUnit" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "amount", - "tiers" - ], - "type": "object" - }, - "prorated": { - "type": "boolean" - }, - "quantity": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "chargeModel", - "displayName", - "fixedChargeCode", - "payInAdvance", - "pricing", - "prorated", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "planCode": { - "description": "This category's plan; display only.", - "type": "string" - }, - "status": { - "description": "State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.", - "enum": [ - "active", - "past_due", - "terminated" - ], - "type": "string", - "x-enumDescriptions": { - "active": "Subscribed and in good standing, on a free or a paid plan.", - "past_due": "The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.", - "terminated": "The subscription is gone. Not reported by the overview, which omits categories holding nothing." - } - } - }, - "required": [ - "cancelsAt", - "category", - "currentPeriodEnd", - "entitlements", - "fixedCharges", - "planCode", - "status" - ], - "type": "object" - }, - "type": "array" - }, - "usage": { - "description": "Current-period metered usage, priced.", - "items": { - "additionalProperties": false, - "properties": { - "amountCents": { - "description": "Cost accrued so far.", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "category": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - }, - "categoryDisplayName": { - "anyOf": [ - { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Display name for the subscription category; absent or null when unconfigured." - }, - "currency": { - "description": "ISO currency code.", - "type": "string" - }, - "displayName": { - "description": "Display name for this usage item.", - "type": "string" - }, - "metricCode": { - "description": "Metered thing, e.g. imessage_message.", - "type": "string" - }, - "units": { - "description": "Units consumed this period.", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "amountCents", - "category", - "currency", - "displayName", - "metricCode", - "units" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "entitlementsVersion", - "subscriptions", - "usage" - ], - "type": "object" + "$ref": "#/components/schemas/GetBillingOverviewResponse" } } }, "description": "Plan, entitlements, and current-period usage.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -149896,105 +79258,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -150002,7 +79297,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -150050,101 +79345,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetBillingOverviewForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -150179,9 +79389,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -150204,105 +79414,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -150310,144 +79453,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -150455,60 +79492,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetBillingOverviewInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -150543,9 +79536,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -150568,105 +79561,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -150674,53 +79600,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -150755,9 +79644,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -150780,150 +79669,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetBillingOverviewGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -150947,12 +79724,12 @@ ], "x-required-permissions": [ "project:read_usage" - ], - "description": "Returns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview." + ] } }, "/v1/projects/{projectId}/billing/operations/{operationId}": { "get": { + "description": "Returns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed.", "operationId": "getBillingOperation", "parameters": [ { @@ -150980,289 +79757,38 @@ "content": { "application/json": { "schema": { - "description": "Authoritative provisioning state. Poll the operation route while pending.", - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "failure": { - "type": "null" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "type": "null" - }, - "result": { - "type": "null" - }, - "status": { - "const": "pending", - "description": "Accepted and still executing. Poll the operation route.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "failure": { - "type": "null" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "result": { - "additionalProperties": false, - "properties": { - "type": { - "const": "version", - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "type", - "version" - ], - "type": "object" - }, - "status": { - "const": "succeeded", - "description": "Terminal. The result is authoritative.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "failure": { - "additionalProperties": false, - "properties": { - "code": { - "description": "Stable provider-neutral failure category.", - "enum": [ - "payment_method_required", - "payment_failed", - "not_provisioned", - "invalid_target", - "internal" - ], - "type": "string" - }, - "detail": { - "anyOf": [ - { - "enum": [ - "cancellation_scheduled", - "feature_not_sold_by_plan", - "feature_not_found", - "payment_timeout", - "plan_activation_timeout", - "plan_not_found", - "quantity_out_of_range", - "target_rejected" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "retryable": { - "type": "boolean" - } - }, - "required": [ - "code", - "detail", - "retryable" - ], - "type": "object" - }, - "kind": { - "enum": [ - "change_plan", - "adjust_fixed_charge_quantity" - ], - "type": "string" - }, - "operationId": { - "description": "Stable handle for this provisioning action.", - "type": "string" - }, - "resolvedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "result": { - "type": "null" - }, - "status": { - "const": "failed", - "description": "Terminal. Failure contains a stable code and retryability.", - "type": "string" - }, - "submittedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "failure", - "kind", - "operationId", - "submittedAt", - "resolvedAt", - "result", - "status" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/BillingOperation" } } }, "description": "Authoritative recovery snapshot for a billing operation.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -151270,105 +79796,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -151376,7 +79835,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -151424,101 +79883,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetBillingOperationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -151553,9 +79927,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -151578,105 +79952,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "OPERATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Operation Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/operation-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/OperationNotFoundProblem" } } }, "description": "OPERATION_NOT_FOUND: Operation Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -151684,105 +79991,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -151790,144 +80030,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -151935,60 +80069,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetBillingOperationInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -152023,9 +80113,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -152048,105 +80138,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -152154,53 +80177,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -152235,9 +80221,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -152260,150 +80246,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/GetBillingOperationGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -152427,12 +80301,12 @@ ], "x-required-permissions": [ "project:read_usage" - ], - "description": "Returns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed." + ] } }, "/v1/projects/{projectId}/billing/plans": { "get": { + "description": "Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan.", "operationId": "listBillingPlans", "parameters": [ { @@ -152450,817 +80324,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "plans": { - "additionalProperties": { - "items": { - "additionalProperties": false, - "properties": { - "baseAmountCents": { - "description": "Recurring base price in whole cents.", - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "categoryDisplayName": { - "anyOf": [ - { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Display name for the subscription category; absent or null when unconfigured." - }, - "currency": { - "description": "ISO currency code.", - "type": "string" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "entitlements": { - "items": { - "additionalProperties": false, - "properties": { - "featureKey": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "featureKey", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "fixedCharges": { - "items": { - "additionalProperties": false, - "properties": { - "chargeModel": { - "enum": [ - "graduated", - "standard", - "volume" - ], - "type": "string" - }, - "displayName": { - "type": "string" - }, - "fixedChargeCode": { - "type": "string" - }, - "payInAdvance": { - "type": "boolean" - }, - "pricing": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "tiers": { - "items": { - "additionalProperties": false, - "properties": { - "flatAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fromUnit": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "perUnitAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "toUnit": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "flatAmount", - "fromUnit", - "perUnitAmount", - "toUnit" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "amount", - "tiers" - ], - "type": "object" - }, - "prorated": { - "type": "boolean" - }, - "quantity": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "chargeModel", - "displayName", - "fixedChargeCode", - "payInAdvance", - "pricing", - "prorated", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "interval": { - "enum": [ - "weekly", - "monthly", - "quarterly", - "semiannual", - "yearly" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "payInAdvance": { - "type": "boolean" - }, - "planCode": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "usageCharges": { - "items": { - "additionalProperties": false, - "properties": { - "chargeCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "chargeModel": { - "enum": [ - "dynamic", - "graduated", - "graduated_percentage", - "package", - "percentage", - "standard", - "volume" - ], - "type": "string" - }, - "displayName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "filters": { - "items": { - "additionalProperties": false, - "properties": { - "displayName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pricing": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fixedAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "freeUnits": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "freeUnitsPerEvents": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "freeUnitsPerTotalAggregation": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "packageSize": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "perTransactionMaxAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "perTransactionMinAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pricingGroupKeys": { - "items": { - "type": "string" - }, - "type": "array" - }, - "rate": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "tiers": { - "items": { - "additionalProperties": false, - "properties": { - "flatAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fromUnit": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "perUnitAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rate": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "toUnit": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "flatAmount", - "fromUnit", - "perUnitAmount", - "rate", - "toUnit" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "amount", - "fixedAmount", - "freeUnits", - "freeUnitsPerEvents", - "freeUnitsPerTotalAggregation", - "packageSize", - "perTransactionMaxAmount", - "perTransactionMinAmount", - "pricingGroupKeys", - "rate", - "tiers" - ], - "type": "object" - }, - "values": { - "items": { - "additionalProperties": false, - "properties": { - "key": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "key", - "values" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "displayName", - "pricing", - "values" - ], - "type": "object" - }, - "type": "array" - }, - "invoiceable": { - "type": "boolean" - }, - "metricCode": { - "type": "string" - }, - "minimumAmountCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "payInAdvance": { - "type": "boolean" - }, - "pricing": { - "additionalProperties": false, - "properties": { - "amount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fixedAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "freeUnits": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "freeUnitsPerEvents": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "freeUnitsPerTotalAggregation": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "packageSize": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "perTransactionMaxAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "perTransactionMinAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "pricingGroupKeys": { - "items": { - "type": "string" - }, - "type": "array" - }, - "rate": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "tiers": { - "items": { - "additionalProperties": false, - "properties": { - "flatAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "fromUnit": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "perUnitAmount": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rate": { - "anyOf": [ - { - "description": "Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.", - "pattern": "^\\d+(?:\\.\\d+)?$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "toUnit": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "flatAmount", - "fromUnit", - "perUnitAmount", - "rate", - "toUnit" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "amount", - "fixedAmount", - "freeUnits", - "freeUnitsPerEvents", - "freeUnitsPerTotalAggregation", - "packageSize", - "perTransactionMaxAmount", - "perTransactionMinAmount", - "pricingGroupKeys", - "rate", - "tiers" - ], - "type": "object" - }, - "prorated": { - "type": "boolean" - } - }, - "required": [ - "chargeCode", - "chargeModel", - "displayName", - "filters", - "invoiceable", - "metricCode", - "minimumAmountCents", - "payInAdvance", - "pricing", - "prorated" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "baseAmountCents", - "currency", - "description", - "entitlements", - "fixedCharges", - "interval", - "name", - "payInAdvance", - "planCode", - "usageCharges" - ], - "type": "object" - }, - "type": "array" - }, - "description": "Plans grouped by valid metadata type and explicitly published with visible=\"true\".", - "propertyNames": { - "description": "Category slug, e.g. analytics or messaging.", - "pattern": "^[a-z][a-z0-9_]{0,63}$", - "type": "string" - }, - "type": "object" - } - }, - "required": [ - "plans" - ], - "type": "object" + "$ref": "#/components/schemas/ListBillingPlansResponse" } } }, "description": "Billing plans grouped by their public plan-metadata type.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -153268,105 +80363,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -153374,7 +80402,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -153422,101 +80450,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListBillingPlansForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -153551,9 +80494,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -153576,105 +80519,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "FAILED_PRECONDITION", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 409, - "type": "number" - }, - "title": { - "const": "Failed Precondition", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/failed-precondition", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/FailedPreconditionProblem" } } }, "description": "FAILED_PRECONDITION: Failed Precondition", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -153682,144 +80558,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" + "$ref": "#/components/schemas/ValidationFailedProblem" } } }, "description": "VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -153827,60 +80597,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_AUTH_CONTEXT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 500, - "type": "number" - }, - "title": { - "const": "Invalid Authentication Context", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-auth-context", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListBillingPlansInternalServerErrorProblem" } } }, "description": "INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -153915,9 +80641,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -153940,105 +80666,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -154046,53 +80705,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -154127,9 +80749,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -154152,150 +80774,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListBillingPlansGatewayTimeoutProblem" } } }, "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -154313,14 +80823,13 @@ ] } ], - "summary": "List billing plans available to a project", + "summary": "List available billing plans", "tags": [ "Project Billing" ], "x-required-permissions": [ "project:read_usage" - ], - "description": "Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." + ] } }, "/v1/projects/{projectId}/metrics/backfill": { @@ -154353,115 +80862,38 @@ "content": { "application/json": { "schema": { - "properties": { - "failedWrites": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "lastVerifiedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "processedWrites": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "state": { - "enum": [ - "disabled", - "pending", - "running", - "verifying", - "completed", - "paused", - "failed" - ], - "type": "string" - }, - "version": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - "required": [ - "failedWrites", - "lastVerifiedAt", - "processedWrites", - "state", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/GetMessageMetricsBackfillResponse" } } }, "description": "Project-scoped backfill progress.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -154469,105 +80901,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -154575,7 +80940,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -154623,101 +80988,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetMessageMetricsBackfillForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -154752,9 +81032,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -154777,7 +81057,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -154819,53 +81099,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -154900,9 +81143,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -154974,455 +81217,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "capabilities": { - "additionalProperties": false, - "properties": { - "arrayJoin": { - "type": "boolean" - }, - "ctes": { - "type": "boolean" - }, - "joins": { - "type": "boolean" - }, - "parameters": { - "type": "boolean" - }, - "selectWithoutFrom": { - "type": "boolean" - }, - "subqueries": { - "type": "boolean" - }, - "unions": { - "type": "boolean" - } - }, - "required": [ - "arrayJoin", - "ctes", - "joins", - "parameters", - "selectWithoutFrom", - "subqueries", - "unions" - ], - "type": "object" - }, - "dialect": { - "type": "string" - }, - "limits": { - "additionalProperties": false, - "properties": { - "maximumParameterValueBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "maximumParameters": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "maximumSqlBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "maximumTotalParameterBytes": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "maximumParameters", - "maximumParameterValueBytes", - "maximumSqlBytes", - "maximumTotalParameterBytes" - ], - "type": "object" - }, - "projectScoped": { - "const": true, - "type": "boolean" - }, - "tables": { - "items": { - "additionalProperties": false, - "properties": { - "columns": { - "items": { - "additionalProperties": false, - "properties": { - "description": { - "type": "string" - }, - "json": { - "additionalProperties": false, - "properties": { - "commonPaths": { - "items": { - "additionalProperties": false, - "properties": { - "additionalProperties": { - "const": true, - "type": "boolean" - }, - "contentTypes": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "directions": { - "items": { - "enum": [ - "addressed", - "received" - ], - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "expression": { - "type": "string" - }, - "itemTypes": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "path": { - "type": "string" - }, - "required": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "readOnly": true, - "type": "array" - } - }, - "required": [ - "expression", - "path", - "required", - "type" - ], - "type": "object" - }, - "readOnly": true, - "type": "array" - }, - "discriminators": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "path": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - } - }, - "required": [ - "path", - "values" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "oneOfPaths": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - } - }, - "required": [ - "oneOfPaths" - ], - "type": "object" - } - ] - }, - "readOnly": true, - "type": "array" - }, - "platforms": { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "enum": [ - "email", - "imessage", - "sms", - "telegram", - "voice", - "whatsapp", - "whatsapp_business" - ], - "type": "string" - }, - "paths": { - "items": { - "additionalProperties": false, - "properties": { - "additionalProperties": { - "const": true, - "type": "boolean" - }, - "contentTypes": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "directions": { - "items": { - "enum": [ - "addressed", - "received" - ], - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "expression": { - "type": "string" - }, - "itemTypes": { - "items": { - "type": "string" - }, - "readOnly": true, - "type": "array" - }, - "path": { - "type": "string" - }, - "required": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "readOnly": true, - "type": "array" - } - }, - "required": [ - "expression", - "path", - "required", - "type" - ], - "type": "object" - }, - "readOnly": true, - "type": "array" - } - }, - "required": [ - "name", - "paths" - ], - "type": "object" - }, - "readOnly": true, - "type": "array" - }, - "resource": { - "additionalProperties": false, - "properties": { - "contractsVersion": { - "type": "string" - }, - "type": { - "const": "message", - "type": "string" - } - }, - "required": [ - "contractsVersion", - "type" - ], - "type": "object" - } - }, - "required": [ - "commonPaths", - "discriminators", - "platforms", - "resource" - ], - "type": "object" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "description", - "name", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "currentState": { - "type": "string" - }, - "description": { - "type": "string" - }, - "name": { - "enum": [ - "message_events" - ], - "type": "string" - } - }, - "required": [ - "columns", - "currentState", - "description", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "version": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - "required": [ - "capabilities", - "dialect", - "limits", - "projectScoped", - "tables", - "version" - ], - "type": "object" + "$ref": "#/components/schemas/GetMessageMetricsSqlSchemaResponse" } } }, "description": "The Project-scoped SQL surface of the resolved contracts date.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -155430,105 +81256,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -155536,7 +81295,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -155584,101 +81343,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetMessageMetricsSqlSchemaForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -155713,9 +81387,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -155738,7 +81412,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -155780,7 +81454,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -155879,124 +81553,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "columns": { - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "name", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "rows": { - "items": { - "items": {}, - "type": "array" - }, - "type": "array" - }, - "statistics": { - "additionalProperties": false, - "properties": { - "bytesRead": { - "minimum": 0, - "type": "number" - }, - "elapsedSeconds": { - "minimum": 0, - "type": "number" - }, - "rowsRead": { - "minimum": 0, - "type": "number" - } - }, - "required": [ - "bytesRead", - "elapsedSeconds", - "rowsRead" - ], - "type": "object" - } - }, - "required": [ - "columns", - "rows", - "statistics" - ], - "type": "object" + "$ref": "#/components/schemas/QueryMessageMetricsResponse" } } }, "description": "Dynamic SQL columns and rows followed by bounded ClickHouse read statistics.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -156004,105 +81592,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -156110,7 +81631,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -156158,101 +81679,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/QueryMessageMetricsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -156287,9 +81723,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -156312,197 +81748,85 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "QUERY_RESOURCE_LIMIT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Query Resource Limit", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/query-resource-limit", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "VALIDATION_FAILED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "issues": { - "items": { - "additionalProperties": false, - "properties": { - "code": { - "minLength": 1, - "type": "string" - }, - "location": { - "enum": [ - "body", - "cookie", - "form", - "header", - "json", - "param", - "query" - ], - "type": "string" - }, - "message": { - "minLength": 1, - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": [ - "code", - "location", - "message", - "path" - ], - "type": "object" - }, - "type": "array" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Request Validation Failed", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/validation-failed", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type", - "issues" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/QueryMessageMetricsUnprocessableEntityProblem" } } }, "description": "QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "429": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/QueryConcurrencyLimitProblem" } } + }, + "description": "QUERY_CONCURRENCY_LIMIT: Query Concurrency Limit", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -156544,105 +81868,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -156650,53 +81907,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -156731,9 +81951,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -156756,150 +81976,38 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "REQUEST_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Request Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/request-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/QueryMessageMetricsGatewayTimeoutProblem" } } }, "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -156928,6 +82036,7 @@ }, "/v1/projects/{projectId}/webhooks/api-versions": { "get": { + "description": "Lists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body.", "operationId": "listWebhookApiVersions", "parameters": [ { @@ -156945,213 +82054,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiVersions": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "retirement": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "migrationGuide": { - "minLength": 1, - "type": "string" - }, - "reason": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "migrationGuide", - "reason" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "selectable": { - "const": true, - "type": "boolean" - }, - "status": { - "enum": [ - "preview", - "latest", - "maintain" - ], - "type": "string" - }, - "successor": { - "anyOf": [ - { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "version": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - "required": [ - "retirement", - "successor", - "selectable", - "status", - "version" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retirement": { - "additionalProperties": false, - "properties": { - "migrationGuide": { - "minLength": 1, - "type": "string" - }, - "reason": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "migrationGuide", - "reason" - ], - "type": "object" - }, - "selectable": { - "const": false, - "type": "boolean" - }, - "status": { - "const": "deprecated", - "type": "string" - }, - "successor": { - "anyOf": [ - { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "version": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - } - }, - "required": [ - "retirement", - "successor", - "selectable", - "status", - "version" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "contractNamespace": { - "const": "@photon-hq/contracts", - "type": "string" - }, - "packageVersion": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "contractNamespace", - "packageVersion", - "apiVersions" - ], - "type": "object" + "$ref": "#/components/schemas/ListWebhookApiVersionsResponse" } } }, "description": "Published webhook payload API versions.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -157159,60 +82093,31 @@ "description": "The authorized cached representation is current; no response body.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -157220,7 +82125,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -157268,101 +82173,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWebhookApiVersionsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -157397,9 +82217,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -157418,11 +82238,50 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -157464,105 +82323,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -157570,53 +82362,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -157651,9 +82406,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -157676,105 +82431,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListWebhookApiVersionsGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -157793,12 +82481,12 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Lists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body." + ] } }, "/v1/projects/{projectId}/webhooks/destinations": { "get": { + "description": "Returns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets.", "operationId": "listWebhookDestinations", "parameters": [ { @@ -157834,181 +82522,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "destinations": { - "items": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "destinationId": { - "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "type": "string" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url" - ], - "type": "object" - }, - "type": "array" - }, - "nextPageToken": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "destinations" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationPage" } } }, "description": "One page of active webhook destinations.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -158016,105 +82561,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -158122,7 +82600,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -158170,101 +82648,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWebhookDestinationsForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -158299,9 +82692,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -158320,11 +82713,50 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -158366,105 +82798,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -158472,53 +82837,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -158553,9 +82881,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -158578,105 +82906,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListWebhookDestinationsGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -158695,10 +82956,10 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets." + ] }, "post": { + "description": "Creates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header.", "operationId": "createWebhookDestination", "parameters": [ { @@ -158727,68 +82988,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "description": { - "maxLength": 1000, - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "status": { - "default": "enabled", - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "url": { - "description": "HTTPS URL without credentials or a fragment.", - "format": "uri", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "apiVersion", - "enabledEvents", - "name", - "url" - ], - "type": "object" + "$ref": "#/components/schemas/CreateWebhookDestinationRequest" } } }, @@ -158799,179 +82999,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "destination": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "destinationId": { - "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "type": "string" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url" - ], - "type": "object" - }, - "signingSecret": { - "pattern": "^whsec_.*", - "type": "string" - } - }, - "required": [ - "destination", - "signingSecret" - ], - "type": "object" - } - } - }, - "description": "The created destination and its one-time signing secret.", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/CreateWebhookDestinationResponse" } + } + }, + "description": "The created destination and its signing secret.", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -158979,105 +83038,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateWebhookDestinationBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -159085,7 +83077,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -159133,101 +83125,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/CreateWebhookDestinationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -159262,9 +83169,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -159283,117 +83190,89 @@ } } }, - "422": { + "413": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/CreateWebhookDestinationUnprocessableEntityProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -159435,105 +83314,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -159541,53 +83353,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -159622,9 +83397,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -159647,105 +83422,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/CreateWebhookDestinationGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -159767,12 +83475,12 @@ }, "x-required-permissions": [ "project:write" - ], - "description": "Creates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/webhooks/destinations/{destinationId}": { "delete": { + "description": "Deletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update.", "operationId": "deleteWebhookDestination", "parameters": [ { @@ -159799,165 +83507,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "destinationId": { - "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "type": "string" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "The stable webhook destination tombstone.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -159965,7 +83546,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -160013,101 +83594,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/DeleteWebhookDestinationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -160142,9 +83638,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -160167,113 +83663,85 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Webhook Destination Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationNotFoundProblem" } } }, "description": "WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -160315,105 +83783,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -160421,53 +83822,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -160502,9 +83866,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -160527,105 +83891,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/DeleteWebhookDestinationGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -160644,10 +83941,10 @@ ], "x-required-permissions": [ "project:write" - ], - "description": "Deletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update." + ] }, "get": { + "description": "Returns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created.", "operationId": "getWebhookDestination", "parameters": [ { @@ -160674,165 +83971,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "destinationId": { - "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "type": "string" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "The requested webhook destination.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -160840,7 +84010,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -160888,101 +84058,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetWebhookDestinationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -161017,9 +84102,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -161042,105 +84127,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Webhook Destination Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationNotFoundProblem" } } }, "description": "WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -161148,113 +84166,85 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Webhook Destination Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationDeletedProblem" } } }, "description": "WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "422": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/ValidationFailedProblem" } } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -161296,105 +84286,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -161402,53 +84325,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -161483,9 +84369,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -161508,105 +84394,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetWebhookDestinationGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -161625,10 +84444,10 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created." + ] }, "patch": { + "description": "Updates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header.", "operationId": "updateWebhookDestination", "parameters": [ { @@ -161666,64 +84485,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "minProperties": 1, - "properties": { - "description": { - "anyOf": [ - { - "maxLength": 1000, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "url": { - "description": "HTTPS URL without credentials or a fragment.", - "format": "uri", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/UpdateWebhookDestinationRequest" } } }, @@ -161734,165 +84496,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "createdAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "deletedAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "destinationId": { - "pattern": "^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "enabledEvents": { - "anyOf": [ - { - "prefixItems": [ - { - "const": "*", - "type": "string" - } - ], - "type": "array" - }, - { - "items": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - }, - "maxItems": 256, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - ] - }, - "name": { - "type": "string" - }, - "projectId": { - "pattern": "^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$", - "type": "string" - }, - "status": { - "enum": [ - "enabled", - "disabled" - ], - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "The updated webhook destination.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -161900,105 +84535,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateWebhookDestinationBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -162006,7 +84574,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -162054,101 +84622,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/UpdateWebhookDestinationForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -162183,9 +84666,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -162208,105 +84691,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Webhook Destination Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationNotFoundProblem" } } }, "description": "WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -162314,211 +84730,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Webhook Destination Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationDeletedProblem" } } }, "description": "WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateWebhookDestinationUnprocessableEntityProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -162526,7 +84847,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -162568,105 +84889,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -162674,53 +84928,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -162755,9 +84972,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -162780,105 +84997,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpdateWebhookDestinationGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -162897,12 +85047,12 @@ ], "x-required-permissions": [ "project:write" - ], - "description": "Updates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/webhooks/destinations/{destinationId}/secret-rotations": { "post": { + "description": "Rotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header.", "operationId": "rotateWebhookSigningSecret", "parameters": [ { @@ -162940,16 +85090,7 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "overlapSeconds": { - "default": 86400, - "maximum": 604800, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" + "$ref": "#/components/schemas/RotateWebhookSigningSecretRequest" } } }, @@ -162960,90 +85101,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "previousSecretExpiresAt": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "signingSecret": { - "pattern": "^whsec_.*", - "type": "string" - } - }, - "required": [ - "previousSecretExpiresAt", - "signingSecret" - ], - "type": "object" + "$ref": "#/components/schemas/RotateWebhookSigningSecretResponse" } } }, - "description": "A new one-time signing secret.", + "description": "The new signing secret.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -163051,105 +85140,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RotateWebhookSigningSecretBadRequestProblem" } } }, - "description": "INVALID_ARGUMENT: Invalid Argument", + "description": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -163157,7 +85179,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -163205,101 +85227,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/RotateWebhookSigningSecretForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -163334,9 +85271,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -163359,105 +85296,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_NOT_FOUND", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 404, - "type": "number" - }, - "title": { - "const": "Webhook Destination Not Found", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-not-found", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationNotFoundProblem" } } }, "description": "WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -163465,211 +85335,116 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "WEBHOOK_DESTINATION_DELETED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 410, - "type": "number" - }, - "title": { - "const": "Webhook Destination Deleted", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/webhook-destination-deleted", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/WebhookDestinationDeletedProblem" } } }, "description": "WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, + "413": { + "content": { + "application/problem+json": { "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" + "$ref": "#/components/schemas/PayloadTooLargeProblem" } } + }, + "description": "PAYLOAD_TOO_LARGE: Payload Too Large", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } } }, "422": { "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "IDEMPOTENCY_KEY_REUSED", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 422, - "type": "number" - }, - "title": { - "const": "Idempotency Key Reused", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/idempotency-key-reused", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RotateWebhookSigningSecretUnprocessableEntityProblem" } } }, - "description": "IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", + "description": "VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -163677,7 +85452,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -163719,105 +85494,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -163825,53 +85533,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -163906,9 +85577,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -163931,105 +85602,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/RotateWebhookSigningSecretGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -164051,12 +85655,12 @@ }, "x-required-permissions": [ "project:write" - ], - "description": "Rotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header." + ] } }, "/v1/projects/{projectId}/webhooks/egress-addresses": { "get": { + "description": "Returns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses.", "operationId": "listWebhookEgressAddresses", "parameters": [ { @@ -164074,84 +85678,38 @@ "content": { "application/json": { "schema": { - "additionalProperties": false, - "properties": { - "ipAddresses": { - "description": "Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address.", - "items": { - "format": "ipv4", - "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$", - "type": "string" - }, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "ipAddresses" - ], - "type": "object" + "$ref": "#/components/schemas/ListWebhookEgressAddressesResponse" } } }, "description": "The public addresses webhook deliveries originate from in this environment.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -164159,60 +85717,31 @@ "description": "The authorized cached representation is current; no response body.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -164220,7 +85749,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -164268,101 +85797,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWebhookEgressAddressesForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -164397,9 +85841,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -164418,11 +85862,50 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -164464,7 +85947,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, @@ -164501,6 +85984,45 @@ } } } + }, + "504": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/RequestTimeoutProblem" + } + } + }, + "description": "REQUEST_TIMEOUT: Request Timeout", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } } }, "security": [ @@ -164522,12 +86044,12 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses." + ] } }, "/v1/projects/{projectId}/webhooks/event-types": { "get": { + "description": "Lists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body.", "operationId": "listWebhookEventTypes", "parameters": [ { @@ -164555,291 +86077,38 @@ "content": { "application/json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "contractNamespace": { - "const": "@photon-hq/contracts", - "type": "string" - }, - "events": { - "items": { - "additionalProperties": false, - "properties": { - "audience": { - "enum": [ - "agent", - "infrastructure" - ], - "type": "string" - }, - "description": { - "type": "string" - }, - "schemaProfile": { - "const": "reader", - "type": "string" - }, - "schemaUrl": { - "format": "uri-reference", - "pattern": "^\\/v1\\/projects\\/.*", - "type": "string" - }, - "type": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - } - }, - "required": [ - "audience", - "description", - "schemaProfile", - "schemaUrl", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "packageVersion": { - "minLength": 1, - "type": "string" - }, - "retirement": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "migrationGuide": { - "minLength": 1, - "type": "string" - }, - "reason": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "migrationGuide", - "reason" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "selectable": { - "const": true, - "type": "boolean" - }, - "status": { - "enum": [ - "preview", - "latest", - "maintain" - ], - "type": "string" - }, - "successor": { - "anyOf": [ - { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "retirement", - "successor", - "selectable", - "status", - "contractNamespace", - "packageVersion", - "apiVersion", - "events" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "apiVersion": { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - "contractNamespace": { - "const": "@photon-hq/contracts", - "type": "string" - }, - "events": { - "items": { - "additionalProperties": false, - "properties": { - "audience": { - "enum": [ - "agent", - "infrastructure" - ], - "type": "string" - }, - "description": { - "type": "string" - }, - "schemaProfile": { - "const": "reader", - "type": "string" - }, - "schemaUrl": { - "format": "uri-reference", - "pattern": "^\\/v1\\/projects\\/.*", - "type": "string" - }, - "type": { - "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$", - "type": "string" - } - }, - "required": [ - "audience", - "description", - "schemaProfile", - "schemaUrl", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "packageVersion": { - "minLength": 1, - "type": "string" - }, - "retirement": { - "additionalProperties": false, - "properties": { - "migrationGuide": { - "minLength": 1, - "type": "string" - }, - "reason": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "migrationGuide", - "reason" - ], - "type": "object" - }, - "selectable": { - "const": false, - "type": "boolean" - }, - "status": { - "const": "deprecated", - "type": "string" - }, - "successor": { - "anyOf": [ - { - "format": "date", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "retirement", - "successor", - "selectable", - "status", - "contractNamespace", - "packageVersion", - "apiVersion", - "events" - ], - "type": "object" - } - ] + "$ref": "#/components/schemas/ListWebhookEventTypesResponse" } } }, "description": "Events available in the selected API version.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -164847,60 +86116,31 @@ "description": "The authorized cached representation is current; no response body.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -164908,105 +86148,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -165014,7 +86187,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -165062,101 +86235,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/ListWebhookEventTypesForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -165191,9 +86279,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -165212,11 +86300,50 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -165258,105 +86385,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -165364,53 +86424,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -165445,9 +86468,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -165470,105 +86493,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/ListWebhookEventTypesGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -165587,12 +86543,12 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Lists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body." + ] } }, "/v1/projects/{projectId}/webhooks/event-types/{eventType}/schema": { "get": { + "description": "Returns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected.", "operationId": "getWebhookEventSchema", "parameters": [ { @@ -165629,73 +86585,38 @@ "content": { "application/schema+json": { "schema": { - "additionalProperties": { - "$ref": "#/components/schemas/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" + "$ref": "#/components/schemas/WebhookEventSchema" } } }, "description": "The published reader JSON Schema for the event.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -165703,60 +86624,31 @@ "description": "The authorized cached representation is current; no response body.", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -165764,105 +86656,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "INVALID_ARGUMENT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 400, - "type": "number" - }, - "title": { - "const": "Invalid Argument", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/invalid-argument", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/InvalidArgumentProblem" } } }, "description": "INVALID_ARGUMENT: Invalid Argument", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -165870,7 +86695,7 @@ "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "$ref": "#/components/schemas/NotAuthenticatedProblem" } } }, @@ -165918,101 +86743,16 @@ "content": { "application/problem+json": { "schema": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "code": { - "const": "FORBIDDEN", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Forbidden", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/forbidden", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "const": "RESOURCE_MISMATCH", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 403, - "type": "number" - }, - "title": { - "const": "Resource Mismatch", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/resource-mismatch", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" - } - ] - } - } - }, - "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", - "headers": { - "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "$ref": "#/components/schemas/GetWebhookEventSchemaForbiddenProblem" + } + } + }, + "description": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", + "headers": { + "Deprecation": { + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -166047,9 +86787,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -166068,11 +86808,50 @@ } } }, + "422": { + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ValidationFailedProblem" + } + } + }, + "description": "VALIDATION_FAILED: Request Validation Failed", + "headers": { + "Deprecation": { + "$ref": "#/components/headers/Deprecation" + }, + "Idempotent-Replayed": { + "$ref": "#/components/headers/Idempotent-Replayed" + }, + "Link": { + "$ref": "#/components/headers/Link" + }, + "RateLimit": { + "$ref": "#/components/headers/RateLimit" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + }, + "Sunset": { + "$ref": "#/components/headers/Sunset" + }, + "X-Request-ID": { + "$ref": "#/components/headers/X-Request-ID" + }, + "X-Trace-ID": { + "$ref": "#/components/headers/X-Trace-ID" + } + } + }, "500": { "content": { "application/problem+json": { "schema": { - "$ref": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "$ref": "#/components/schemas/InternalErrorProblem" } } }, @@ -166114,105 +86893,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_FAILURE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 502, - "type": "number" - }, - "title": { - "const": "Upstream Service Failure", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-failure", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamFailureProblem" } } }, "description": "UPSTREAM_FAILURE: Upstream Service Failure", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } }, @@ -166220,53 +86932,16 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_UNAVAILABLE", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 503, - "type": "number" - }, - "title": { - "const": "Upstream Service Unavailable", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-unavailable", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/UpstreamUnavailableProblem" } } }, "description": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", + "description": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "schema": { + "pattern": "^@-?[0-9]+$", "type": "string" } }, @@ -166301,9 +86976,9 @@ } }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", + "description": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "schema": { - "format": "date-time", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$", "type": "string" } }, @@ -166326,105 +87001,38 @@ "content": { "application/problem+json": { "schema": { - "additionalProperties": false, - "properties": { - "code": { - "const": "UPSTREAM_TIMEOUT", - "type": "string" - }, - "detail": { - "minLength": 1, - "type": "string" - }, - "instance": { - "minLength": 1, - "type": "string" - }, - "remediation": {}, - "requestId": { - "minLength": 1, - "type": "string" - }, - "status": { - "const": 504, - "type": "number" - }, - "title": { - "const": "Upstream Service Timeout", - "type": "string" - }, - "type": { - "const": "https://photon.codes/docs/problems/upstream-timeout", - "type": "string" - } - }, - "required": [ - "code", - "status", - "title", - "type" - ], - "type": "object" + "$ref": "#/components/schemas/GetWebhookEventSchemaGatewayTimeoutProblem" } } }, - "description": "UPSTREAM_TIMEOUT: Upstream Service Timeout", + "description": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "headers": { "Deprecation": { - "description": "Structured date indicating that the operation is deprecated.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Deprecation" }, "Idempotent-Replayed": { - "description": "True when this response was replayed from an earlier attempt.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/headers/Idempotent-Replayed" }, "Link": { - "description": "Links related to lifecycle or remediation documentation.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Link" }, "RateLimit": { - "description": "Current rate-limit state.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit" }, "RateLimit-Policy": { - "description": "Rate-limit policy applied by the gateway.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/RateLimit-Policy" }, "Retry-After": { - "description": "Delay before retrying, in seconds or as an HTTP date.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/Retry-After" }, "Sunset": { - "description": "HTTP date after which the operation may become unavailable.", - "schema": { - "format": "date-time", - "type": "string" - } + "$ref": "#/components/headers/Sunset" }, "X-Request-ID": { - "description": "Identifier for this HTTP attempt.", - "schema": { - "type": "string" - } + "$ref": "#/components/headers/X-Request-ID" }, "X-Trace-ID": { - "description": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "schema": { - "pattern": "^(?!0{32}$)[0-9a-f]{32}$", - "type": "string" - } + "$ref": "#/components/headers/X-Trace-ID" } } } @@ -166443,8 +87051,7 @@ ], "x-required-permissions": [ "project:read" - ], - "description": "Returns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected." + ] } } }, diff --git a/openapi/rpc-manifest.json b/openapi/rpc-manifest.json index 48ddbb1..d1749a6 100644 --- a/openapi/rpc-manifest.json +++ b/openapi/rpc-manifest.json @@ -1,6 +1,6 @@ { - "sourceSha256": "8c24e940fd778f350ba598cddf9e5b5183e7c9f5142211bfab51b57fb483d3de", - "operationCount": 129, + "sourceSha256": "ed1960f10a2c598cbeaf85fddca8fac53aa81668e33730573e5a53414b2b9250", + "operationCount": 130, "operations": [ { "operationId": "assignSmsLineCampaign", @@ -47,43 +47,43 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/AssignSmsLineCampaignResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/AssignSmsLineCampaignResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/IdempotencyKeyReusedProblem" }, "429": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/AssignSmsLineCampaignResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignSmsLineCampaignGatewayTimeoutProblem" } }, "summary": "Assign or replace SMS line campaign", @@ -91,7 +91,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/AssignSmsLineCampaignRequestApplicationJson" + "application/json": "#/components/schemas/AssignSmsLineCampaignRequest" } } }, @@ -128,37 +128,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/AssignVoiceLineProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceLineProfileAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignVoiceLineProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignVoiceLineProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignVoiceLineProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignVoiceLineProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/AssignVoiceLineProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignVoiceLineProfileGatewayTimeoutProblem" } }, "summary": "Assign Voice line profile", @@ -166,7 +166,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/AssignVoiceLineProfileRequestApplicationJson" + "application/json": "#/components/schemas/AssignVoiceLineProfileRequest" } } }, @@ -194,37 +194,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson" + "application/json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem" } }, "summary": "Batch update Voice line profile assignments", @@ -232,7 +232,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson" + "application/json": "#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsRequest" } } }, @@ -260,40 +260,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/BeginInvitationSsoResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRedirect" }, "400": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginInvitationSsoBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginInvitationSsoForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginInvitationSsoPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginInvitationSsoInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/BeginInvitationSsoResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginInvitationSsoGatewayTimeoutProblem" } }, "summary": "Authenticate to an invitation's organization SSO connection", @@ -301,7 +301,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/BeginInvitationSsoRequestApplicationJson" + "application/json": "#/components/schemas/BeginInvitationSsoRequest" } } }, @@ -329,40 +329,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/BeginOrganizationAuthenticationResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRedirect" }, "400": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationAuthenticationGatewayTimeoutProblem" } }, "summary": "Authenticate to the current organization SSO connection", @@ -370,7 +370,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/BeginOrganizationAuthenticationRequestApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRequest" } } }, @@ -398,40 +398,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRedirect" }, "400": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationClosureAuthenticationGatewayTimeoutProblem" } }, "summary": "Authenticate the current Owner to inspect organization closure", @@ -439,7 +439,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/BeginOrganizationClosureAuthenticationRequestApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRequest" } } }, @@ -467,40 +467,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRedirect" }, "400": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/BeginOrganizationSsoAdmissionGatewayTimeoutProblem" } }, "summary": "Begin organization SSO admission for an existing Account", @@ -508,7 +508,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/BeginOrganizationSsoAdmissionRequestApplicationJson" + "application/json": "#/components/schemas/OrganizationAuthenticationRequest" } } }, @@ -545,41 +545,41 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CancelOperationResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CancelOperationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelOperationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CancelOperationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OperationNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/CancelOperationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OperationNotCancellableProblem" }, "422": { - "application/problem+json": "#/components/schemas/CancelOperationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/CancelOperationResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CancelOperationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelOperationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CancelOperationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CancelOperationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CancelOperationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelOperationGatewayTimeoutProblem" } }, "summary": "Cancel operation", - "description": "Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." + "description": "Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." }, { "operationId": "cancelSubscription", @@ -626,34 +626,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CancelSubscriptionResponse200ApplicationJson" + "application/json": "#/components/schemas/CancelSubscriptionResponse" }, "400": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CancelSubscriptionResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CancelSubscriptionGatewayTimeoutProblem" } }, "summary": "Cancel a category at the end of its billing period", @@ -661,7 +661,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CancelSubscriptionRequestApplicationJson" + "application/json": "#/components/schemas/CancelSubscriptionRequest" } } }, @@ -710,40 +710,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ChangePlanResponse200ApplicationJson" + "application/json": "#/components/schemas/TerminalBillingOperation" }, "202": { - "application/json": "#/components/schemas/ChangePlanResponse202ApplicationJson" + "application/json": "#/components/schemas/PendingBillingOperation" }, "400": { - "application/problem+json": "#/components/schemas/ChangePlanResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ChangePlanResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ChangePlanResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanConflictProblem" }, "413": { - "application/problem+json": "#/components/schemas/ChangePlanResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/ChangePlanResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/ChangePlanResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ChangePlanResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ChangePlanResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ChangePlanResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ChangePlanGatewayTimeoutProblem" } }, "summary": "Purchase or change a category's plan", @@ -751,7 +751,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ChangePlanRequestApplicationJson" + "application/json": "#/components/schemas/ChangePlanRequest" } } }, @@ -791,31 +791,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CheckProjectSlugAvailabilityResponse200ApplicationJson" + "application/json": "#/components/schemas/CheckProjectSlugAvailabilityResponse" }, "400": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CheckProjectSlugAvailabilityGatewayTimeoutProblem" } }, "summary": "Check slug availability", @@ -847,40 +847,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CommitAccountProfilePictureResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "400": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAccountProfilePictureBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAccountProfilePictureForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAccountProfilePictureUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAccountProfilePictureInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CommitAccountProfilePictureResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAccountProfilePictureGatewayTimeoutProblem" } }, "summary": "Commit a profile picture", @@ -888,7 +888,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CommitAccountProfilePictureRequestApplicationJson" + "application/json": "#/components/schemas/CommitAccountProfilePictureRequest" } } }, @@ -928,40 +928,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CommitAgentProfileAvatarResponse200ApplicationJson" + "application/json": "#/components/schemas/AgentProfile" }, "400": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CommitAgentProfileAvatarGatewayTimeoutProblem" } }, "summary": "Commit an agent avatar", @@ -969,7 +969,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CommitAgentProfileAvatarRequestApplicationJson" + "application/json": "#/components/schemas/CommitAgentProfileAvatarRequest" } } }, @@ -1018,43 +1018,43 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse200ApplicationJson" + "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse" }, "201": { - "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse201ApplicationJson" + "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse" }, "400": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfigureVoiceProfileOutboundGatewayTimeoutProblem" } }, "summary": "Configure Voice profile outbound credential", @@ -1062,7 +1062,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundRequestApplicationJson" + "application/json": "#/components/schemas/ConfigureVoiceProfileOutboundRequest" } } }, @@ -1079,43 +1079,43 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "400": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConfirmAccountPhoneVerificationGatewayTimeoutProblem" } }, "summary": "Confirm a phone number verification", @@ -1123,7 +1123,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ConfirmAccountPhoneVerificationRequestApplicationJson" + "application/json": "#/components/schemas/ConfirmAccountPhoneVerificationRequest" } } }, @@ -1163,40 +1163,40 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/ConnectEmailDomainResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ConnectEmailDomainResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectEmailDomainGatewayTimeoutProblem" } }, "summary": "Connect email domain", @@ -1204,7 +1204,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ConnectEmailDomainRequestApplicationJson" + "application/json": "#/components/schemas/ConnectEmailDomainRequest" } } }, @@ -1244,45 +1244,45 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/ConnectTelegramBotResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ConnectTelegramBotResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectTelegramBotGatewayTimeoutProblem" } }, "summary": "Connect Telegram bot", - "description": "Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.", + "description": "Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.", "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ConnectTelegramBotRequestApplicationJson" + "application/json": "#/components/schemas/ConnectTelegramBotRequest" } } }, @@ -1322,40 +1322,40 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/ConnectWhatsappBusinessResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectClosingProblem" }, "422": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ConnectWhatsappBusinessGatewayTimeoutProblem" } }, "summary": "Connect WhatsApp Business", @@ -1363,7 +1363,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ConnectWhatsappBusinessRequestApplicationJson" + "application/json": "#/components/schemas/ConnectWhatsappBusinessRequest" } } }, @@ -1423,31 +1423,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CountProjectsResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectCount" }, "400": { - "application/problem+json": "#/components/schemas/CountProjectsResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CountProjectsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CountProjectsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/CountProjectsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CountProjectsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CountProjectsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CountProjectsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CountProjectsGatewayTimeoutProblem" } }, "summary": "Count accessible projects", @@ -1466,40 +1466,40 @@ "parameters": [], "responses": { "201": { - "application/json": "#/components/schemas/CreateAccountProfilePictureUploadResponse201ApplicationJson" + "application/json": "#/components/schemas/ProfilePictureUpload" }, "400": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountProfilePictureUploadGatewayTimeoutProblem" } }, "summary": "Create a profile picture upload", @@ -1507,7 +1507,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateAccountProfilePictureUploadRequestApplicationJson" + "application/json": "#/components/schemas/ProfilePictureUploadRequest" } } }, @@ -1537,43 +1537,43 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateAccountServiceKeyResponse201ApplicationJson" + "application/json": "#/components/schemas/CreateAccountServiceKeyResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountServiceKeyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountServiceKeyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountServiceKeyLimitReachedProblem" }, "410": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountServiceKeyUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountServiceKeyInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateAccountServiceKeyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAccountServiceKeyGatewayTimeoutProblem" } }, "summary": "Create an Account Service Key", @@ -1581,7 +1581,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateAccountServiceKeyRequestApplicationJson" + "application/json": "#/components/schemas/CreateAccountServiceKeyRequest" } } }, @@ -1609,34 +1609,34 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse201ApplicationJson" + "application/json": "#/components/schemas/AgentProfileAvatarUpload" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAgentProfileAvatarUploadGatewayTimeoutProblem" } }, "summary": "Create an agent avatar upload", @@ -1644,7 +1644,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateAgentProfileAvatarUploadRequestApplicationJson" + "application/json": "#/components/schemas/CreateAgentProfileAvatarUploadRequest" } } }, @@ -1661,28 +1661,28 @@ "parameters": [], "responses": { "201": { - "application/json": "#/components/schemas/CreateAppInstallationRequestResponse201ApplicationJson" + "application/json": "#/components/schemas/CreateAppInstallationRequestResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse401ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AppInstallationAssertionInvalidProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAppInstallationRequestConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateAppInstallationRequestResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateAppInstallationRequestGatewayTimeoutProblem" } }, "summary": "Request an app installation", @@ -1690,7 +1690,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateAppInstallationRequestRequestApplicationJson" + "application/json": "#/components/schemas/CreateAppInstallationRequestRequest" } } }, @@ -1718,37 +1718,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CreateDefaultVoiceProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "201": { - "application/json": "#/components/schemas/CreateDefaultVoiceProfileResponse201ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateDefaultVoiceProfileGatewayTimeoutProblem" } }, "summary": "Create default Voice profile", @@ -1756,7 +1756,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateDefaultVoiceProfileRequestApplicationJson" + "application/json": "#/components/schemas/CreateDefaultVoiceProfileRequest" } } }, @@ -1796,34 +1796,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson" + "application/json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem" } }, "summary": "Get a payment-method checkout URL for the organization", @@ -1865,34 +1865,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CreateOrganizationSetupIntentResponse200ApplicationJson" + "application/json": "#/components/schemas/CreateOrganizationSetupIntentResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSetupIntentGatewayTimeoutProblem" } }, "summary": "Create a SetupIntent for an in-app card capture", @@ -1922,40 +1922,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse200ApplicationJson" + "application/json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateOrganizationSsoPortalLinkGatewayTimeoutProblem" } }, "summary": "Create organization SSO setup portal", @@ -1963,7 +1963,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateOrganizationSsoPortalLinkRequestApplicationJson" + "application/json": "#/components/schemas/CreateOrganizationSsoPortalLinkRequest" } } }, @@ -2003,37 +2003,37 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateProjectResponse201ApplicationJson" + "application/json": "#/components/schemas/Project" }, "400": { - "application/problem+json": "#/components/schemas/CreateProjectResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateProjectResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateProjectResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/SlugTakenProblem" }, "413": { - "application/problem+json": "#/components/schemas/CreateProjectResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateProjectResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateProjectResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateProjectResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateProjectResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectGatewayTimeoutProblem" } }, "summary": "Create a project", @@ -2041,7 +2041,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateProjectRequestApplicationJson" + "application/json": "#/components/schemas/CreateProjectRequest" } } }, @@ -2080,43 +2080,43 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateProjectApiKeyResponse201ApplicationJson" + "application/json": "#/components/schemas/CreateProjectApiKeyResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectApiKeyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectApiKeyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ApiKeyLimitReachedProblem" }, "410": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateProjectApiKeyUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateProjectApiKeyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "Create a project API key", @@ -2124,7 +2124,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateProjectApiKeyRequestApplicationJson" + "application/json": "#/components/schemas/CreateProjectApiKeyRequest" } } }, @@ -2166,37 +2166,37 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateSharedLineAssignmentResponse201ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "400": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Create shared line assignment", @@ -2204,7 +2204,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateSharedLineAssignmentRequestApplicationJson" + "application/json": "#/components/schemas/CreateSharedLineAssignmentRequest" } } }, @@ -2232,34 +2232,34 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateVoiceProfileResponse201ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateVoiceProfileForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateVoiceProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateVoiceProfileGatewayTimeoutProblem" } }, "summary": "Create Voice profile", @@ -2267,7 +2267,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateVoiceProfileRequestApplicationJson" + "application/json": "#/components/schemas/CreateVoiceProfileRequest" } } }, @@ -2307,31 +2307,34 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateWebhookDestinationResponse201ApplicationJson" + "application/json": "#/components/schemas/CreateWebhookDestinationResponse" }, "400": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWebhookDestinationBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWebhookDestinationForbiddenProblem" + }, + "413": { + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWebhookDestinationUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateWebhookDestinationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWebhookDestinationGatewayTimeoutProblem" } }, "summary": "Create a webhook destination", @@ -2339,7 +2342,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateWebhookDestinationRequestApplicationJson" + "application/json": "#/components/schemas/CreateWebhookDestinationRequest" } } }, @@ -2379,37 +2382,37 @@ ], "responses": { "201": { - "application/json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse201ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "400": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Create WhatsApp shared line assignment", @@ -2417,7 +2420,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateWhatsappSharedLineAssignmentRequestApplicationJson" + "application/json": "#/components/schemas/CreateWhatsappSharedLineAssignmentRequest" } } }, @@ -2457,43 +2460,43 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/CreateWhatsappVoipSenderResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/CreateWhatsappVoipSenderGatewayTimeoutProblem" } }, "summary": "Create a VoIP-backed WhatsApp sender", @@ -2501,7 +2504,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/CreateWhatsappVoipSenderRequestApplicationJson" + "application/json": "#/components/schemas/CreateWhatsappVoipSenderRequest" } } }, @@ -2518,31 +2521,31 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/DeleteAccountResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteAccountForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountOwnsOrganizationsProblem" }, "500": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteAccountInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteAccountResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteAccountGatewayTimeoutProblem" } }, "summary": "Delete the authenticated account", @@ -2583,37 +2586,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/DeleteProjectResponse200ApplicationJson" + "application/json": "#/components/schemas/Project" }, "400": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteProjectBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteProjectForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "413": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteProjectUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteProjectResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteProjectGatewayTimeoutProblem" } }, "summary": "Delete a project", @@ -2666,45 +2669,41 @@ "location": "query", "required": false, "schema": { - "enum": [ - "true", - "false" - ], - "type": "string" + "$ref": "#/components/schemas/DeleteVoiceProfileForceInput" } } ], "responses": { "204": {}, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileGatewayTimeoutProblem" } }, "summary": "Delete Voice profile", @@ -2754,37 +2753,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/DeleteVoiceProfileInboundResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfileInboundConfiguration" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileInboundGatewayTimeoutProblem" } }, "summary": "Remove Voice profile inbound configuration", @@ -2834,37 +2833,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/DeleteVoiceProfileOutboundResponse200ApplicationJson" + "application/json": "#/components/schemas/DeleteVoiceProfileOutboundResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteVoiceProfileOutboundGatewayTimeoutProblem" } }, "summary": "Revoke Voice profile outbound credential", @@ -2904,28 +2903,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/DeleteWebhookDestinationResponse200ApplicationJson" + "application/json": "#/components/schemas/WebhookDestination" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DeleteWebhookDestinationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteWebhookDestinationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DeleteWebhookDestinationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationNotFoundProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DeleteWebhookDestinationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DeleteWebhookDestinationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DeleteWebhookDestinationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DeleteWebhookDestinationGatewayTimeoutProblem" } }, "summary": "Delete a webhook destination", @@ -2945,10 +2947,12 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/DeviceAuthorizeResponse200ApplicationJson" + "application/json": "#/components/schemas/DeviceAuthorizeResponse" }, "400": {}, - "502": {} + "503": { + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" + } }, "summary": "Start Device Authorization", "description": "Starts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored." @@ -2967,22 +2971,105 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/DeviceTokenResponse200ApplicationJson" + "application/json": "#/components/schemas/DeviceTokenResponse" }, "400": { - "application/json": "#/components/schemas/DeviceTokenResponse400ApplicationJson" + "application/json": "#/components/schemas/DeviceTokenBadRequestResponse" }, "429": {}, "500": {}, - "502": {} + "503": { + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" + } }, "summary": "Exchange Device Code or Refresh Token", "description": "Exchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.", "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/DeviceTokenRequestApplicationJson", - "application/x-www-form-urlencoded": "#/components/schemas/DeviceTokenRequestApplicationForm" + "application/json": "#/components/schemas/DeviceTokenRequest", + "application/x-www-form-urlencoded": "#/components/schemas/DeviceTokenRequest" + } + } + }, + { + "operationId": "disableOrganizationSso", + "rpcMethod": "disableOrganizationSso", + "namespace": [ + "auth" + ], + "httpMethod": "POST", + "path": "/v1/auth/organizations/{orgId}/sso/disable", + "safe": false, + "idempotencyKeyRequired": true, + "parameters": [ + { + "name": "idempotencyKey", + "wireName": "Idempotency-Key", + "location": "header", + "required": true, + "schema": { + "maxLength": 255, + "minLength": 1, + "pattern": "^[\\x21-\\x7e]{1,255}$", + "type": "string" + } + }, + { + "name": "orgId", + "wireName": "orgId", + "location": "path", + "required": true, + "schema": { + "pattern": "^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$", + "type": "string" + } + } + ], + "responses": { + "200": { + "application/json": "#/components/schemas/OrganizationSsoConfiguration" + }, + "400": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoBadRequestProblem" + }, + "401": { + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" + }, + "403": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoForbiddenProblem" + }, + "404": { + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" + }, + "409": { + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" + }, + "412": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoPreconditionFailedProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoUnprocessableEntityProblem" + }, + "500": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoInternalServerErrorProblem" + }, + "502": { + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" + }, + "503": { + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" + }, + "504": { + "application/problem+json": "#/components/schemas/DisableOrganizationSsoGatewayTimeoutProblem" + } + }, + "summary": "Turn organization SSO off", + "description": "Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run.", + "requestBody": { + "required": true, + "content": { + "application/json": "#/components/schemas/DisableOrganizationSsoRequest" } } }, @@ -3022,43 +3109,43 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WhatsappWabaNotConnectedProblem" }, "409": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DisconnectWhatsappBusinessAccountGatewayTimeoutProblem" } }, "summary": "Disconnect WhatsApp Business account and numbers", @@ -3098,34 +3185,34 @@ ], "responses": { "200": { - "*/*": "#/components/schemas/DownloadAttachmentResponse200ApplicationOctetStream" + "*/*": "#/components/schemas/DownloadAttachmentResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DownloadAttachmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AttachmentNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AttachmentNotReadyProblem" }, "422": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DownloadAttachmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/DownloadAttachmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/DownloadAttachmentGatewayTimeoutProblem" } }, "summary": "Download an Attachment", @@ -3144,31 +3231,31 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/GetAccountResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetAccountResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAccountForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetAccountResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/GetAccountResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetAccountResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAccountInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetAccountResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetAccountResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetAccountResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAccountGatewayTimeoutProblem" } }, "summary": "Get the authenticated account", @@ -3198,34 +3285,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetAgentProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/AgentProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAgentProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetAgentProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAgentProfileGatewayTimeoutProblem" } }, "summary": "Get an agent profile", @@ -3265,31 +3352,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetAttachmentResponse200ApplicationJson" + "application/json": "#/components/schemas/Attachment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAttachmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AttachmentNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAttachmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetAttachmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetAttachmentGatewayTimeoutProblem" } }, "summary": "Get an Attachment", @@ -3329,37 +3416,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetBillingOperationResponse200ApplicationJson" + "application/json": "#/components/schemas/BillingOperation" }, "400": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOperationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OperationNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOperationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetBillingOperationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOperationGatewayTimeoutProblem" } }, "summary": "Get a billing operation snapshot", @@ -3389,34 +3476,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetBillingOverviewResponse200ApplicationJson" + "application/json": "#/components/schemas/GetBillingOverviewResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOverviewForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOverviewInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetBillingOverviewResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetBillingOverviewGatewayTimeoutProblem" } }, "summary": "Get the project's billing overview", @@ -3446,34 +3533,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetDefaultVoiceProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetDefaultVoiceProfileGatewayTimeoutProblem" } }, "summary": "Get default Voice profile", @@ -3514,22 +3601,22 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetMessageMetricsBackfillResponse200ApplicationJson" + "application/json": "#/components/schemas/GetMessageMetricsBackfillResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetMessageMetricsBackfillForbiddenProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" } }, "summary": "Get Metrics historical backfill status", @@ -3570,22 +3657,22 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetMessageMetricsSqlSchemaResponse200ApplicationJson" + "application/json": "#/components/schemas/GetMessageMetricsSqlSchemaResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetMessageMetricsSqlSchemaForbiddenProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" } }, "summary": "Get messaging and voice metrics SQL schema", @@ -3624,38 +3711,38 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetOperationResponse200ApplicationJson" + "application/json": "#/components/schemas/GetOperationResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetOperationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOperationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetOperationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OperationNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetOperationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetOperationResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetOperationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOperationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetOperationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetOperationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetOperationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOperationGatewayTimeoutProblem" } }, "summary": "Get operation", - "description": "Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." + "description": "Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." }, { "operationId": "getOrganizationBillingOverview", @@ -3681,34 +3768,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetOrganizationBillingOverviewResponse200ApplicationJson" + "application/json": "#/components/schemas/GetOrganizationBillingOverviewResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationBillingOverviewGatewayTimeoutProblem" } }, "summary": "Get the organization's billing overview", @@ -3738,37 +3825,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetOrganizationConnectionStatusResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationConnectionStatus" }, "400": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationConnectionNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSyncUnavailableProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationConnectionStatusGatewayTimeoutProblem" } }, "summary": "Read organization and own membership synchronization", @@ -3798,34 +3885,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetOrganizationPaymentMethodResponse200ApplicationJson" + "application/json": "#/components/schemas/GetOrganizationPaymentMethodResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationPaymentMethodGatewayTimeoutProblem" } }, "summary": "Check the organization for a card on file", @@ -3855,40 +3942,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetOrganizationSsoConfigurationResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationSsoConfiguration" }, "400": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetOrganizationSsoConfigurationGatewayTimeoutProblem" } }, "summary": "Read organization SSO configuration", @@ -3917,34 +4004,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetProjectResponse200ApplicationJson" + "application/json": "#/components/schemas/Project" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetProjectResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetProjectResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/GetProjectResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetProjectResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetProjectResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetProjectResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetProjectResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectGatewayTimeoutProblem" } }, "summary": "Get a project", @@ -3983,34 +4070,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetProjectClosureStatusResponse200ApplicationJson" + "application/json": "#/components/schemas/GetProjectClosureStatusResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectClosureStatusForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetProjectClosureStatusResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectClosureStatusGatewayTimeoutProblem" } }, "summary": "Read project closure progress", @@ -4040,28 +4127,28 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetProjectImessagePlatformResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectPlatformSettings" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectImessagePlatformForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectImessagePlatformInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectImessagePlatformServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetProjectImessagePlatformResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectImessagePlatformGatewayTimeoutProblem" } }, "summary": "Get project iMessage platform", @@ -4091,28 +4178,28 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetProjectWhatsappPlatformResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectPlatformSettings" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetProjectWhatsappPlatformGatewayTimeoutProblem" } }, "summary": "Get project WhatsApp platform", @@ -4151,34 +4238,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetResourceResponse200ApplicationJson" + "application/json": "#/components/schemas/Resource" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetResourceResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetResourceForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetResourceResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetResourceResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetResourceResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetResourceResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetResourceInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetResourceResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetResourceResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetResourceResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetResourceGatewayTimeoutProblem" } }, "summary": "Get resource", @@ -4219,34 +4306,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetSharedLineAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSharedLineAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignmentNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Get shared line assignment", @@ -4285,41 +4372,41 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse" }, "400": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/SmsCampaignInvalidRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentConflictProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetSmsLineCampaignAssignmentGatewayTimeoutProblem" } }, "summary": "Read SMS line campaign assignment", - "description": "Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." + "description": "Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." }, { "operationId": "getVoiceLineProfileAssignment", @@ -4354,34 +4441,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceLineProfileAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceLineProfileAssignmentGatewayTimeoutProblem" } }, "summary": "Get Voice line profile assignment", @@ -4420,34 +4507,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetVoiceProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetVoiceProfileGatewayTimeoutProblem" } }, "summary": "Get Voice profile", @@ -4487,31 +4574,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetWebhookDestinationResponse200ApplicationJson" + "application/json": "#/components/schemas/WebhookDestination" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWebhookDestinationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationDeletedProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWebhookDestinationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWebhookDestinationGatewayTimeoutProblem" } }, "summary": "Get a webhook destination", @@ -4562,29 +4652,32 @@ ], "responses": { "200": { - "application/schema+json": "#/components/schemas/GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson" + "application/schema+json": "#/components/schemas/WebhookEventSchema" }, "304": {}, "400": { - "application/problem+json": "#/components/schemas/GetWebhookEventSchemaResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWebhookEventSchemaResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWebhookEventSchemaForbiddenProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetWebhookEventSchemaResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetWebhookEventSchemaResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWebhookEventSchemaResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWebhookEventSchemaGatewayTimeoutProblem" } }, "summary": "Get a webhook event schema", @@ -4614,34 +4707,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetWhatsappBusinessAccountResponse200ApplicationJson" + "application/json": "#/components/schemas/WhatsappBusinessAccount" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WhatsappWabaNotConnectedProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessAccountGatewayTimeoutProblem" } }, "summary": "Get WhatsApp Business account", @@ -4691,34 +4784,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse200ApplicationJson" + "application/json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem" } }, "summary": "Get WhatsApp Business verification code", @@ -4757,34 +4850,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignmentNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Get WhatsApp shared line assignment", @@ -4814,28 +4907,28 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/GetWhatsappSignupConfigResponse200ApplicationJson" + "application/json": "#/components/schemas/GetWhatsappSignupConfigResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigInternalServerErrorProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "Get WhatsApp signup config", @@ -4854,31 +4947,31 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/ListAccountServiceKeysResponse200ApplicationJson" + "application/json": "#/components/schemas/ListAccountServiceKeysResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAccountServiceKeysForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAccountServiceKeysInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListAccountServiceKeysResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAccountServiceKeysGatewayTimeoutProblem" } }, "summary": "List Account Service Keys", @@ -4933,11 +5026,7 @@ "location": "query", "required": false, "schema": { - "enum": [ - "asc", - "desc" - ], - "type": "string" + "$ref": "#/components/schemas/SortOrder" } }, { @@ -4946,11 +5035,7 @@ "location": "query", "required": false, "schema": { - "enum": [ - "created_at", - "updated_at" - ], - "type": "string" + "$ref": "#/components/schemas/TimestampOrderBy" } }, { @@ -4959,8 +5044,9 @@ "location": "query", "required": false, "schema": { - "pattern": "^[0-9]+$", - "type": "string" + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" } }, { @@ -5000,28 +5086,28 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListAttachmentsResponse200ApplicationJson" + "application/json": "#/components/schemas/AttachmentPage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAttachmentsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAttachmentsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListAttachmentsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAttachmentsGatewayTimeoutProblem" } }, "summary": "List Project Attachments", @@ -5077,39 +5163,34 @@ "location": "query", "required": false, "schema": { - "enum": [ - "normal", - "desc", - "asc" - ], - "type": "string" + "$ref": "#/components/schemas/ListAuthorizedApplicationsOrder" } } ], "responses": { "200": { - "application/json": "#/components/schemas/ListAuthorizedApplicationsResponse200ApplicationJson" + "application/json": "#/components/schemas/ListAuthorizedApplicationsResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListAuthorizedApplicationsGatewayTimeoutProblem" } }, "summary": "List connected applications", @@ -5139,37 +5220,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListBillingPlansResponse200ApplicationJson" + "application/json": "#/components/schemas/ListBillingPlansResponse" }, "400": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListBillingPlansForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListBillingPlansInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListBillingPlansResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListBillingPlansGatewayTimeoutProblem" } }, - "summary": "List billing plans available to a project", + "summary": "List available billing plans", "description": "Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." }, { @@ -5196,34 +5277,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListInvoicesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListInvoicesResponse" }, "400": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListInvoicesForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/FailedPreconditionProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListInvoicesInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListInvoicesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListInvoicesGatewayTimeoutProblem" } }, "summary": "List invoices", @@ -5263,31 +5344,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListNumberAreaCodesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListNumberAreaCodesResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberAreaCodesForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberAreaCodesInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListNumberAreaCodesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberAreaCodesGatewayTimeoutProblem" } }, "summary": "List supported number area codes", @@ -5317,31 +5398,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListNumberCountriesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListNumberCountriesResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberCountriesForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberCountriesInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListNumberCountriesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListNumberCountriesGatewayTimeoutProblem" } }, "summary": "List supported number countries", @@ -5360,13 +5441,13 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/ListOauthScopesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListOauthScopesResponse" }, "503": { - "application/problem+json": "#/components/schemas/ListOauthScopesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListOauthScopesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListOauthScopesGatewayTimeoutProblem" } }, "summary": "List OAuth scopes", @@ -5439,48 +5520,41 @@ "location": "query", "required": false, "schema": { - "enum": [ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign" - ], - "type": "string" + "$ref": "#/components/schemas/OperationType" } } ], "responses": { "200": { - "application/json": "#/components/schemas/ListOperationsResponse200ApplicationJson" + "application/json": "#/components/schemas/OperationPage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListOperationsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListOperationsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListOperationsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListOperationsResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListOperationsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListOperationsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListOperationsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListOperationsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListOperationsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListOperationsGatewayTimeoutProblem" } }, "summary": "List operations", - "description": "Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." + "description": "Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." }, { "operationId": "listProjectApiKeys", @@ -5505,40 +5579,41 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListProjectApiKeysResponse200ApplicationJson" + "application/json": "#/components/schemas/ListProjectApiKeysResponse" }, "400": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListProjectApiKeysForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListProjectApiKeysResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, - "summary": "List project API keys" + "summary": "List project API keys", + "description": "Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation." }, { "operationId": "listProjectPlatforms", @@ -5564,25 +5639,25 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListProjectPlatformsResponse200ApplicationJson" + "application/json": "#/components/schemas/ListProjectPlatformsResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListProjectPlatformsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListProjectPlatformsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListProjectPlatformsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListProjectPlatformsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListProjectPlatformsInternalServerErrorProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListProjectPlatformsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "List project platforms", @@ -5666,31 +5741,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListProjectsResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectPage" }, "400": { - "application/problem+json": "#/components/schemas/ListProjectsResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListProjectsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListProjectsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListProjectsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListProjectsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListProjectsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListProjectsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListProjectsGatewayTimeoutProblem" } }, "summary": "List accessible projects", @@ -5771,31 +5846,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListResourcesResponse200ApplicationJson" + "application/json": "#/components/schemas/ResourcePage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListResourcesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListResourcesForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListResourcesResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListResourcesResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListResourcesResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListResourcesInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListResourcesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListResourcesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListResourcesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListResourcesGatewayTimeoutProblem" } }, "summary": "List resources", @@ -5857,31 +5932,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListSharedLineAssignmentsResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignmentPage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListSharedLineAssignmentsGatewayTimeoutProblem" } }, "summary": "List shared line assignments", @@ -5914,11 +5989,7 @@ "location": "query", "required": false, "schema": { - "enum": [ - "true", - "false" - ], - "type": "string" + "$ref": "#/components/schemas/ListVoiceProfilesDefaultInput" } }, { @@ -5945,31 +6016,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListVoiceProfilesResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfilePage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListVoiceProfilesForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListVoiceProfilesInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListVoiceProfilesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListVoiceProfilesGatewayTimeoutProblem" } }, "summary": "List Voice profiles", @@ -5999,26 +6070,29 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWebhookApiVersionsResponse200ApplicationJson" + "application/json": "#/components/schemas/ListWebhookApiVersionsResponse" }, "304": {}, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWebhookApiVersionsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookApiVersionsForbiddenProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListWebhookApiVersionsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListWebhookApiVersionsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListWebhookApiVersionsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookApiVersionsGatewayTimeoutProblem" } }, "summary": "List webhook API versions", @@ -6070,28 +6144,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWebhookDestinationsResponse200ApplicationJson" + "application/json": "#/components/schemas/WebhookDestinationPage" }, "400": { - "application/problem+json": "#/components/schemas/ListWebhookDestinationsResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWebhookDestinationsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookDestinationsForbiddenProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListWebhookDestinationsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListWebhookDestinationsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListWebhookDestinationsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookDestinationsGatewayTimeoutProblem" } }, "summary": "List webhook destinations", @@ -6121,20 +6198,26 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWebhookEgressAddressesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListWebhookEgressAddressesResponse" }, "304": {}, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookEgressAddressesForbiddenProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" + }, + "504": { + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "List webhook egress addresses", @@ -6175,29 +6258,32 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWebhookEventTypesResponse200ApplicationJson" + "application/json": "#/components/schemas/ListWebhookEventTypesResponse" }, "304": {}, "400": { - "application/problem+json": "#/components/schemas/ListWebhookEventTypesResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWebhookEventTypesResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookEventTypesForbiddenProblem" + }, + "422": { + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListWebhookEventTypesResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListWebhookEventTypesResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListWebhookEventTypesResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWebhookEventTypesGatewayTimeoutProblem" } }, "summary": "List webhook event types", @@ -6227,34 +6313,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse200ApplicationJson" + "application/json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WhatsappWabaNotConnectedProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem" } }, "summary": "List WhatsApp account phone numbers", @@ -6314,31 +6400,31 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignmentPage" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem" } }, "summary": "List WhatsApp shared line assignments", @@ -6380,44 +6466,44 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/ProvisionImessageDedicatedLineResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectClosingProblem" }, "422": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionImessageDedicatedLineGatewayTimeoutProblem" } }, "summary": "Provision dedicated iMessage line", - "description": "Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." + "description": "Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." }, { "operationId": "provisionWhatsappDedicatedLine", @@ -6455,44 +6541,44 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectClosingProblem" }, "422": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProvisionWhatsappDedicatedLineGatewayTimeoutProblem" } }, "summary": "Provision dedicated WhatsApp line", - "description": "Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." + "description": "Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." }, { "operationId": "purchaseSmsNumber", @@ -6530,40 +6616,40 @@ ], "responses": { "202": { - "application/json": "#/components/schemas/PurchaseSmsNumberResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "402": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse402ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/EntitlementRequiredProblem" }, "403": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectClosingProblem" }, "422": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/PurchaseSmsNumberResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PurchaseSmsNumberGatewayTimeoutProblem" } }, "summary": "Purchase SMS number", @@ -6571,7 +6657,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/PurchaseSmsNumberRequestApplicationJson" + "application/json": "#/components/schemas/PurchaseSmsNumberRequest" } } }, @@ -6610,31 +6696,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/QueryMessageMetricsResponse200ApplicationJson" + "application/json": "#/components/schemas/QueryMessageMetricsResponse" }, "400": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/QueryMessageMetricsForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/QueryMessageMetricsUnprocessableEntityProblem" + }, + "429": { + "application/problem+json": "#/components/schemas/QueryConcurrencyLimitProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/QueryMessageMetricsResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/QueryMessageMetricsGatewayTimeoutProblem" } }, "summary": "Query messaging and voice metrics with SQL", @@ -6659,28 +6748,28 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/RedeemAppInstallationDeliveryResponse200ApplicationJson" + "application/json": "#/components/schemas/RedeemAppInstallationDeliveryResponse" }, "400": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AppInstallationAssertionInvalidProblem" }, "409": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AppInstallationDeliveryUnavailableProblem" }, "422": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "502": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RedeemAppInstallationDeliveryGatewayTimeoutProblem" } }, "summary": "Redeem an approved installation credential", @@ -6688,7 +6777,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/RedeemAppInstallationDeliveryRequestApplicationJson" + "application/json": "#/components/schemas/RedeemAppInstallationDeliveryRequest" } } }, @@ -6716,40 +6805,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationSsoConfiguration" }, "400": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RefreshOrganizationSsoConnectionGatewayTimeoutProblem" } }, "summary": "Refresh organization SSO connection", @@ -6788,41 +6877,41 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReleaseImessageDedicatedLineResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/ReleaseImessageDedicatedLineResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseImessageDedicatedLineGatewayTimeoutProblem" } }, "summary": "Release dedicated iMessage line", - "description": "Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." + "description": "Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." }, { "operationId": "releaseResource", @@ -6857,40 +6946,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReleaseResourceResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/ReleaseResourceResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseResourceForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseResourceConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseResourceInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReleaseResourceResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseResourceGatewayTimeoutProblem" } }, "summary": "Release resource", @@ -6931,34 +7020,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReleaseSharedLineAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignmentNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Release shared line assignment", @@ -6997,41 +7086,41 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappDedicatedLineGatewayTimeoutProblem" } }, "summary": "Release dedicated WhatsApp line", - "description": "Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." + "description": "Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." }, { "operationId": "releaseWhatsappSharedLineAssignment", @@ -7066,34 +7155,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson" + "application/json": "#/components/schemas/SharedLineAssignment" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AssignmentNotFoundProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem" } }, "summary": "Release WhatsApp shared line assignment", @@ -7132,40 +7221,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ReplaceVoiceProfileInboundResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfileInboundConfiguration" }, "201": { - "application/json": "#/components/schemas/ReplaceVoiceProfileInboundResponse201ApplicationJson" + "application/json": "#/components/schemas/VoiceProfileInboundConfiguration" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ReplaceVoiceProfileInboundGatewayTimeoutProblem" } }, "summary": "Create or replace Voice profile inbound configuration", @@ -7173,7 +7262,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ReplaceVoiceProfileInboundRequestApplicationJson" + "application/json": "#/components/schemas/ReplaceVoiceProfileInboundRequest" } } }, @@ -7203,40 +7292,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ResetAccountProfilePictureResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "400": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAccountProfilePictureBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAccountProfilePictureForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAccountProfilePictureUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAccountProfilePictureInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ResetAccountProfilePictureResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAccountProfilePictureGatewayTimeoutProblem" } }, "summary": "Remove a profile picture", @@ -7278,34 +7367,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ResetAgentProfileAvatarResponse200ApplicationJson" + "application/json": "#/components/schemas/AgentProfile" + }, + "400": { + "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResetAgentProfileAvatarGatewayTimeoutProblem" } }, "summary": "Reset an agent avatar", @@ -7356,34 +7448,34 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/ResumeSubscriptionResponse200ApplicationJson" + "application/json": "#/components/schemas/ResumeSubscriptionResponse" }, "400": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/ResumeSubscriptionResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResumeSubscriptionGatewayTimeoutProblem" } }, "summary": "Resume a category scheduled for cancellation", @@ -7391,7 +7483,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/ResumeSubscriptionRequestApplicationJson" + "application/json": "#/components/schemas/ResumeSubscriptionRequest" } } }, @@ -7419,37 +7511,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RetryOrganizationConnectionSyncResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationConnectionStatus" }, "400": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationConnectionNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSyncUnavailableProblem" }, "422": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RetryOrganizationConnectionSyncGatewayTimeoutProblem" } }, "summary": "Retry own organization connection synchronization", @@ -7491,40 +7583,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RevokeAccountServiceKeyResponse200ApplicationJson" + "application/json": "#/components/schemas/RevokeAccountServiceKeyResponse" }, "400": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAccountServiceKeyGatewayTimeoutProblem" } }, "summary": "Revoke an Account Service Key", @@ -7556,25 +7648,25 @@ "responses": { "204": {}, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationForbiddenProblem" }, "422": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeAuthorizedApplicationGatewayTimeoutProblem" } }, "summary": "Revoke a connected application", @@ -7624,37 +7716,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RevokeProjectApiKeyResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectApiKeyResponse" }, "400": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeProjectApiKeyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeProjectApiKeyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeProjectApiKeyNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "422": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RevokeProjectApiKeyUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RevokeProjectApiKeyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "Delete a project API key", @@ -7705,40 +7797,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse200ApplicationJson" + "application/json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse" }, "400": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem" }, "429": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem" } }, "summary": "Rotate Voice outbound credential", @@ -7746,7 +7838,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/RotateVoiceProfileOutboundCredentialRequestApplicationJson" + "application/json": "#/components/schemas/RotateVoiceProfileOutboundCredentialRequest" } } }, @@ -7796,37 +7888,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/RotateWebhookSigningSecretResponse200ApplicationJson" + "application/json": "#/components/schemas/RotateWebhookSigningSecretResponse" }, "400": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationDeletedProblem" + }, + "413": { + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RotateWebhookSigningSecretGatewayTimeoutProblem" } }, "summary": "Rotate a webhook signing secret", @@ -7834,7 +7929,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/RotateWebhookSigningSecretRequestApplicationJson" + "application/json": "#/components/schemas/RotateWebhookSigningSecretRequest" } } }, @@ -7851,43 +7946,43 @@ "parameters": [], "responses": { "201": { - "application/json": "#/components/schemas/StartAccountPhoneVerificationResponse201ApplicationJson" + "application/json": "#/components/schemas/StartAccountPhoneVerificationResponse" }, "400": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidArgumentProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/StartAccountPhoneVerificationGatewayTimeoutProblem" } }, "summary": "Start a phone number verification", @@ -7895,7 +7990,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/StartAccountPhoneVerificationRequestApplicationJson" + "application/json": "#/components/schemas/StartAccountPhoneVerificationRequest" } } }, @@ -7912,10 +8007,10 @@ "parameters": [], "responses": { "200": { - "application/json": "#/components/schemas/StartEnterpriseLoginResponse200ApplicationJson" + "application/json": "#/components/schemas/StartEnterpriseLoginResponse" }, "400": { - "application/problem+json": "#/components/schemas/StartEnterpriseLoginResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/InvalidReturnToProblem" } }, "summary": "Start company sign-in without an existing Account", @@ -7923,7 +8018,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/StartEnterpriseLoginRequestApplicationJson" + "application/json": "#/components/schemas/StartEnterpriseLoginRequest" } } }, @@ -7981,43 +8076,43 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UnassignSmsLineCampaignResponse200ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "202": { - "application/json": "#/components/schemas/UnassignSmsLineCampaignResponse202ApplicationJson" + "application/json": "#/components/schemas/Operation" }, "400": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/IdempotencyKeyReusedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignServiceUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignSmsLineCampaignGatewayTimeoutProblem" } }, "summary": "Remove SMS line campaign", @@ -8068,34 +8163,34 @@ "responses": { "204": {}, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ResourceNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileVersionConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UnassignVoiceLineProfileGatewayTimeoutProblem" } }, "summary": "Unassign Voice line profile", @@ -8127,40 +8222,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateAccountResponse200ApplicationJson" + "application/json": "#/components/schemas/Account" }, "400": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAccountBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAccountForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/AccountDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAccountUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAccountInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateAccountResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAccountGatewayTimeoutProblem" } }, "summary": "Update the authenticated account", @@ -8168,7 +8263,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateAccountRequestApplicationJson" + "application/json": "#/components/schemas/UpdateAccountRequest" } } }, @@ -8208,40 +8303,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateAgentProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/AgentProfile" }, "400": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAgentProfileBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAgentProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAgentProfileUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateAgentProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateAgentProfileGatewayTimeoutProblem" } }, "summary": "Update an agent profile", @@ -8249,7 +8344,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateAgentProfileRequestApplicationJson" + "application/json": "#/components/schemas/UpdateAgentProfileRequest" } } }, @@ -8277,37 +8372,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateDefaultVoiceProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateDefaultVoiceProfileGatewayTimeoutProblem" } }, "summary": "Update default Voice profile", @@ -8315,7 +8410,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateDefaultVoiceProfileRequestApplicationJson" + "application/json": "#/components/schemas/UpdateDefaultVoiceProfileRequest" } } }, @@ -8343,40 +8438,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse200ApplicationJson" + "application/json": "#/components/schemas/OrganizationSsoConfiguration" }, "400": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/OrganizationSsoConflictProblem" }, "412": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyPreconditionFailedProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateOrganizationSsoPolicyGatewayTimeoutProblem" } }, "summary": "Update organization SSO policy", @@ -8384,7 +8479,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateOrganizationSsoPolicyRequestApplicationJson" + "application/json": "#/components/schemas/UpdateOrganizationSsoPolicyRequest" } } }, @@ -8423,40 +8518,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateProjectResponse200ApplicationJson" + "application/json": "#/components/schemas/Project" }, "400": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateProjectResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectGatewayTimeoutProblem" } }, "summary": "Update a project", @@ -8464,7 +8559,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateProjectRequestApplicationJson" + "application/json": "#/components/schemas/UpdateProjectRequest" } } }, @@ -8512,43 +8607,43 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateProjectApiKeyResponse200ApplicationJson" + "application/json": "#/components/schemas/ProjectApiKeyResponse" }, "400": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectApiKeyBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectApiKeyForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectApiKeyNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ApiKeyRevokedProblem" }, "410": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ProjectDeletedProblem" }, "413": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateProjectApiKeyUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateProjectApiKeyResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RequestTimeoutProblem" } }, "summary": "Update a project API key's permissions", @@ -8556,7 +8651,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateProjectApiKeyRequestApplicationJson" + "application/json": "#/components/schemas/UpdateProjectApiKeyRequest" } } }, @@ -8593,37 +8688,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateVoiceProfileResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfile" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileGatewayTimeoutProblem" } }, "summary": "Update Voice profile", @@ -8631,7 +8726,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateVoiceProfileRequestApplicationJson" + "application/json": "#/components/schemas/UpdateVoiceProfileRequest" } } }, @@ -8668,37 +8763,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateVoiceProfileInboundResponse200ApplicationJson" + "application/json": "#/components/schemas/VoiceProfileInboundConfiguration" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileInboundGatewayTimeoutProblem" } }, "summary": "Update Voice profile inbound configuration", @@ -8706,7 +8801,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateVoiceProfileInboundRequestApplicationJson" + "application/json": "#/components/schemas/UpdateVoiceProfileInboundRequest" } } }, @@ -8743,37 +8838,37 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson" + "application/json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/VoiceProfileNotFoundProblem" }, "409": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationConflictProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "429": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/RateLimitedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem" } }, "summary": "Update Voice profile outbound authentication policy", @@ -8781,7 +8876,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson" + "application/json": "#/components/schemas/UpdateVoiceProfileOutboundAuthenticationRequest" } } }, @@ -8831,37 +8926,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UpdateWebhookDestinationResponse200ApplicationJson" + "application/json": "#/components/schemas/WebhookDestination" }, "400": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateWebhookDestinationBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateWebhookDestinationForbiddenProblem" }, "404": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse404ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationNotFoundProblem" }, "410": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse410ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/WebhookDestinationDeletedProblem" + }, + "413": { + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateWebhookDestinationUnprocessableEntityProblem" }, "500": { - "application/problem+json": "#/components/schemas/PhotonProblem_INTERNAL_ERROR_500" + "application/problem+json": "#/components/schemas/InternalErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UpdateWebhookDestinationResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpdateWebhookDestinationGatewayTimeoutProblem" } }, "summary": "Update a webhook destination", @@ -8869,7 +8967,7 @@ "requestBody": { "required": true, "content": { - "application/json": "#/components/schemas/UpdateWebhookDestinationRequestApplicationJson" + "application/json": "#/components/schemas/UpdateWebhookDestinationRequest" } } }, @@ -8927,40 +9025,40 @@ ], "responses": { "200": { - "application/json": "#/components/schemas/UploadAttachmentResponse200ApplicationJson" + "application/json": "#/components/schemas/Attachment" }, "201": { - "application/json": "#/components/schemas/UploadAttachmentResponse201ApplicationJson" + "application/json": "#/components/schemas/Attachment" }, "400": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse400ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UploadAttachmentBadRequestProblem" }, "401": { - "application/problem+json": "#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401" + "application/problem+json": "#/components/schemas/NotAuthenticatedProblem" }, "403": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse403ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UploadAttachmentForbiddenProblem" }, "409": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse409ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UploadAttachmentConflictProblem" }, "413": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse413ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/PayloadTooLargeProblem" }, "422": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse422ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/ValidationFailedProblem" }, "500": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse500ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UploadAttachmentInternalServerErrorProblem" }, "502": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse502ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamFailureProblem" }, "503": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse503ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UpstreamUnavailableProblem" }, "504": { - "application/problem+json": "#/components/schemas/UploadAttachmentResponse504ApplicationProblemPlusJson" + "application/problem+json": "#/components/schemas/UploadAttachmentGatewayTimeoutProblem" } }, "summary": "Upload an Attachment", @@ -8968,7 +9066,10 @@ "requestBody": { "required": true, "content": { - "multipart/related": "#/components/schemas/UploadAttachmentRequestMultipartRelated" + "multipart/related": { + "format": "binary", + "type": "string" + } } } } diff --git a/openapi/sdk.json b/openapi/sdk.json index 4a84e33..c877e39 100644 --- a/openapi/sdk.json +++ b/openapi/sdk.json @@ -1 +1 @@ -{"components":{"schemas":{"AssignSmsLineCampaignRequestApplicationJson":{"additionalProperties":false,"properties":{"campaignId":{"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["campaignId","expectedVersion"],"type":"object"},"AssignSmsLineCampaignResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"AssignSmsLineCampaignResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"AssignSmsLineCampaignResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_INVALID_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid SMS campaign request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-invalid-request","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_ORGANIZATION_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Campaign belongs to another organization","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-organization-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Campaign not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"SMS line not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_UNSUPPORTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"SMS line unsupported","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-unsupported","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign not ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment version conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_MUTATION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment mutation in progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-mutation-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CAPACITY_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign number capacity exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-capacity-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_RECONCILIATION_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign reconciliation required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-reconciliation-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignSmsLineCampaignResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignSmsLineCampaignResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignSmsLineCampaignResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CONTEXT_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Campaign context unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-context-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignSmsLineCampaignResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignVoiceLineProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"profileId":{"type":"string"}},"required":["expectedVersion","profileId"],"type":"object"},"AssignVoiceLineProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"profileId":{"type":"string"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["projectId","resourceId","resourceVersion","updatedAt"],"type":"object"},"AssignVoiceLineProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignVoiceLineProfileResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignVoiceLineProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Assignment Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignVoiceLineProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"AssignVoiceLineProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignVoiceLineProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"AssignVoiceLineProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignVoiceLineProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignVoiceLineProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"Authorization_Problem_INSUFFICIENT_SCOPE_403":{"additionalProperties":false,"properties":{"code":{"const":"INSUFFICIENT_SCOPE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"integer"},"title":{"const":"Insufficient Scope","type":"string"},"type":{"const":"https://photon.codes/docs/problems/insufficient-scope","type":"string"}},"required":["type","title","status","code"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson":{"additionalProperties":false,"properties":{"updates":{"items":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"profileId":{"anyOf":[{"type":"string"},{"type":"null"}]},"resourceId":{"type":"string"}},"required":["expectedVersion","profileId","resourceId"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}},"required":["updates"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignments":{"items":{"additionalProperties":false,"properties":{"profileId":{"type":"string"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["projectId","resourceId","resourceVersion","updatedAt"],"type":"object"},"type":"array"}},"required":["assignments"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Assignment Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginInvitationSsoRequestApplicationJson":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"},"token":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"}},"required":["token","returnTo"],"type":"object"},"BeginInvitationSsoResponse200ApplicationJson":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"BeginInvitationSsoResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginInvitationSsoResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"BeginInvitationSsoResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginInvitationSsoResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginInvitationSsoResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginInvitationSsoResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"BeginInvitationSsoResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginInvitationSsoResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginInvitationSsoResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginInvitationSsoResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationAuthenticationRequestApplicationJson":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"BeginOrganizationAuthenticationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationClosureAuthenticationRequestApplicationJson":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationSsoAdmissionRequestApplicationJson":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"BeginOrganizationSsoAdmissionResponse200ApplicationJson":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelOperationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"CancelOperationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelOperationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"OPERATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Operation Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelOperationResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"OPERATION_NOT_CANCELLABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Operation Not Cancellable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-cancellable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelOperationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CancelOperationResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelOperationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelOperationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelOperationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelOperationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionRequestApplicationJson":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["category"],"type":"object"},"CancelSubscriptionResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellationScheduled":{"description":"False when the category held no active subscription.","type":"boolean"},"cancelsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End of the final paid period, ISO 8601."},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["cancellationScheduled","cancelsAt","category"],"type":"object"},"CancelSubscriptionResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_REQUEST_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Idempotency Request In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-request-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CancelSubscriptionResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Idempotency Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CancelSubscriptionResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanRequestApplicationJson":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"planCode":{"description":"Plan to subscribe to, e.g. analytics_pro.","maxLength":64,"minLength":1,"type":"string"}},"required":["category","planCode"],"type":"object"},"ChangePlanResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"additionalProperties":false,"properties":{"type":{"const":"version","type":"string"},"version":{"type":"string"}},"required":["type","version"],"type":"object"},"status":{"const":"succeeded","description":"Terminal. The result is authoritative.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"additionalProperties":false,"properties":{"code":{"description":"Stable provider-neutral failure category.","enum":["payment_method_required","payment_failed","not_provisioned","invalid_target","internal"],"type":"string"},"detail":{"anyOf":[{"enum":["cancellation_scheduled","feature_not_sold_by_plan","feature_not_found","payment_timeout","plan_activation_timeout","plan_not_found","quantity_out_of_range","target_rejected"],"type":"string"},{"type":"null"}]},"retryable":{"type":"boolean"}},"required":["code","detail","retryable"],"type":"object"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"type":"null"},"status":{"const":"failed","description":"Terminal. Failure contains a stable code and retryability.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"}]},"ChangePlanResponse202ApplicationJson":{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"type":"null"},"result":{"type":"null"},"status":{"const":"pending","description":"Accepted and still executing. Poll the operation route.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},"ChangePlanResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_REQUEST_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Idempotency Request In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-request-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ChangePlanResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ChangePlanResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Idempotency Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ChangePlanResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CheckProjectSlugAvailabilityResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"slug":{"type":"string"}},"required":["available","slug"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"enum":["reserved","retired","taken","too_short"],"type":"string"},"slug":{"type":"string"},"suggestion":{"type":"string"}},"required":["available","reason","slug"],"type":"object"}]},"CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ClickHouseSqlQueryRequest":{"additionalProperties":false,"properties":{"parameters":{"additionalProperties":{"maxLength":16384,"type":"string"},"propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","type":"string"},"type":"object"},"sql":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["sql"],"type":"object"},"CommitAccountProfilePictureRequestApplicationJson":{"additionalProperties":false,"properties":{"uploadId":{"pattern":"^pho_upl_[0-9a-z]{26}$","type":"string"}},"required":["uploadId"],"type":"object"},"CommitAccountProfilePictureResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"CommitAccountProfilePictureResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAccountProfilePictureResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAccountProfilePictureResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAccountProfilePictureResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAccountProfilePictureResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAccountProfilePictureResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"CommitAccountProfilePictureResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAccountProfilePictureResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAccountProfilePictureResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAccountProfilePictureResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAgentProfileAvatarRequestApplicationJson":{"additionalProperties":false,"properties":{"uploadId":{"type":"string"}},"required":["uploadId"],"type":"object"},"CommitAgentProfileAvatarResponse200ApplicationJson":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundRequestApplicationJson":{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"}},"required":["algorithm"],"type":"object"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["authentication","expectedVersion"],"type":"object"},"ConfigureVoiceProfileOutboundResponse200ApplicationJson":{"additionalProperties":false,"properties":{"outbound":{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},"password":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","password","profileVersion"],"type":"object"},"ConfigureVoiceProfileOutboundResponse201ApplicationJson":{"additionalProperties":false,"properties":{"outbound":{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},"password":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","password","profileVersion"],"type":"object"},"ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Already Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfirmAccountPhoneVerificationRequestApplicationJson":{"additionalProperties":false,"properties":{"code":{"pattern":"^\\d{6}$","type":"string"},"phoneNumber":{"pattern":"^[+\\d][\\d\\s().-]{6,24}$","type":"string"}},"required":["code","phoneNumber"],"type":"object"},"ConfirmAccountPhoneVerificationResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainRequestApplicationJson":{"additionalProperties":false,"properties":{"domain":{"type":"string"}},"required":["domain"],"type":"object"},"ConnectEmailDomainResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ConnectEmailDomainResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectEmailDomainResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"EMAIL_DOMAIN_ALREADY_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Email Domain Already Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/email-domain-already-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"EMAIL_DOMAIN_CAP_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Email Domain Cap Exceeded","type":"string"},"type":{"const":"https://photon.codes/docs/problems/email-domain-cap-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectEmailDomainResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectEmailDomainResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectEmailDomainResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectTelegramBotRequestApplicationJson":{"additionalProperties":false,"properties":{},"type":"object"},"ConnectTelegramBotResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ConnectTelegramBotResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectTelegramBotResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectTelegramBotResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"TELEGRAM_PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Telegram Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/telegram-project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"TELEGRAM_PROVISION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"operationId":{"type":"string"},"operationUrl":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Telegram Provision In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/telegram-provision-in-progress","type":"string"}},"required":["code","status","title","type","operationId","operationUrl"],"type":"object"}]},"ConnectTelegramBotResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectTelegramBotResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectTelegramBotResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectTelegramBotResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectTelegramBotResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectTelegramBotResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessRequestApplicationJson":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"minLength":1,"type":"string"},"phoneNumberId":{"maxLength":64,"minLength":1,"type":"string"},"wabaId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["code","phoneNumberId","wabaId"],"type":"object"},"ConnectWhatsappBusinessResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CountProjectsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count"],"type":"object"},"CountProjectsResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CountProjectsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CountProjectsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CountProjectsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CountProjectsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CountProjectsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountProfilePictureUploadRequestApplicationJson":{"additionalProperties":false,"properties":{"contentType":{"enum":["image/jpeg","image/png","image/webp"],"type":"string"}},"required":["contentType"],"type":"object"},"CreateAccountProfilePictureUploadResponse201ApplicationJson":{"additionalProperties":false,"properties":{"expiresAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"formFields":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"uploadId":{"type":"string"},"uploadUrl":{"format":"uri","type":"string"}},"required":["expiresAt","formFields","uploadId","uploadUrl"],"type":"object"},"CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountServiceKeyRequestApplicationJson":{"additionalProperties":false,"properties":{"expiresAt":{"example":"2030-01-01T00:00:00Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"name":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"CreateAccountServiceKeyResponse201ApplicationJson":{"additionalProperties":false,"properties":{"secret":{"type":"string"},"serviceKey":{"additionalProperties":false,"properties":{"accountId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"serviceKeyId":{"type":"string"}},"required":["accountId","createdAt","expiresAt","name","revokedAt","serviceKeyId"],"type":"object"}},"required":["secret","serviceKey"],"type":"object"},"CreateAccountServiceKeyResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountServiceKeyResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountServiceKeyResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_SERVICE_KEY_LIMIT_REACHED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Account Service Key Limit Reached","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-service-key-limit-reached","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"CreateAccountServiceKeyResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAccountServiceKeyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAccountServiceKeyResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAgentProfileAvatarUploadRequestApplicationJson":{"additionalProperties":false,"properties":{"contentType":{"enum":["image/jpeg","image/png","image/webp"],"type":"string"}},"required":["contentType"],"type":"object"},"CreateAgentProfileAvatarUploadResponse201ApplicationJson":{"additionalProperties":false,"properties":{"expiresAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"formFields":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"uploadId":{"type":"string"},"uploadUrl":{"format":"uri","type":"string"}},"required":["expiresAt","formFields","uploadId","uploadUrl"],"type":"object"},"CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAppInstallationRequestRequestApplicationJson":{"additionalProperties":false,"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"clientAssertion":{"maxLength":16384,"minLength":1,"type":"string"},"redirectUri":{"maxLength":4096,"type":"string"},"state":{"maxLength":4096,"type":"string"}},"required":["appId","clientAssertion","redirectUri","state"],"type":"object"},"CreateAppInstallationRequestResponse201ApplicationJson":{"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"appVersion":{"pattern":"^[1-9][0-9]*$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"redirectUri":{"maxLength":4096,"type":"string"},"requestId":{"pattern":"^pho_air_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"state":{"maxLength":4096,"type":"string"}},"required":["requestId","appId","appVersion","redirectUri","state","createdAt"],"type":"object"},"CreateAppInstallationRequestResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAppInstallationRequestResponse401ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"APP_INSTALLATION_ASSERTION_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":401,"type":"number"},"title":{"const":"Invalid Installation Client Assertion","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-assertion-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAppInstallationRequestResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"APP_INSTALLATION_ASSERTION_REPLAYED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation Assertion Already Used","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-assertion-replayed","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"APP_INSTALLATION_CONFIG_CHANGED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation App Configuration Changed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-config-changed","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateAppInstallationRequestResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateAppInstallationRequestResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAppInstallationRequestResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateAppInstallationRequestResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateDefaultVoiceProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["protocol"],"type":"object"},"CreateDefaultVoiceProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"CreateDefaultVoiceProfileResponse201ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_EXISTS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Exists","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-exists","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson":{"additionalProperties":false,"properties":{"checkoutUrl":{"description":"Hosted Stripe page; send the user here.","format":"uri","type":"string"}},"required":["checkoutUrl"],"type":"object"},"CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PAYMENT_PROVIDER_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Payment Provider Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payment-provider-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSetupIntentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"clientSecret":{"description":"Stripe SetupIntent client secret.","minLength":1,"type":"string"},"publishableKey":{"description":"Publishable key for the Stripe account backing billing.","pattern":"^pk_.*","type":"string"}},"required":["clientSecret","publishableKey"],"type":"object"},"CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSsoPortalLinkRequestApplicationJson":{"additionalProperties":false,"properties":{"intent":{"default":"sso","enum":["sso","domain_verification"],"type":"string"},"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse200ApplicationJson":{"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectApiKeyRequestApplicationJson":{"additionalProperties":false,"properties":{"expiresAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"name":{"maxLength":128,"minLength":1,"type":"string"},"permissions":{"items":{"enum":["events:read","events:write","platforms:read","platforms:write","project:read","project:write"],"type":"string"},"minItems":1,"type":"array"}},"required":["name","permissions"],"type":"object"},"CreateProjectApiKeyResponse201ApplicationJson":{"additionalProperties":false,"properties":{"apiKey":{"additionalProperties":false,"properties":{"apiKeyId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"permissions":{"items":{"description":"Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.","type":"string"},"type":"array"},"permissionsUpdatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"projectId":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["apiKeyId","createdAt","createdByAccountId","expiresAt","name","permissions","permissionsUpdatedAt","projectId","revokedAt"],"type":"object"},"secret":{"type":"string"}},"required":["apiKey","secret"],"type":"object"},"CreateProjectApiKeyResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectApiKeyResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectApiKeyResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectApiKeyResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"API_KEY_LIMIT_REACHED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"API Key Limit Reached","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-limit-reached","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectApiKeyResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectApiKeyResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectApiKeyResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectApiKeyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectApiKeyResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectRequestApplicationJson":{"additionalProperties":false,"properties":{"name":{"maxLength":256,"minLength":1,"type":"string"},"slug":{"maxLength":63,"minLength":3,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"}},"required":["name","slug"],"type":"object"},"CreateProjectResponse201ApplicationJson":{"additionalProperties":false,"properties":{"agentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"billingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"enum":["account","service_identity"],"type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"CreateProjectResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"SLUG_TAKEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"suggestion":{"type":"string"},"title":{"const":"Slug Already Taken","type":"string"},"type":{"const":"https://photon.codes/docs/problems/slug-taken","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateProjectResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateProjectResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentRequestApplicationJson":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"maxLength":100,"minLength":1,"type":"string"},"handle":{"anyOf":[{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"}]},"lastName":{"maxLength":100,"minLength":1,"type":"string"}},"required":["handle"],"type":"object"},"CreateSharedLineAssignmentResponse201ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IMESSAGE_MODE_DEDICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"iMessage Mode Is Dedicated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/imessage-mode-dedicated","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SHARED_LINE_CAP_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Shared Line Cap Exceeded","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-cap-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_EXISTS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment Exists","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-exists","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SHARED_LINE_POOL_EXHAUSTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Shared Line Pool Exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-pool-exhausted","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateVoiceProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"maxLength":100,"minLength":1,"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["name","protocol"],"type":"object"},"CreateVoiceProfileResponse201ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"CreateVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateVoiceProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"CreateVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWebhookDestinationRequestApplicationJson":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"description":{"maxLength":1000,"type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"maxLength":256,"minLength":1,"type":"string"},"status":{"default":"enabled","enum":["enabled","disabled"],"type":"string"},"url":{"description":"HTTPS URL without credentials or a fragment.","format":"uri","maxLength":2048,"minLength":1,"type":"string"}},"required":["apiVersion","enabledEvents","name","url"],"type":"object"},"CreateWebhookDestinationResponse201ApplicationJson":{"additionalProperties":false,"properties":{"destination":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"signingSecret":{"pattern":"^whsec_.*","type":"string"}},"required":["destination","signingSecret"],"type":"object"},"CreateWebhookDestinationResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWebhookDestinationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWebhookDestinationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWebhookDestinationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWebhookDestinationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWebhookDestinationResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappSharedLineAssignmentRequestApplicationJson":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"maxLength":100,"minLength":1,"type":"string"},"handle":{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},"lastName":{"maxLength":100,"minLength":1,"type":"string"}},"required":["handle"],"type":"object"},"CreateWhatsappSharedLineAssignmentResponse201ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_MODE_DEDICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Mode Is Dedicated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-mode-dedicated","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SHARED_LINE_CAP_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Shared Line Cap Exceeded","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-cap-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_EXISTS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment Exists","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-exists","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SHARED_LINE_POOL_EXHAUSTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Shared Line Pool Exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-pool-exhausted","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderRequestApplicationJson":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"voipResourceId":{"type":"string"}},"required":["voipResourceId"],"type":"object"},"CreateWhatsappVoipSenderResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_WABA_NOT_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Business Account Not Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-waba-not-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp VoIP Source Not Eligible","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_ACCOUNT_DISCONNECTING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Disconnecting","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-disconnecting","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_ACCOUNT_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Has Provisioning Numbers","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_SENDER_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_SENDER_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Provisioning","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_VOIP_SOURCE_RELEASING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp VoIP Source Releasing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-voip-source-releasing","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_DISPLAY_NAME_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"WhatsApp Display Name Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-display-name-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteAccountResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"DeleteAccountResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteAccountResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteAccountResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_OWNS_ORGANIZATIONS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Account Owns Organizations","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-owns-organizations","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteAccountResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteAccountResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteAccountResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteAccountResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteProjectResponse200ApplicationJson":{"additionalProperties":false,"properties":{"agentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"billingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"enum":["account","service_identity"],"type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"DeleteProjectResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteProjectResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteProjectResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteProjectResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteProjectResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteProjectResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteProjectResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteProjectResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileInboundResponse200ApplicationJson":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["inbound","profileVersion"],"type":"object"},"DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileOutboundResponse200ApplicationJson":{"additionalProperties":false,"properties":{"outbound":{"type":"null"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","profileVersion"],"type":"object"},"DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_NOT_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Not Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-not-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_IN_USE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile In Use","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-in-use","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"DeleteVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteWebhookDestinationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"DeleteWebhookDestinationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DeleteWebhookDestinationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Webhook Destination Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteWebhookDestinationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteWebhookDestinationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeleteWebhookDestinationResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DeviceAuthorizeResponse200ApplicationJson":{"properties":{"device_code":{"description":"Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize.","type":"string"},"expires_in":{"description":"Lifetime of the device code and user code, in seconds.","type":"number"},"interval":{"description":"Minimum number of seconds to wait between token polling requests.","type":"number"},"user_code":{"description":"Code the user enters at verification_uri to authorize this device.","type":"string"},"verification_uri":{"description":"Browser URL where the user enters user_code and authorizes the device.","type":"string"},"verification_uri_complete":{"description":"Browser URL with user_code included, ready to open or encode as a QR code.","type":"string"}},"required":["device_code","expires_in","interval","user_code","verification_uri","verification_uri_complete"],"type":"object"},"DeviceTokenRequestApplicationForm":{"oneOf":[{"properties":{"device_code":{"description":"device_code returned by POST /v1/auth/device/code. Required for a device-code grant.","minLength":1,"type":"string"},"grant_type":{"const":"urn:ietf:params:oauth:grant-type:device_code","description":"Selects the device authorization grant to poll or exchange a device code.","type":"string"}},"required":["device_code","grant_type"],"type":"object"},{"properties":{"grant_type":{"const":"refresh_token","description":"Selects the refresh-token grant to obtain a new token pair.","type":"string"},"refresh_token":{"description":"Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.","minLength":1,"type":"string"}},"required":["grant_type","refresh_token"],"type":"object"}]},"DeviceTokenRequestApplicationJson":{"oneOf":[{"properties":{"device_code":{"description":"device_code returned by POST /v1/auth/device/code. Required for a device-code grant.","minLength":1,"type":"string"},"grant_type":{"const":"urn:ietf:params:oauth:grant-type:device_code","description":"Selects the device authorization grant to poll or exchange a device code.","type":"string"}},"required":["device_code","grant_type"],"type":"object"},{"properties":{"grant_type":{"const":"refresh_token","description":"Selects the refresh-token grant to obtain a new token pair.","type":"string"},"refresh_token":{"description":"Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.","minLength":1,"type":"string"}},"required":["grant_type","refresh_token"],"type":"object"}]},"DeviceTokenResponse200ApplicationJson":{"properties":{"access_token":{"description":"Bearer access token for authenticated Photon API requests.","type":"string"},"authentication_method":{"description":"Authentication method used for the device login, when returned. Omitted for refresh grants.","type":"string"},"expires_in":{"description":"Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable.","type":"number"},"refresh_token":{"description":"Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one.","type":"string"},"user":{"description":"Profile of the authenticated user.","properties":{"email":{"description":"Authenticated user's email address.","type":"string"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User's first name, or null when not set."},"id":{"description":"Authenticated user's identity identifier; distinct from the Photon Account ID.","type":"string"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User's last name, or null when not set."}},"required":["id","email","first_name","last_name"],"type":"object"}},"required":["access_token","expires_in","refresh_token","user"],"type":"object"},"DeviceTokenResponse400ApplicationJson":{"properties":{"error":{"description":"OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval.","type":"string"},"error_description":{"description":"Optional human-readable explanation of the OAuth error.","type":"string"}},"required":["error"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_WABA_NOT_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Business Account Not Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-waba-not-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_ACCOUNT_DISCONNECTING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Disconnecting","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-disconnecting","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_ACCOUNT_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Has Provisioning Numbers","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DownloadAttachmentResponse200ApplicationOctetStream":{},"DownloadAttachmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DownloadAttachmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ATTACHMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Attachment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DownloadAttachmentResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ATTACHMENT_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DownloadAttachmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"DownloadAttachmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"DownloadAttachmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DownloadAttachmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"DownloadAttachmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAccountResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"GetAccountResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAccountResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAccountResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAccountResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAccountResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAccountResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAccountResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAgentProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"GetAgentProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAgentProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAgentProfileResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAgentProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetAgentProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAgentProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAgentProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAttachmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"contentType":{"pattern":"^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"},"filename":{"minLength":1,"type":"string"},"id":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"metadata":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"sizeBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"}},"required":["contentType","createdAt","id","projectId","sizeBytes","updatedAt"],"type":"object"},"GetAttachmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAttachmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ATTACHMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Attachment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAttachmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetAttachmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetAttachmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAttachmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAttachmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOperationResponse200ApplicationJson":{"description":"Authoritative provisioning state. Poll the operation route while pending.","oneOf":[{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"type":"null"},"result":{"type":"null"},"status":{"const":"pending","description":"Accepted and still executing. Poll the operation route.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"additionalProperties":false,"properties":{"type":{"const":"version","type":"string"},"version":{"type":"string"}},"required":["type","version"],"type":"object"},"status":{"const":"succeeded","description":"Terminal. The result is authoritative.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"additionalProperties":false,"properties":{"code":{"description":"Stable provider-neutral failure category.","enum":["payment_method_required","payment_failed","not_provisioned","invalid_target","internal"],"type":"string"},"detail":{"anyOf":[{"enum":["cancellation_scheduled","feature_not_sold_by_plan","feature_not_found","payment_timeout","plan_activation_timeout","plan_not_found","quantity_out_of_range","target_rejected"],"type":"string"},{"type":"null"}]},"retryable":{"type":"boolean"}},"required":["code","detail","retryable"],"type":"object"},"kind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"type":"null"},"status":{"const":"failed","description":"Terminal. Failure contains a stable code and retryability.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"}]},"GetBillingOperationResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOperationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOperationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"OPERATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Operation Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOperationResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOperationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetBillingOperationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOperationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOperationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOperationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOverviewResponse200ApplicationJson":{"additionalProperties":false,"properties":{"entitlementsVersion":{"description":"Bumps on every entitlement change in any category.","maximum":9007199254740991,"minimum":0,"type":"integer"},"subscriptions":{"description":"One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened.","items":{"additionalProperties":false,"properties":{"cancelsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"When the subscription will end instead of renewing, ISO 8601."},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currentPeriodEnd":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End of the current billing period, ISO 8601."},"entitlements":{"description":"Feature gates granted by this category's plan.","items":{"additionalProperties":false,"properties":{"featureKey":{"description":"Feature gate key, e.g. imessage_shared_lines.max_user_assignments.","type":"string"},"value":{"description":"Gate value as a string.","type":"string"}},"required":["featureKey","value"],"type":"object"},"type":"array"},"fixedCharges":{"description":"Fixed charges defined by this category's current plan. Quantity is the plan default.","items":{"additionalProperties":false,"properties":{"chargeModel":{"enum":["graduated","standard","volume"],"type":"string"},"displayName":{"type":"string"},"fixedChargeCode":{"type":"string"},"payInAdvance":{"type":"boolean"},"pricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","toUnit"],"type":"object"},"type":"array"}},"required":["amount","tiers"],"type":"object"},"prorated":{"type":"boolean"},"quantity":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["chargeModel","displayName","fixedChargeCode","payInAdvance","pricing","prorated","quantity"],"type":"object"},"type":"array"},"planCode":{"description":"This category's plan; display only.","type":"string"},"status":{"description":"State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.","enum":["active","past_due","terminated"],"type":"string","x-enumDescriptions":{"active":"Subscribed and in good standing, on a free or a paid plan.","past_due":"The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.","terminated":"The subscription is gone. Not reported by the overview, which omits categories holding nothing."}}},"required":["cancelsAt","category","currentPeriodEnd","entitlements","fixedCharges","planCode","status"],"type":"object"},"type":"array"},"usage":{"description":"Current-period metered usage, priced.","items":{"additionalProperties":false,"properties":{"amountCents":{"description":"Cost accrued so far.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currency":{"description":"ISO currency code.","type":"string"},"displayName":{"description":"Display name for this usage item.","type":"string"},"metricCode":{"description":"Metered thing, e.g. imessage_message.","type":"string"},"units":{"description":"Units consumed this period.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["amountCents","category","currency","displayName","metricCode","units"],"type":"object"},"type":"array"}},"required":["entitlementsVersion","subscriptions","usage"],"type":"object"},"GetBillingOverviewResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOverviewResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOverviewResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOverviewResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetBillingOverviewResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetBillingOverviewResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOverviewResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetBillingOverviewResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetDefaultVoiceProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetMessageMetricsBackfillResponse200ApplicationJson":{"properties":{"failedWrites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lastVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"processedWrites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"enum":["disabled","pending","running","verifying","completed","paused","failed"],"type":"string"},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["failedWrites","lastVerifiedAt","processedWrites","state","version"],"type":"object"},"GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetMessageMetricsSqlSchemaResponse200ApplicationJson":{"additionalProperties":false,"properties":{"capabilities":{"additionalProperties":false,"properties":{"arrayJoin":{"type":"boolean"},"ctes":{"type":"boolean"},"joins":{"type":"boolean"},"parameters":{"type":"boolean"},"selectWithoutFrom":{"type":"boolean"},"subqueries":{"type":"boolean"},"unions":{"type":"boolean"}},"required":["arrayJoin","ctes","joins","parameters","selectWithoutFrom","subqueries","unions"],"type":"object"},"dialect":{"type":"string"},"limits":{"additionalProperties":false,"properties":{"maximumParameterValueBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumParameters":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumSqlBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumTotalParameterBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["maximumParameters","maximumParameterValueBytes","maximumSqlBytes","maximumTotalParameterBytes"],"type":"object"},"projectScoped":{"const":true,"type":"boolean"},"tables":{"items":{"additionalProperties":false,"properties":{"columns":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"json":{"additionalProperties":false,"properties":{"commonPaths":{"items":{"additionalProperties":false,"properties":{"additionalProperties":{"const":true,"type":"boolean"},"contentTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"directions":{"items":{"enum":["addressed","received"],"type":"string"},"readOnly":true,"type":"array"},"expression":{"type":"string"},"itemTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"path":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string"},"values":{"items":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}]},"readOnly":true,"type":"array"}},"required":["expression","path","required","type"],"type":"object"},"readOnly":true,"type":"array"},"discriminators":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"values":{"items":{"type":"string"},"readOnly":true,"type":"array"}},"required":["path","values"],"type":"object"},{"additionalProperties":false,"properties":{"oneOfPaths":{"items":{"type":"string"},"readOnly":true,"type":"array"}},"required":["oneOfPaths"],"type":"object"}]},"readOnly":true,"type":"array"},"platforms":{"items":{"additionalProperties":false,"properties":{"name":{"enum":["email","imessage","sms","telegram","voice","whatsapp","whatsapp_business"],"type":"string"},"paths":{"items":{"additionalProperties":false,"properties":{"additionalProperties":{"const":true,"type":"boolean"},"contentTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"directions":{"items":{"enum":["addressed","received"],"type":"string"},"readOnly":true,"type":"array"},"expression":{"type":"string"},"itemTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"path":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string"},"values":{"items":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}]},"readOnly":true,"type":"array"}},"required":["expression","path","required","type"],"type":"object"},"readOnly":true,"type":"array"}},"required":["name","paths"],"type":"object"},"readOnly":true,"type":"array"},"resource":{"additionalProperties":false,"properties":{"contractsVersion":{"type":"string"},"type":{"const":"message","type":"string"}},"required":["contractsVersion","type"],"type":"object"}},"required":["commonPaths","discriminators","platforms","resource"],"type":"object"},"name":{"type":"string"},"type":{"type":"string"}},"required":["description","name","type"],"type":"object"},"type":"array"},"currentState":{"type":"string"},"description":{"type":"string"},"name":{"enum":["message_events"],"type":"string"}},"required":["columns","currentState","description","name"],"type":"object"},"type":"array"},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["capabilities","dialect","limits","projectScoped","tables","version"],"type":"object"},"GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOperationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"operation":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"resource":{"additionalProperties":false,"properties":{"abilities":{"items":{"type":"string"},"type":"array"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"retiredAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["unallocated","active","retired"],"type":"string"},"type":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["abilities","createdAt","detail","projectId","resourceId","state","type","updatedAt"],"type":"object"}},"required":["operation"],"type":"object"},"GetOperationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOperationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"OPERATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Operation Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOperationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetOperationResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOperationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOperationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOperationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOperationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationBillingOverviewResponse200ApplicationJson":{"additionalProperties":false,"properties":{"entitlementsVersion":{"description":"Bumps on every entitlement change for the organization.","maximum":9007199254740991,"minimum":0,"type":"integer"},"subscription":{"anyOf":[{"additionalProperties":false,"properties":{"cancelsAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}],"description":"When the subscription will end, ISO 8601."},"currentPeriodEnd":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}],"description":"End of the current billing period, ISO 8601."},"entitlements":{"items":{"additionalProperties":false,"properties":{"featureKey":{"description":"Feature gate key.","type":"string"},"value":{"description":"Gate value as a string.","type":"string"}},"required":["featureKey","value"],"type":"object"},"type":"array"},"fixedCharges":{"description":"Fixed charges defined by the organization's current plan. Quantity is the plan default.","items":{"additionalProperties":false,"properties":{"chargeModel":{"enum":["graduated","standard","volume"],"type":"string"},"displayName":{"type":"string"},"fixedChargeCode":{"type":"string"},"payInAdvance":{"type":"boolean"},"pricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","toUnit"],"type":"object"},"type":"array"}},"required":["amount","tiers"],"type":"object"},"prorated":{"type":"boolean"},"quantity":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["chargeModel","displayName","fixedChargeCode","payInAdvance","pricing","prorated","quantity"],"type":"object"},"type":"array"},"planCode":{"description":"The organization's plan; display only.","type":"string"},"status":{"description":"State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.","enum":["active","past_due","terminated"],"type":"string","x-enumDescriptions":{"active":"Subscribed and in good standing, on a free or a paid plan.","past_due":"The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.","terminated":"The subscription is gone. Not reported by the overview, which omits categories holding nothing."}}},"required":["cancelsAt","currentPeriodEnd","entitlements","fixedCharges","planCode","status"],"type":"object"},{"type":"null"}],"description":"The organization-owned subscription, or null when billing was never opened or has ended."}},"required":["entitlementsVersion","subscription"],"type":"object"},"GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationConnectionStatusResponse200ApplicationJson":{"properties":{"membership":{"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"retryAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"status":{"enum":["pending","syncing","ready","error","blocked"],"type":"string"}},"required":["status","errorCode","retryAt"],"type":"object"},"organization":{"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["pending","syncing","ready","error","blocked"],"type":"string"}},"required":["status","errorCode"],"type":"object"},"organizationId":{"type":"string"},"synchronized":{"type":"boolean"}},"required":["organizationId","organization","membership","synchronized"],"type":"object"},"GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_CONNECTION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization Connection Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-connection-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SYNC_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization Synchronization Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sync-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationPaymentMethodResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cardOnFile":{"description":"True once a card is captured for the payer.","type":"boolean"},"paymentMethod":{"anyOf":[{"additionalProperties":false,"properties":{"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Card network brand, e.g. visa."},"expiresMonth":{"anyOf":[{"maximum":12,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Card expiration month."},"expiresYear":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}],"description":"Four-digit card expiration year."},"last4":{"anyOf":[{"pattern":"^\\d{4}$","type":"string"},{"type":"null"}],"description":"Last four card digits."}},"required":["brand","expiresMonth","expiresYear","last4"],"type":"object"},{"type":"null"}],"description":"Metadata for the default card, or null."}},"required":["cardOnFile","paymentMethod"],"type":"object"},"GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationSsoConfigurationResponse200ApplicationJson":{"properties":{"connectionChangedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"connectionGeneration":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"connectionState":{"enum":["not_configured","configuring","ready","error"],"type":"string"},"connectionType":{"type":"string"},"desiredSsoEnforced":{"type":"boolean"},"domains":{"items":{"properties":{"domain":{"type":"string"},"state":{"enum":["verified","pending","failed"],"type":"string"}},"required":["domain","state"],"type":"object"},"type":"array"},"organizationId":{"type":"string"},"policySyncStatus":{"enum":["synced","manual_required"],"type":"string"},"providerAvailable":{"type":"boolean"},"ssoEnforced":{"type":"boolean"},"ssoJitEnabled":{"type":"boolean"},"version":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"}},"required":["organizationId","connectionState","connectionGeneration","connectionChangedAt","version","ssoEnforced","desiredSsoEnforced","ssoJitEnabled","policySyncStatus"],"type":"object"},"GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectClosureStatusResponse200ApplicationJson":{"properties":{"deletionOperationId":{"anyOf":[{"pattern":"^pho_opr_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},{"type":"null"}]},"domains":{"items":{"properties":{"blockers":{"items":{"type":"string"},"type":"array"},"domain":{"enum":["projects","billing","platforms","call_registry"],"type":"string"},"ready":{"type":"boolean"}},"required":["blockers","domain","ready"],"type":"object"},"type":"array"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"ready":{"type":"boolean"}},"required":["deletionOperationId","domains","organizationId","projectId","ready"],"type":"object"},"GetProjectClosureStatusResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectClosureStatusResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectClosureStatusResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectClosureStatusResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetProjectClosureStatusResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectClosureStatusResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectClosureStatusResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectImessagePlatformResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"maxUserAssignments":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mode":{"const":"shared","type":"string"}},"required":["maxUserAssignments","mode"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"const":"dedicated","type":"string"}},"required":["mode"],"type":"object"}]},"GetProjectImessagePlatformResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectImessagePlatformResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetProjectImessagePlatformResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectImessagePlatformResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectImessagePlatformResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectImessagePlatformResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectResponse200ApplicationJson":{"additionalProperties":false,"properties":{"agentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"billingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"enum":["account","service_identity"],"type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"GetProjectResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetProjectResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectWhatsappPlatformResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"maxUserAssignments":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mode":{"const":"shared","type":"string"}},"required":["maxUserAssignments","mode"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"const":"dedicated","type":"string"}},"required":["mode"],"type":"object"}]},"GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetResourceResponse200ApplicationJson":{"additionalProperties":false,"properties":{"abilities":{"items":{"type":"string"},"type":"array"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"retiredAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["unallocated","active","retired"],"type":"string"},"type":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["abilities","createdAt","detail","projectId","resourceId","state","type","updatedAt"],"type":"object"},"GetResourceResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetResourceResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetResourceResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetResourceResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetResourceResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetResourceResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetResourceResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetResourceResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSharedLineAssignmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"GetSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSharedLineAssignmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Assignment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse200ApplicationJson":{"properties":{"campaign":{"anyOf":[{"properties":{"id":{"type":"string"},"organizationId":{"type":"string"}},"required":["id","organizationId"],"type":"object"},{"type":"null"}]},"campaignObservedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"eligibility":{"enum":["eligible","blocked","unknown"],"type":"string"},"observedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"operationId":{"anyOf":[{"type":"string"},{"type":"null"}]},"providerAssignmentStatus":{"anyOf":[{"type":"string"},{"type":"null"}]},"reasonCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"requestedCampaignId":{"anyOf":[{"type":"string"},{"type":"null"}]},"resourceId":{"type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["campaign","campaignObservedAt","eligibility","observedAt","operationId","providerAssignmentStatus","reasonCode","requestedCampaignId","resourceId","version"],"type":"object"},"GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_INVALID_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid SMS campaign request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-invalid-request","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_ORGANIZATION_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Campaign belongs to another organization","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-organization-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Campaign not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"SMS line not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_UNSUPPORTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"SMS line unsupported","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-unsupported","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign not ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment version conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_MUTATION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment mutation in progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-mutation-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CAPACITY_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign number capacity exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-capacity-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_RECONCILIATION_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign reconciliation required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-reconciliation-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CONTEXT_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Campaign context unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-context-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceLineProfileAssignmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"profileId":{"type":"string"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["projectId","resourceId","resourceVersion","updatedAt"],"type":"object"},"GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"GetVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWebhookDestinationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"GetWebhookDestinationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWebhookDestinationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Webhook Destination Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookDestinationResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Webhook Destination Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookDestinationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookDestinationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookDestinationResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson":{"additionalProperties":{"$ref":"#/components/schemas/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"GetWebhookEventSchemaResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookEventSchemaResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWebhookEventSchemaResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookEventSchemaResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWebhookEventSchemaResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessAccountResponse200ApplicationJson":{"additionalProperties":false,"properties":{"accountName":{"anyOf":[{"type":"string"},{"type":"null"}]},"alerts":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"entityId":{"type":"string"},"entityType":{"type":"string"},"observedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"severity":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["description","entityId","entityType","observedAt","severity","status","type"],"type":"object"},"type":"array"},"businessId":{"type":"string"},"businessName":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"maxPhoneNumbersPerBusiness":{"maximum":2147483647,"minimum":0,"type":"integer"},"outboundCapacity":{"enum":["50","250","1000","2000","10000","100000","UNLIMITED","UNTIERED","UNKNOWN"],"type":"string"},"restriction":{"anyOf":[{"additionalProperties":false,"properties":{"observedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"status":{"enum":["FLAGGED","DISABLED","REINSTATED","UNKNOWN"],"type":"string"}},"required":["observedAt","status"],"type":"object"},{"type":"null"}]},"reviewStatus":{"enum":["PENDING","APPROVED","REJECTED","UNKNOWN"],"type":"string"},"senderCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"subscribedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"wabaId":{"type":"string"}},"required":["accountName","alerts","businessId","businessName","connectedAt","outboundCapacity","restriction","reviewStatus","senderCount","wabaId"],"type":"object"},"GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_WABA_NOT_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Business Account Not Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-waba-not-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessVerificationCodeResponse200ApplicationJson":{"additionalProperties":false,"properties":{"code":{"pattern":"^\\d{6}$","type":"string"},"receivedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["code","receivedAt"],"type":"object"},"GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_VERIFICATION_CODE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Verification Code Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-verification-code-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_VERIFICATION_WINDOW_EXPIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"WhatsApp Verification Window Expired","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-verification-window-expired","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSharedLineAssignmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Assignment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSignupConfigResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configId":{"type":"string"},"graphVersion":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"required":["configId","graphVersion","scopes"],"type":"object"},"GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAccountServiceKeysResponse200ApplicationJson":{"additionalProperties":false,"properties":{"serviceKeys":{"items":{"additionalProperties":false,"properties":{"accountId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"serviceKeyId":{"type":"string"}},"required":["accountId","createdAt","expiresAt","name","revokedAt","serviceKeyId"],"type":"object"},"type":"array"}},"required":["serviceKeys"],"type":"object"},"ListAccountServiceKeysResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAccountServiceKeysResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAccountServiceKeysResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAccountServiceKeysResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAccountServiceKeysResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAccountServiceKeysResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAccountServiceKeysResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAttachmentsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"contentType":{"pattern":"^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"},"filename":{"minLength":1,"type":"string"},"id":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"metadata":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"sizeBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"}},"required":["contentType","createdAt","id","projectId","sizeBytes","updatedAt"],"type":"object"},"type":"array"},"nextPageToken":{"description":"Continue with this token, even if items is empty. Omitted when no more pages remain.","maxLength":4096,"minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$","type":"string"}},"required":["items"],"type":"object"},"ListAttachmentsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAttachmentsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListAttachmentsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAttachmentsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAttachmentsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAttachmentsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAuthorizedApplicationsResponse200ApplicationJson":{"properties":{"authorizedApplications":{"description":"One page of applications authorized by the authenticated user.","items":{"properties":{"application":{"description":"The OAuth application authorized by the authenticated user.","properties":{"applicationType":{"description":"OAuth application type reported by the authorization server.","type":"string"},"clientId":{"description":"OAuth client identifier used by the application in authorization requests.","type":"string"},"createdAt":{"description":"UTC timestamp when the application was created, in RFC 3339 format.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Application description, or null when no description is set."},"id":{"description":"Application identifier to pass as applicationId when revoking this application's grant.","type":"string"},"isFirstParty":{"description":"Whether the application is classified as first-party by the authorization server.","type":"boolean"},"name":{"description":"Display name of the authorized application.","type":"string"},"redirectUris":{"description":"Registered OAuth callback URLs for the application.","items":{"properties":{"default":{"description":"Whether this is the application's default redirect URI.","type":"boolean"},"uri":{"description":"Registered OAuth callback URL for the application.","type":"string"}},"required":["default","uri"],"type":"object"},"type":"array"},"scopes":{"description":"OAuth scope slugs configured for the application; grantedScopes records what the user authorized.","items":{"description":"OAuth scope slug.","type":"string"},"type":"array"},"updatedAt":{"description":"UTC timestamp when the application was last updated, in RFC 3339 format.","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"usesPkce":{"description":"Whether the application uses Proof Key for Code Exchange (PKCE).","type":"boolean"}},"required":["applicationType","clientId","createdAt","description","id","isFirstParty","name","redirectUris","scopes","updatedAt","usesPkce"],"type":"object"},"authorizationId":{"description":"Identifier of the user's authorization grant for this application.","type":"string"},"grantedScopes":{"description":"OAuth scope slugs the user has granted to this application.","items":{"description":"Granted OAuth scope slug.","type":"string"},"type":"array"},"oauthResource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"OAuth resource associated with the grant, or null when no resource is specified."}},"required":["application","authorizationId","grantedScopes","oauthResource"],"type":"object"},"type":"array"},"listMetadata":{"description":"Pagination cursors to pass as after or before in the next list request.","properties":{"after":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor for the next page, or null when there is no next page."},"before":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor for the previous page, or null when there is no previous page."}},"required":["after","before"],"type":"object"}},"required":["authorizedApplications","listMetadata"],"type":"object"},"ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListBillingPlansResponse200ApplicationJson":{"additionalProperties":false,"properties":{"plans":{"additionalProperties":{"items":{"additionalProperties":false,"properties":{"baseAmountCents":{"description":"Recurring base price in whole cents.","maximum":9007199254740991,"minimum":0,"type":"integer"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currency":{"description":"ISO currency code.","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"entitlements":{"items":{"additionalProperties":false,"properties":{"featureKey":{"type":"string"},"value":{"type":"string"}},"required":["featureKey","value"],"type":"object"},"type":"array"},"fixedCharges":{"items":{"additionalProperties":false,"properties":{"chargeModel":{"enum":["graduated","standard","volume"],"type":"string"},"displayName":{"type":"string"},"fixedChargeCode":{"type":"string"},"payInAdvance":{"type":"boolean"},"pricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","toUnit"],"type":"object"},"type":"array"}},"required":["amount","tiers"],"type":"object"},"prorated":{"type":"boolean"},"quantity":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["chargeModel","displayName","fixedChargeCode","payInAdvance","pricing","prorated","quantity"],"type":"object"},"type":"array"},"interval":{"enum":["weekly","monthly","quarterly","semiannual","yearly"],"type":"string"},"name":{"type":"string"},"payInAdvance":{"type":"boolean"},"planCode":{"maxLength":64,"minLength":1,"type":"string"},"usageCharges":{"items":{"additionalProperties":false,"properties":{"chargeCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"chargeModel":{"enum":["dynamic","graduated","graduated_percentage","package","percentage","standard","volume"],"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"items":{"additionalProperties":false,"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fixedAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"freeUnits":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerEvents":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerTotalAggregation":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"packageSize":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"perTransactionMaxAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"perTransactionMinAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"pricingGroupKeys":{"items":{"type":"string"},"type":"array"},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","rate","toUnit"],"type":"object"},"type":"array"}},"required":["amount","fixedAmount","freeUnits","freeUnitsPerEvents","freeUnitsPerTotalAggregation","packageSize","perTransactionMaxAmount","perTransactionMinAmount","pricingGroupKeys","rate","tiers"],"type":"object"},"values":{"items":{"additionalProperties":false,"properties":{"key":{"type":"string"},"values":{"items":{"type":"string"},"type":"array"}},"required":["key","values"],"type":"object"},"type":"array"}},"required":["displayName","pricing","values"],"type":"object"},"type":"array"},"invoiceable":{"type":"boolean"},"metricCode":{"type":"string"},"minimumAmountCents":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payInAdvance":{"type":"boolean"},"pricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fixedAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"freeUnits":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerEvents":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerTotalAggregation":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"packageSize":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"perTransactionMaxAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"perTransactionMinAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"pricingGroupKeys":{"items":{"type":"string"},"type":"array"},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","rate","toUnit"],"type":"object"},"type":"array"}},"required":["amount","fixedAmount","freeUnits","freeUnitsPerEvents","freeUnitsPerTotalAggregation","packageSize","perTransactionMaxAmount","perTransactionMinAmount","pricingGroupKeys","rate","tiers"],"type":"object"},"prorated":{"type":"boolean"}},"required":["chargeCode","chargeModel","displayName","filters","invoiceable","metricCode","minimumAmountCents","payInAdvance","pricing","prorated"],"type":"object"},"type":"array"}},"required":["baseAmountCents","currency","description","entitlements","fixedCharges","interval","name","payInAdvance","planCode","usageCharges"],"type":"object"},"type":"array"},"description":"Plans grouped by valid metadata type and explicitly published with visible=\"true\".","propertyNames":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"type":"object"}},"required":["plans"],"type":"object"},"ListBillingPlansResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListBillingPlansResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListBillingPlansResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListBillingPlansResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListBillingPlansResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListBillingPlansResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListBillingPlansResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListBillingPlansResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListInvoicesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"invoices":{"items":{"additionalProperties":false,"properties":{"currency":{"description":"ISO currency code.","type":"string"},"invoiceId":{"description":"Invoice id.","type":"string"},"issuedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Issue date, ISO 8601."},"kind":{"description":"What produced the invoice.","enum":["subscription","one_off","credit"],"type":"string"},"number":{"description":"Human invoice number.","type":"string"},"paymentStatus":{"description":"Provider-neutral payment status.","enum":["pending","succeeded","failed"],"type":"string"},"pdfUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Downloadable PDF link."},"subjects":{"description":"Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges.","items":{"oneOf":[{"additionalProperties":false,"properties":{"projectId":{"type":"string"},"type":{"const":"project","type":"string"}},"required":["projectId","type"],"type":"object"},{"additionalProperties":false,"properties":{"organizationId":{"type":"string"},"type":{"const":"organization","type":"string"}},"required":["organizationId","type"],"type":"object"}]},"type":"array"},"totalCents":{"description":"Invoice total in cents.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["currency","invoiceId","issuedAt","kind","number","paymentStatus","pdfUrl","subjects","totalCents"],"type":"object"},"type":"array"}},"required":["invoices"],"type":"object"},"ListInvoicesResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListInvoicesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListInvoicesResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListInvoicesResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListInvoicesResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListInvoicesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListInvoicesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListInvoicesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberAreaCodesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"areaCodes":{"items":{"pattern":"^[2-9][0-9]{2}$","type":"string"},"type":"array"},"countryCode":{"const":"US","type":"string"}},"required":["areaCodes","countryCode"],"type":"object"},"ListNumberAreaCodesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberAreaCodesResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListNumberAreaCodesResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberAreaCodesResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberAreaCodesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberAreaCodesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberAreaCodesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberCountriesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"countries":{"items":{"additionalProperties":false,"properties":{"callingCode":{"pattern":"^\\+[1-9][0-9]{0,2}$","type":"string"},"countryCode":{"pattern":"^[A-Z]{2}$","type":"string"},"displayName":{"type":"string"}},"required":["callingCode","countryCode","displayName"],"type":"object"},"type":"array"}},"required":["countries"],"type":"object"},"ListNumberCountriesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberCountriesResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListNumberCountriesResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberCountriesResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListNumberCountriesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberCountriesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListNumberCountriesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListOauthScopesResponse200ApplicationJson":{"properties":{"scopes":{"description":"Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included.","items":{"description":"OAuth business permission slug.","type":"string"},"type":"array"}},"required":["scopes"],"type":"object"},"ListOauthScopesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListOauthScopesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListOperationsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"operations":{"items":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"type":"array"}},"required":["operations"],"type":"object"},"ListOperationsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListOperationsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListOperationsResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListOperationsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListOperationsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListOperationsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListOperationsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListProjectApiKeysResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiKeys":{"items":{"additionalProperties":false,"properties":{"apiKeyId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"permissions":{"items":{"description":"Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.","type":"string"},"type":"array"},"permissionsUpdatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"projectId":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["apiKeyId","createdAt","createdByAccountId","expiresAt","name","permissions","permissionsUpdatedAt","projectId","revokedAt"],"type":"object"},"type":"array"}},"required":["apiKeys"],"type":"object"},"ListProjectApiKeysResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectApiKeysResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListProjectApiKeysResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectApiKeysResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectApiKeysResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListProjectApiKeysResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectApiKeysResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectPlatformsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"platforms":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"displayName":{"type":"string"},"type":{"type":"string"}},"required":["description","displayName","type"],"type":"object"},"type":"array"}},"required":["platforms"],"type":"object"},"ListProjectPlatformsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListProjectPlatformsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListProjectPlatformsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListProjectPlatformsResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"projects":{"items":{"additionalProperties":false,"properties":{"agentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"billingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"enum":["account","service_identity"],"type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"type":"array"}},"required":["projects"],"type":"object"},"ListProjectsResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListProjectsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListProjectsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListProjectsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListResourcesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"resources":{"items":{"additionalProperties":false,"properties":{"abilities":{"items":{"type":"string"},"type":"array"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"retiredAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["unallocated","active","retired"],"type":"string"},"type":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["abilities","createdAt","detail","projectId","resourceId","state","type","updatedAt"],"type":"object"},"type":"array"}},"required":["resources"],"type":"object"},"ListResourcesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListResourcesResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListResourcesResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListResourcesResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListResourcesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListResourcesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListResourcesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListSharedLineAssignmentsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignments":{"items":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"type":"array"},"nextPageToken":{"type":"string"}},"required":["assignments"],"type":"object"},"ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListVoiceProfilesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"profiles":{"items":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"type":"array"}},"required":["profiles"],"type":"object"},"ListVoiceProfilesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListVoiceProfilesResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListVoiceProfilesResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListVoiceProfilesResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListVoiceProfilesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListVoiceProfilesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListVoiceProfilesResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWebhookApiVersionsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiVersions":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"retirement":{"anyOf":[{"additionalProperties":false,"properties":{"migrationGuide":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"}},"required":["migrationGuide","reason"],"type":"object"},{"type":"null"}]},"selectable":{"const":true,"type":"boolean"},"status":{"enum":["preview","latest","maintain"],"type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["retirement","successor","selectable","status","version"],"type":"object"},{"additionalProperties":false,"properties":{"retirement":{"additionalProperties":false,"properties":{"migrationGuide":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"}},"required":["migrationGuide","reason"],"type":"object"},"selectable":{"const":false,"type":"boolean"},"status":{"const":"deprecated","type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["retirement","successor","selectable","status","version"],"type":"object"}]},"type":"array"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"packageVersion":{"minLength":1,"type":"string"}},"required":["contractNamespace","packageVersion","apiVersions"],"type":"object"},"ListWebhookApiVersionsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWebhookApiVersionsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookApiVersionsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookApiVersionsResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookDestinationsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"destinations":{"items":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"type":"array"},"nextPageToken":{"minLength":1,"type":"string"}},"required":["destinations"],"type":"object"},"ListWebhookDestinationsResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookDestinationsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWebhookDestinationsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookDestinationsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookDestinationsResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookEgressAddressesResponse200ApplicationJson":{"additionalProperties":false,"properties":{"ipAddresses":{"description":"Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address.","items":{"format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$","type":"string"},"minItems":1,"type":"array","uniqueItems":true}},"required":["ipAddresses"],"type":"object"},"ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWebhookEventTypesResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"events":{"items":{"additionalProperties":false,"properties":{"audience":{"enum":["agent","infrastructure"],"type":"string"},"description":{"type":"string"},"schemaProfile":{"const":"reader","type":"string"},"schemaUrl":{"format":"uri-reference","pattern":"^\\/v1\\/projects\\/.*","type":"string"},"type":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"}},"required":["audience","description","schemaProfile","schemaUrl","type"],"type":"object"},"type":"array"},"packageVersion":{"minLength":1,"type":"string"},"retirement":{"anyOf":[{"additionalProperties":false,"properties":{"migrationGuide":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"}},"required":["migrationGuide","reason"],"type":"object"},{"type":"null"}]},"selectable":{"const":true,"type":"boolean"},"status":{"enum":["preview","latest","maintain"],"type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]}},"required":["retirement","successor","selectable","status","contractNamespace","packageVersion","apiVersion","events"],"type":"object"},{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"events":{"items":{"additionalProperties":false,"properties":{"audience":{"enum":["agent","infrastructure"],"type":"string"},"description":{"type":"string"},"schemaProfile":{"const":"reader","type":"string"},"schemaUrl":{"format":"uri-reference","pattern":"^\\/v1\\/projects\\/.*","type":"string"},"type":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"}},"required":["audience","description","schemaProfile","schemaUrl","type"],"type":"object"},"type":"array"},"packageVersion":{"minLength":1,"type":"string"},"retirement":{"additionalProperties":false,"properties":{"migrationGuide":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"}},"required":["migrationGuide","reason"],"type":"object"},"selectable":{"const":false,"type":"boolean"},"status":{"const":"deprecated","type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]}},"required":["retirement","successor","selectable","status","contractNamespace","packageVersion","apiVersion","events"],"type":"object"}]},"ListWebhookEventTypesResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookEventTypesResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWebhookEventTypesResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookEventTypesResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWebhookEventTypesResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse200ApplicationJson":{"additionalProperties":false,"properties":{"phoneNumbers":{"items":{"additionalProperties":false,"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownership":{"enum":["photon","meta"],"type":"string"},"phoneNumber":{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},"phoneNumberId":{"minLength":1,"type":"string"}},"required":["displayName","ownership","phoneNumber","phoneNumberId"],"type":"object"},"type":"array"},"wabaId":{"minLength":1,"type":"string"}},"required":["phoneNumbers","wabaId"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_WABA_NOT_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Business Account Not Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-waba-not-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWhatsappSharedLineAssignmentsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignments":{"items":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"type":"array"},"nextPageToken":{"type":"string"}},"required":["assignments"],"type":"object"},"ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PhotonProblem_FORBIDDEN_403":{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"integer"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["type","title","status","code"],"type":"object"},"PhotonProblem_INTERNAL_ERROR_500":{"additionalProperties":false,"properties":{"code":{"const":"INTERNAL_ERROR","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"integer"},"title":{"const":"Internal Server Error","type":"string"},"type":{"const":"https://photon.codes/docs/problems/internal-error","type":"string"}},"required":["type","title","status","code"],"type":"object"},"PhotonProblem_NOT_AUTHENTICATED_401":{"additionalProperties":false,"properties":{"code":{"const":"NOT_AUTHENTICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"status":{"const":401,"type":"integer"},"title":{"const":"Not Authenticated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/not-authenticated","type":"string"}},"required":["type","title","status","code"],"type":"object"},"PhotonProblem_UPSTREAM_UNAVAILABLE_503":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"integer"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["type","title","status","code"],"type":"object"},"ProvisionImessageDedicatedLineResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberRequestApplicationJson":{"additionalProperties":false,"properties":{"areaCode":{"pattern":"^[2-9][0-9]{2}$","type":"string"},"countryCode":{"const":"US","type":"string"}},"required":["countryCode"],"type":"object"},"PurchaseSmsNumberResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"PurchaseSmsNumberResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberResponse402ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PurchaseSmsNumberResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PurchaseSmsNumberResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PurchaseSmsNumberResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PurchaseSmsNumberResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"PurchaseSmsNumberResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"QueryMessageMetricsResponse200ApplicationJson":{"additionalProperties":false,"properties":{"columns":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"type":"object"},"type":"array"},"rows":{"items":{"items":{},"type":"array"},"type":"array"},"statistics":{"additionalProperties":false,"properties":{"bytesRead":{"minimum":0,"type":"number"},"elapsedSeconds":{"minimum":0,"type":"number"},"rowsRead":{"minimum":0,"type":"number"}},"required":["bytesRead","elapsedSeconds","rowsRead"],"type":"object"}},"required":["columns","rows","statistics"],"type":"object"},"QueryMessageMetricsResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"QueryMessageMetricsResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"QueryMessageMetricsResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"QUERY_RESOURCE_LIMIT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Query Resource Limit","type":"string"},"type":{"const":"https://photon.codes/docs/problems/query-resource-limit","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"QueryMessageMetricsResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"QueryMessageMetricsResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"QueryMessageMetricsResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RedeemAppInstallationDeliveryRequestApplicationJson":{"additionalProperties":false,"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"clientAssertion":{"maxLength":16384,"minLength":1,"type":"string"},"code":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"}},"required":["appId","clientAssertion","code"],"type":"object"},"RedeemAppInstallationDeliveryResponse200ApplicationJson":{"oneOf":[{"additionalProperties":false,"properties":{"clientId":{"maxLength":256,"pattern":"^client_[A-Za-z0-9]+$","type":"string"},"clientSecret":{"maxLength":8192,"minLength":1,"type":"string"},"installationId":{"pattern":"^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"const":"created","type":"string"}},"required":["installationId","status","clientId","clientSecret"],"type":"object"},{"additionalProperties":false,"properties":{"installationId":{"pattern":"^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["delivery_consumed","recovery_required","revocation_pending","revoked"],"type":"string"}},"required":["installationId","status"],"type":"object"}]},"RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"APP_INSTALLATION_ASSERTION_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":401,"type":"number"},"title":{"const":"Invalid Installation Client Assertion","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-assertion-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"APP_INSTALLATION_DELIVERY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation Delivery Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-delivery-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RefreshOrganizationSsoConnectionResponse200ApplicationJson":{"properties":{"connectionChangedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"connectionGeneration":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"connectionState":{"enum":["not_configured","configuring","ready","error"],"type":"string"},"connectionType":{"type":"string"},"desiredSsoEnforced":{"type":"boolean"},"domains":{"items":{"properties":{"domain":{"type":"string"},"state":{"enum":["verified","pending","failed"],"type":"string"}},"required":["domain","state"],"type":"object"},"type":"array"},"organizationId":{"type":"string"},"policySyncStatus":{"enum":["synced","manual_required"],"type":"string"},"providerAvailable":{"type":"boolean"},"ssoEnforced":{"type":"boolean"},"ssoJitEnabled":{"type":"boolean"},"version":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"}},"required":["organizationId","connectionState","connectionGeneration","connectionChangedAt","version","ssoEnforced","desiredSsoEnforced","ssoJitEnabled","policySyncStatus"],"type":"object"},"RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseImessageDedicatedLineResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseImessageDedicatedLineResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseResourceResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseResourceResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseResourceResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseResourceResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseResourceResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_SENDER_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"WHATSAPP_SENDER_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Provisioning","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseResourceResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReleaseResourceResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseResourceResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseResourceResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseResourceResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseResourceResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseSharedLineAssignmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Assignment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappDedicatedLineResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"enum":["imessage","whatsapp"],"type":"string"},"projectId":{"type":"string"},"releasedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ASSIGNMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Assignment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReplaceVoiceProfileInboundRequestApplicationJson":{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"password":{"minLength":1,"type":"string"},"username":{"maxLength":256,"minLength":1,"type":"string"}},"required":["password","username"],"type":"object"},{"type":"null"}]},"destinationUri":{"maxLength":2048,"minLength":1,"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["credentials","destinationUri","expectedVersion"],"type":"object"},"ReplaceVoiceProfileInboundResponse200ApplicationJson":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["inbound","profileVersion"],"type":"object"},"ReplaceVoiceProfileInboundResponse201ApplicationJson":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["inbound","profileVersion"],"type":"object"},"ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAccountProfilePictureResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"ResetAccountProfilePictureResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAccountProfilePictureResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAccountProfilePictureResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"ResetAccountProfilePictureResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAccountProfilePictureResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAgentProfileAvatarResponse200ApplicationJson":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionRequestApplicationJson":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["category"],"type":"object"},"ResumeSubscriptionResponse200ApplicationJson":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"resumed":{"description":"False when the subscription was not scheduled to cancel.","type":"boolean"}},"required":["category","resumed"],"type":"object"},"ResumeSubscriptionResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_REQUEST_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Idempotency Request In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-request-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResumeSubscriptionResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Idempotency Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"ResumeSubscriptionResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RetryOrganizationConnectionSyncResponse200ApplicationJson":{"properties":{"membership":{"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"retryAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"status":{"enum":["pending","syncing","ready","error","blocked"],"type":"string"}},"required":["status","errorCode","retryAt"],"type":"object"},"organization":{"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["pending","syncing","ready","error","blocked"],"type":"string"}},"required":["status","errorCode"],"type":"object"},"organizationId":{"type":"string"},"synchronized":{"type":"boolean"}},"required":["organizationId","organization","membership","synchronized"],"type":"object"},"RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_CONNECTION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization Connection Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-connection-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SYNC_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization Synchronization Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sync-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAccountServiceKeyResponse200ApplicationJson":{"additionalProperties":false,"properties":{"serviceKey":{"additionalProperties":false,"properties":{"accountId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"serviceKeyId":{"type":"string"}},"required":["accountId","createdAt","expiresAt","name","revokedAt","serviceKeyId"],"type":"object"}},"required":["serviceKey"],"type":"object"},"RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_SERVICE_KEY_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Service Key Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-service-key-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeProjectApiKeyResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiKey":{"additionalProperties":false,"properties":{"apiKeyId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"permissions":{"items":{"description":"Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.","type":"string"},"type":"array"},"permissionsUpdatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"projectId":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["apiKeyId","createdAt","createdByAccountId","expiresAt","name","permissions","permissionsUpdatedAt","projectId","revokedAt"],"type":"object"}},"required":["apiKey"],"type":"object"},"RevokeProjectApiKeyResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeProjectApiKeyResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeProjectApiKeyResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"API_KEY_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"API Key Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RevokeProjectApiKeyResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeProjectApiKeyResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"RevokeProjectApiKeyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RevokeProjectApiKeyResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateVoiceProfileOutboundCredentialRequestApplicationJson":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mode":{"enum":["normal","emergency"],"type":"string"}},"required":["expectedVersion","mode"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse200ApplicationJson":{"additionalProperties":false,"properties":{"password":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["password","previousPasswordValidUntil","profileVersion"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_NOT_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Not Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-not-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateWebhookSigningSecretRequestApplicationJson":{"additionalProperties":false,"properties":{"overlapSeconds":{"default":86400,"maximum":604800,"minimum":0,"type":"integer"}},"type":"object"},"RotateWebhookSigningSecretResponse200ApplicationJson":{"additionalProperties":false,"properties":{"previousSecretExpiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"signingSecret":{"pattern":"^whsec_.*","type":"string"}},"required":["previousSecretExpiresAt","signingSecret"],"type":"object"},"RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Webhook Destination Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Webhook Destination Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationRequestApplicationJson":{"additionalProperties":false,"properties":{"captcha":{"additionalProperties":false,"properties":{"challengeContext":{"maxLength":1024,"minLength":1,"type":"string"},"token":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["challengeContext","token"],"type":"object"},"phoneNumber":{"pattern":"^[+\\d][\\d\\s().-]{6,24}$","type":"string"}},"required":["phoneNumber"],"type":"object"},"StartAccountPhoneVerificationResponse201ApplicationJson":{"additionalProperties":false,"properties":{"channel":{"const":"sms","type":"string"},"expiresAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"resendAvailableAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["channel","expiresAt","resendAvailableAt"],"type":"object"},"StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"challengeContext":{"type":"string"},"code":{"const":"CAPTCHA_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"provider":{"enum":["turnstile","hcaptcha"],"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"siteKey":{"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Captcha Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/captcha-required","type":"string"}},"required":["code","status","title","type","challengeContext","provider","siteKey"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"StartEnterpriseLoginRequestApplicationJson":{"anyOf":[{"additionalProperties":false,"properties":{"invitationToken":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"},"organizationId":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"returnTo":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["organizationId","returnTo"],"type":"object"},{"additionalProperties":false,"properties":{"invitationToken":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"},"returnTo":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["invitationToken","returnTo"],"type":"object"},{"additionalProperties":false,"properties":{"retryToken":{"pattern":"^enroll_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","type":"string"}},"required":["retryToken"],"type":"object"}]},"StartEnterpriseLoginResponse200ApplicationJson":{"properties":{"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"StartEnterpriseLoginResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignSmsLineCampaignResponse200ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"UnassignSmsLineCampaignResponse202ApplicationJson":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"type":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_INVALID_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid SMS campaign request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-invalid-request","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_ORGANIZATION_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Campaign belongs to another organization","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-organization-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Campaign not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"SMS line not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_LINE_UNSUPPORTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"SMS line unsupported","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-unsupported","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign not ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment version conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_MUTATION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment mutation in progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-mutation-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CAPACITY_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign number capacity exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-capacity-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_RECONCILIATION_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign reconciliation required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-reconciliation-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"SMS_CAMPAIGN_CONTEXT_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Campaign context unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-context-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAccountRequestApplicationJson":{"additionalProperties":false,"properties":{"firstName":{"maxLength":256,"minLength":1,"type":"string"},"lastName":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]}},"type":"object"},"UpdateAccountResponse200ApplicationJson":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"UpdateAccountResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"HTTP_ERROR","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Request Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/http-error","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAccountResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAccountResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAccountResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAccountResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAccountResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"}]},"UpdateAccountResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAccountResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAccountResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAccountResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAgentProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"type":"object"},"UpdateAgentProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"UpdateAgentProfileResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAgentProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAgentProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAgentProfileResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAgentProfileResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAgentProfileResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateAgentProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAgentProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateAgentProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateDefaultVoiceProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["expectedVersion"],"type":"object"},"UpdateDefaultVoiceProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_DIRECTION_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Direction Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-direction-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateOrganizationSsoPolicyRequestApplicationJson":{"additionalProperties":false,"properties":{"expectedVersion":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"ssoJitEnabled":{"type":"boolean"}},"required":["expectedVersion","ssoJitEnabled"],"type":"object"},"UpdateOrganizationSsoPolicyResponse200ApplicationJson":{"properties":{"connectionChangedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"connectionGeneration":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"connectionState":{"enum":["not_configured","configuring","ready","error"],"type":"string"},"connectionType":{"type":"string"},"desiredSsoEnforced":{"type":"boolean"},"domains":{"items":{"properties":{"domain":{"type":"string"},"state":{"enum":["verified","pending","failed"],"type":"string"}},"required":["domain","state"],"type":"object"},"type":"array"},"organizationId":{"type":"string"},"policySyncStatus":{"enum":["synced","manual_required"],"type":"string"},"providerAvailable":{"type":"boolean"},"ssoEnforced":{"type":"boolean"},"ssoJitEnabled":{"type":"boolean"},"version":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"}},"required":["organizationId","connectionState","connectionGeneration","connectionChangedAt","version","ssoEnforced","desiredSsoEnforced","ssoJitEnabled","policySyncStatus"],"type":"object"},"UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_FORBIDDEN_403"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"}]},"UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectApiKeyRequestApplicationJson":{"additionalProperties":false,"properties":{"permissions":{"items":{"enum":["events:read","events:write","platforms:read","platforms:write","project:read","project:write"],"type":"string"},"minItems":1,"type":"array"}},"required":["permissions"],"type":"object"},"UpdateProjectApiKeyResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiKey":{"additionalProperties":false,"properties":{"apiKeyId":{"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"type":"string"},"expiresAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"permissions":{"items":{"description":"Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.","type":"string"},"type":"array"},"permissionsUpdatedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"projectId":{"type":"string"},"revokedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["apiKeyId","createdAt","createdByAccountId","expiresAt","name","permissions","permissionsUpdatedAt","projectId","revokedAt"],"type":"object"}},"required":["apiKey"],"type":"object"},"UpdateProjectApiKeyResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectApiKeyResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectApiKeyResponse404ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"API_KEY_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"API Key Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectApiKeyResponse409ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"API_KEY_REVOKED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"API Key Revoked","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-revoked","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectApiKeyResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectApiKeyResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectApiKeyResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectApiKeyResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectApiKeyResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectRequestApplicationJson":{"additionalProperties":false,"properties":{"name":{"maxLength":256,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"UpdateProjectResponse200ApplicationJson":{"additionalProperties":false,"properties":{"agentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"billingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"enum":["account","service_identity"],"type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"UpdateProjectResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectResponse422ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateProjectResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateProjectResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileInboundRequestApplicationJson":{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"password":{"minLength":1,"type":"string"},"username":{"maxLength":256,"minLength":1,"type":"string"}},"required":["password","username"],"type":"object"},{"type":"null"}]},"destinationUri":{"maxLength":2048,"minLength":1,"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["expectedVersion"],"type":"object"},"UpdateVoiceProfileInboundResponse200ApplicationJson":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["inbound","profileVersion"],"type":"object"},"UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson":{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"}},"required":["algorithm"],"type":"object"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["authentication","expectedVersion"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"outbound":{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","profileVersion"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_NOT_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Not Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-not-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileRequestApplicationJson":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"maxLength":100,"minLength":1,"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["expectedVersion"],"type":"object"},"UpdateVoiceProfileResponse200ApplicationJson":{"additionalProperties":false,"properties":{"configuration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},{"type":"null"}]},"outbound":{"anyOf":[{"additionalProperties":false,"properties":{"authentication":{"additionalProperties":false,"properties":{"algorithm":{"enum":["sha-256","md5"],"type":"string"},"previousPasswordValidUntil":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"connection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"enum":["udp","tcp","tls"],"type":"string"}},"required":["host","port","transport"],"type":"object"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"}},"required":["authentication","connection"],"type":"object"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"enum":["auto","srtp"],"type":"string"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"UpdateVoiceProfileResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_DIRECTION_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Direction Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-direction-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UpdateVoiceProfileResponse429ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateVoiceProfileResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateVoiceProfileResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateWebhookDestinationRequestApplicationJson":{"additionalProperties":false,"minProperties":1,"properties":{"description":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}]},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"maxLength":256,"minLength":1,"type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"url":{"description":"HTTPS URL without credentials or a fragment.","format":"uri","maxLength":2048,"minLength":1,"type":"string"}},"type":"object"},"UpdateWebhookDestinationResponse200ApplicationJson":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"anyOf":[{"prefixItems":[{"const":"*","type":"string"}],"type":"array"},{"items":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true}]},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"enum":["enabled","disabled"],"type":"string"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"UpdateWebhookDestinationResponse400ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UpdateWebhookDestinationResponse404ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Webhook Destination Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse410ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"WEBHOOK_DESTINATION_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Webhook Destination Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpdateWebhookDestinationResponse504ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UploadAttachmentRequestMultipartRelated":{"format":"binary","type":"string"},"UploadAttachmentResponse200ApplicationJson":{"additionalProperties":false,"properties":{"contentType":{"pattern":"^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"},"filename":{"minLength":1,"type":"string"},"id":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"metadata":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"sizeBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"}},"required":["contentType","createdAt","id","projectId","sizeBytes","updatedAt"],"type":"object"},"UploadAttachmentResponse201ApplicationJson":{"additionalProperties":false,"properties":{"contentType":{"pattern":"^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"},"filename":{"minLength":1,"type":"string"},"id":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"metadata":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"sizeBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"}},"required":["contentType","createdAt","id","projectId","sizeBytes","updatedAt"],"type":"object"},"UploadAttachmentResponse400ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"HTTP_ERROR","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Request Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/http-error","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_ATTACHMENT_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Attachment Request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-attachment-request","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UploadAttachmentResponse403ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"$ref":"#/components/schemas/Authorization_Problem_INSUFFICIENT_SCOPE_403"},{"additionalProperties":false,"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UploadAttachmentResponse409ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"ATTACHMENT_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"ATTACHMENT_UPLOAD_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Upload Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-upload-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UploadAttachmentResponse413ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UploadAttachmentResponse422ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"type":"array"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["code","status","title","type","issues"],"type":"object"},"UploadAttachmentResponse500ApplicationProblemPlusJson":{"oneOf":[{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"},{"additionalProperties":false,"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"UploadAttachmentResponse502ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UploadAttachmentResponse503ApplicationProblemPlusJson":{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UploadAttachmentResponse504ApplicationProblemPlusJson":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"}]},"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/components/schemas/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/components/schemas/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"securitySchemes":{"accountServiceKey":{"description":"Account Service Key, `pho_ask_` prefixed, sent as `Authorization: Bearer `. Acts as the account, so it reaches every route the account can. A WorkOS access token from a dashboard session or an OAuth grant is accepted on the same header.","scheme":"bearer","type":"http"},"oauth2":{"description":"OAuth grant issued by the Photon authorization server. The token is a bearer JWT whose consented scope is intersected with the permissions the route grants; an empty intersection is `403 insufficient_scope`.","flows":{"authorizationCode":{"authorizationUrl":"https://auth.photon.codes/oauth2/authorize","scopes":{"account:create_project":"Create a project owned by the account.","account:read":"View account profile.","account:read_projects":"List projects associated with the account; does not grant access to project contents.","account:write":"Update account name and profile.","billing:read":"View invoices, usage, payment status.","events:read":"Query stored Events and discover their SQL schema within a project.","organization:create_project":"Create a project in the organization.","organization:read":"View organization name and avatar.","organization:read_projects":"List projects in the organization.","platforms:read":"View project platform configuration.","platforms:write":"Change project platform configuration.","project:delete":"Permanently delete the project.","project:read":"View non-sensitive project settings.","project:read_usage":"View project usage and costs.","project:write":"Change agent profiles, webhook settings, and other project configuration.","ten_dlc:read":"View organization 10DLC Brand and Campaign registration records.","ten_dlc:write":"Register and update organization 10DLC Brands and Campaigns, including OTP operations."},"tokenUrl":"https://auth.photon.codes/oauth2/token"}},"type":"oauth2"},"projectApiKey":{"description":"Project API key, `pho_sk_` prefixed, sent as `Authorization: Bearer `. Bound to one project, so it is accepted only under `/v1/projects/{projectId}` and refused everywhere else.","scheme":"bearer","type":"http"},"serviceIdentityBearer":{"description":"Organization Service Identity API key or M2M access token, sent as `Authorization: Bearer `. Restricted to its organization and explicitly granted business permissions. It does not authorize human organization governance or Photon credential management. Never send an M2M client secret to a business endpoint.","scheme":"bearer","type":"http"}}},"info":{"title":"Photon API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/v1/account":{"delete":{"description":"Deletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier.","operationId":"deleteAccount","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse200ApplicationJson"}}},"description":"The deleted account tombstone.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse409ApplicationProblemPlusJson"}}},"description":"ACCOUNT_OWNS_ORGANIZATIONS: Account Owns Organizations","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Delete the authenticated account","tags":["Account"],"x-required-permissions":["account:write"]},"get":{"description":"Returns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile.","operationId":"getAccount","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse200ApplicationJson"}}},"description":"The authenticated account.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:read"]}],"summary":"Get the authenticated account","tags":["Account"],"x-required-permissions":["account:read"]},"patch":{"description":"Updates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header.","operationId":"updateAccount","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse200ApplicationJson"}}},"description":"The updated account.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse400ApplicationProblemPlusJson"}}},"description":"HTTP_ERROR: Request Failed; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Update the authenticated account","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/oauth/authorized-applications":{"get":{"description":"Lists the OAuth applications authorized by the authenticated user.","operationId":"listAuthorizedApplications","parameters":[{"description":"Pagination cursor from listMetadata.after for the next page. Cannot be combined with before.","in":"query","name":"after","schema":{"maxLength":128,"minLength":1,"type":"string"}},{"description":"Pagination cursor from listMetadata.before for the previous page. Cannot be combined with after.","in":"query","name":"before","schema":{"maxLength":128,"minLength":1,"type":"string"}},{"description":"Maximum number of authorized applications to return, from 1 to 100. Omit to use the default page size.","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Result ordering: normal, descending (desc), or ascending (asc). Omit to use the default order.","in":"query","name":"order","schema":{"enum":["normal","desc","asc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse200ApplicationJson"}}},"description":"OAuth applications authorized by the authenticated user.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"List connected applications","tags":["Connected Applications"]}},"/v1/account/oauth/authorized-applications/{applicationId}":{"delete":{"description":"Revokes the authenticated user's grant for one OAuth application.","operationId":"revokeAuthorizedApplication","parameters":[{"description":"Authorized application's id, prefixed with connect_app_. Use application.id from the list response, not its clientId or authorizationId.","in":"path","name":"applicationId","required":true,"schema":{"maxLength":128,"pattern":"^connect_app_[A-Za-z0-9]+$","type":"string"}}],"responses":{"204":{"description":"OAuth application grant revoked.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Revoke a connected application","tags":["Connected Applications"]}},"/v1/account/phone":{"put":{"description":"Binds the number once the code is approved. Repeat calls return the bound Account.","operationId":"confirmAccountPhoneVerification","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse200ApplicationJson"}}},"description":"The Account with its verified phone number.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Confirm a phone number verification","tags":["Account"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["account:write"]}},"/v1/account/phone/verifications":{"post":{"description":"Sends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After.","operationId":"startAccountPhoneVerification","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse201ApplicationJson"}}},"description":"A pending verification. The Account is unchanged.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Start a phone number verification","tags":["Account"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["account:write"]}},"/v1/account/profile-picture":{"delete":{"description":"Removes the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header.","operationId":"resetAccountProfilePicture","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse200ApplicationJson"}}},"description":"The Account reset to its default profile picture.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Remove a profile picture","tags":["Account"],"x-required-permissions":["account:write"]},"put":{"description":"Commits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account.","operationId":"commitAccountProfilePicture","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse200ApplicationJson"}}},"description":"The Account with its committed profile picture.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Commit a profile picture","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/profile-picture/uploads":{"post":{"description":"Creates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields.","operationId":"createAccountProfilePictureUpload","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse201ApplicationJson"}}},"description":"A short-lived, Account-bound presigned S3 POST.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Create a profile picture upload","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/service-keys":{"get":{"description":"Returns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created.","operationId":"listAccountServiceKeys","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse200ApplicationJson"}}},"description":"Active Account Service Key metadata, newest first.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"List Account Service Keys","tags":["Account Service Keys"],"x-required-permissions":["account:write"]},"post":{"description":"Creates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header.","operationId":"createAccountServiceKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse201ApplicationJson"}}},"description":"The created Account Service Key and its one-time credential.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse409ApplicationProblemPlusJson"}}},"description":"ACCOUNT_SERVICE_KEY_LIMIT_REACHED: Account Service Key Limit Reached","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Create an Account Service Key","tags":["Account Service Keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["account:write"]}},"/v1/account/service-keys/{serviceKeyId}":{"delete":{"description":"Revokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header.","operationId":"revokeAccountServiceKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"serviceKeyId","required":true,"schema":{"pattern":"^pho_ask_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse200ApplicationJson"}}},"description":"The revoked key metadata. Repeated revocation is stable.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Revoke an Account Service Key","tags":["Account Service Keys"],"x-required-permissions":["account:write"]}},"/v1/auth/device/code":{"post":{"description":"Starts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored.","operationId":"deviceAuthorize","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthorizeResponse200ApplicationJson"}}},"description":"Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"description":"WorkOS rejected the request. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"description":"WorkOS could not be reached (problem+json).","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"Start Device Authorization","tags":["Device Authorization"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/device/token":{"post":{"description":"Exchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.\n\nThis SDK method sends uncompressed JSON (application/json). Other request formats described above apply to direct HTTP requests.","operationId":"deviceToken","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenRequestApplicationJson"}}},"description":"Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenResponse200ApplicationJson"}}},"description":"Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenResponse400ApplicationJson"}}},"description":"authorization_pending, slow_down, access_denied, expired_token, invalid_grant, invalid_request, or unsupported_grant_type. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"description":"Relayed slow_down; back off the polling interval.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"description":"server_error: the login could not be completed; retry the login from the start.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"description":"WorkOS could not be reached (problem+json).","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"Exchange Device Code or Refresh Token","tags":["Device Authorization"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/login/enrollment":{"post":{"description":"Returns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials.","operationId":"startEnterpriseLogin","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEnterpriseLoginRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEnterpriseLoginResponse200ApplicationJson"}}},"description":"Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartEnterpriseLoginResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"Start company sign-in without an existing Account","tags":["Authentication"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/oauth/scopes":{"get":{"description":"Lists the business permissions available to OAuth applications.","operationId":"listOauthScopes","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOauthScopesResponse200ApplicationJson"}}},"description":"The configurable OAuth business permissions.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOauthScopesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOauthScopesResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"List OAuth scopes","tags":["OAuth Discovery"]}},"/v1/auth/organizations/{orgId}/connection-status":{"get":{"description":"Requires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization.","operationId":"getOrganizationConnectionStatus","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse200ApplicationJson"}}},"description":"Organization mapping and current member synchronization.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Read organization and own membership synchronization","tags":["Organization Connections"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/connection-sync/retry":{"post":{"description":"Reconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy.","operationId":"retryOrganizationConnectionSync","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse200ApplicationJson"}}},"description":"Current synchronization state after requesting retry.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Retry own organization connection synchronization","tags":["Organization Connections"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso":{"get":{"description":"Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings.","operationId":"getOrganizationSsoConfiguration","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse200ApplicationJson"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Read organization SSO configuration","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}},"patch":{"description":"Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing.","operationId":"updateOrganizationSsoPolicy","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse200ApplicationJson"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Update organization SSO policy","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/admission":{"post":{"description":"Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership.","operationId":"beginOrganizationSsoAdmission","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse200ApplicationJson"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Begin organization SSO admission for an existing Account","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/authenticate":{"post":{"description":"Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session.","operationId":"beginOrganizationAuthentication","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse200ApplicationJson"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate to the current organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/closure-authenticate":{"post":{"description":"Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization.","operationId":"beginOrganizationClosureAuthentication","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse200ApplicationJson"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate the current Owner to inspect organization closure","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/invitation":{"post":{"description":"Returns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation.","operationId":"beginInvitationSso","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse200ApplicationJson"}}},"description":"Invitation-bound SSO authorization URL.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate to an invitation's organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/portal":{"post":{"description":"Returns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow.","operationId":"createOrganizationSsoPortalLink","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse200ApplicationJson"}}},"description":"Short-lived provider setup link.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Create organization SSO setup portal","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/refresh":{"post":{"description":"Refreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body.","operationId":"refreshOrganizationSsoConnection","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse200ApplicationJson"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Refresh organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/installation-requests":{"post":{"description":"Authenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required.","operationId":"createAppInstallationRequest","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse201ApplicationJson"}}},"description":"Installation request metadata. No customer credential or access is issued.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse401ApplicationProblemPlusJson"}}},"description":"APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse409ApplicationProblemPlusJson"}}},"description":"APP_INSTALLATION_ASSERTION_REPLAYED: Installation Assertion Already Used; APP_INSTALLATION_CONFIG_CHANGED: Installation App Configuration Changed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"Request an app installation","tags":["App Installations"],"x-photon-mcp":{"enabled":false}}},"/v1/installation-requests/redeem":{"post":{"description":"The registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential.","operationId":"redeemAppInstallationDelivery","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse200ApplicationJson"}}},"description":"First successful delivery or metadata-only operation status.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson"}}},"description":"APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson"}}},"description":"APP_INSTALLATION_DELIVERY_UNAVAILABLE: Installation Delivery Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[],"summary":"Redeem an approved installation credential","tags":["App Installations"],"x-photon-mcp":{"enabled":false}}},"/v1/organizations/{organizationId}/billing":{"get":{"description":"Returns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan.","operationId":"getOrganizationBillingOverview","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse200ApplicationJson"}}},"description":"The organization-owned plan and its resolved entitlements.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"Get the organization's billing overview","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/checkout":{"post":{"description":"Returns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward.","operationId":"createOrganizationPaymentMethodCheckout","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson"}}},"description":"Hosted card-capture page for the organization.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; PAYMENT_PROVIDER_NOT_READY: Payment Provider Not Ready\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Get a payment-method checkout URL for the organization","tags":["Organization Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/invoices":{"get":{"description":"Returns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription.","operationId":"listInvoices","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse200ApplicationJson"}}},"description":"The organization's invoices, newest first.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"List invoices","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/payment-method":{"get":{"description":"Reports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session.","operationId":"getOrganizationPaymentMethod","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse200ApplicationJson"}}},"description":"Whether the organization has a captured card and its metadata.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"Check the organization for a card on file","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/cancel":{"post":{"description":"Schedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization.","operationId":"cancelSubscription","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse200ApplicationJson"}}},"description":"The category remains active through cancelsAt, then stops renewing.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Cancel a category at the end of its billing period","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/purchase":{"post":{"description":"Purchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization.","operationId":"changePlan","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse200ApplicationJson"}}},"description":"The idempotency key resolved to an operation that is already terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse202ApplicationJson"}}},"description":"Plan change accepted. Poll the returned operation until it succeeds or fails.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical billing operation to poll for completion.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum seconds to wait before polling again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Purchase or change a category's plan","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/resume":{"post":{"description":"Removes a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization.","operationId":"resumeSubscription","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse200ApplicationJson"}}},"description":"Removes a scheduled cancellation so the category renews normally.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Resume a category scheduled for cancellation","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/setup-intent":{"post":{"description":"Creates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret.","operationId":"createOrganizationSetupIntent","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse200ApplicationJson"}}},"description":"Stripe Elements configuration for capturing the organization's card.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Create a SetupIntent for an in-app card capture","tags":["Organization Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/projects":{"get":{"description":"Returns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter.","operationId":"listProjects","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"createdAfter","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"query","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"maxLength":2048,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse200ApplicationJson"}}},"description":"One page of active projects in the organization.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"List accessible projects","tags":["Projects"],"x-required-permissions":["organization:read_projects"]},"post":{"description":"Creates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project.","operationId":"createProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse201ApplicationJson"}}},"description":"The created project.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse409ApplicationProblemPlusJson"}}},"description":"SLUG_TAKEN: Slug Already Taken","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Create a project","tags":["Projects"],"x-required-permissions":["organization:create_project"]}},"/v1/organizations/{organizationId}/projects/closure-status":{"get":{"description":"Returns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion.","operationId":"getProjectClosureStatus","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse200ApplicationJson"}}},"description":"Current cleanup and settlement evidence. Project deletion alone does not establish readiness.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Read project closure progress","tags":["Projects"],"x-required-permissions":["organization:read_projects"]}},"/v1/organizations/{organizationId}/projects/count":{"get":{"description":"Counts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged.","operationId":"countProjects","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"createdAfter","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"query","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse200ApplicationJson"}}},"description":"The number of matching projects.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Count accessible projects","tags":["Projects"],"x-required-permissions":["organization:read_projects"]}},"/v1/organizations/{organizationId}/projects/slug-availability":{"get":{"description":"Reports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason.","operationId":"checkProjectSlugAvailability","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"slug","required":true,"schema":{"maxLength":63,"minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse200ApplicationJson"}}},"description":"Whether the slug can be allocated, and why not.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Check slug availability","tags":["Projects"],"x-required-permissions":["organization:create_project"]}},"/v1/projects/{id}/attachments":{"get":{"description":"Lists the Project's Attachment metadata, with optional time filters.","operationId":"listAttachments","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"Exclusive upper bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.","in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Inclusive lower bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.","in":"query","name":"createdSince","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Direction along orderBy; desc, the default, is newest first","in":"query","name":"order","schema":{"enum":["asc","desc"],"type":"string"}},{"description":"Sort timestamp; defaults to the filtered timestamp, otherwise created_at. Must match the time bounds.","in":"query","name":"orderBy","schema":{"enum":["created_at","updated_at"],"type":"string"}},{"in":"query","name":"pageSize","schema":{"pattern":"^[0-9]+$","type":"string"}},{"description":"Token from nextPageToken. Keep the same Project and query.","in":"query","name":"pageToken","schema":{"maxLength":4096,"minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$","type":"string"}},{"description":"Exclusive upper bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.","in":"query","name":"updatedBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Inclusive lower bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.","in":"query","name":"updatedSince","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse200ApplicationJson"}}},"description":"A page of Project Attachments in the requested order.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List Project Attachments","tags":["Attachments"],"x-required-permissions":["project:read"]},"post":{"description":"Uploads a file and returns its Attachment once ready to download.","operationId":"uploadAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"header","name":"content-length","required":true,"schema":{"pattern":"^[1-9][0-9]*$","type":"string"}},{"in":"header","name":"content-type","required":true,"schema":{"maxLength":512,"type":"string"}},{"description":"Reuse the same key and request for retries.","in":"header","name":"idempotency-key","required":true,"schema":{"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"multipart/related":{"schema":{"$ref":"#/components/schemas/UploadAttachmentRequestMultipartRelated"}}},"description":"Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse200ApplicationJson"}}},"description":"The attachment upload had already been committed.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse201ApplicationJson"}}},"description":"The attachment was uploaded and committed.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical resource URL of the Attachment.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse400ApplicationProblemPlusJson"}}},"description":"HTTP_ERROR: Request Failed; INVALID_ATTACHMENT_REQUEST: Invalid Attachment Request","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse409ApplicationProblemPlusJson"}}},"description":"ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Upload an Attachment","tags":["Attachments"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{id}/attachments/{attachmentId}":{"get":{"description":"Returns an Attachment's metadata. Use the content endpoint to download its bytes.","operationId":"getAttachment","parameters":[{"in":"path","name":"attachmentId","required":true,"schema":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse200ApplicationJson"}}},"description":"The Attachment resource.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse404ApplicationProblemPlusJson"}}},"description":"ATTACHMENT_NOT_FOUND: Attachment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get an Attachment","tags":["Attachments"],"x-required-permissions":["project:read"]}},"/v1/projects/{id}/attachments/{attachmentId}/content":{"get":{"description":"Downloads an Attachment's bytes. If unavailable after ten seconds, returns ATTACHMENT_NOT_READY with Retry-After: 5.","operationId":"downloadAttachment","parameters":[{"in":"path","name":"attachmentId","required":true,"schema":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse200ApplicationOctetStream"}}},"description":"The Attachment's raw file bytes. Content-Type identifies the media type of the response.","headers":{"Content-Disposition":{"description":"Attachment disposition using the filename declared during upload.","schema":{"type":"string"}},"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse404ApplicationProblemPlusJson"}}},"description":"ATTACHMENT_NOT_FOUND: Attachment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse409ApplicationProblemPlusJson"}}},"description":"ATTACHMENT_NOT_READY: Attachment Not Ready","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying the download.","schema":{"enum":["5"],"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Download an Attachment","tags":["Attachments"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:read"]}},"/v1/projects/{id}/platforms":{"get":{"description":"Lists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listProjectPlatforms","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse200ApplicationJson"}}},"description":"Every platform type available to the project.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List project platforms","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/email/domains":{"post":{"description":"Reserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.","operationId":"connectEmailDomain","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainRequestApplicationJson"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse202ApplicationJson"}}},"description":"The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect email domain","tags":["Email domains"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage":{"get":{"description":"Reports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getProjectImessagePlatform","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse200ApplicationJson"}}},"description":"The project's iMessage line mode.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse503ApplicationProblemPlusJson"}}},"description":"BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get project iMessage platform","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/imessage/assignments":{"get":{"description":"Lists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listSharedLineAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"includeReleased","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse200ApplicationJson"}}},"description":"A page of shared line assignments.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List shared line assignments","tags":["Shared line assignments"],"x-required-permissions":["platforms:read"]},"post":{"description":"Maps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path.","operationId":"createSharedLineAssignment","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse201ApplicationJson"}}},"description":"The created shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}":{"delete":{"description":"Releases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse200ApplicationJson"}}},"description":"The released shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse200ApplicationJson"}}},"description":"The shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/imessage/dedicated":{"post":{"description":"Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path.","operationId":"provisionImessageDedicatedLine","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse202ApplicationJson"}}},"description":"The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Provision dedicated iMessage line","tags":["Dedicated iMessage lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage/dedicated/{resourceId}":{"delete":{"description":"Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure.","operationId":"releaseImessageDedicatedLine","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse200ApplicationJson"}}},"description":"The iMessage product and its charge period were removed.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse202ApplicationJson"}}},"description":"The removal is still running. GET the Location after the Retry-After interval.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release dedicated iMessage line","tags":["Dedicated iMessage lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/operations":{"get":{"description":"Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listOperations","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"resourceId","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"type","schema":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse200ApplicationJson"}}},"description":"A page of the project's operations.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List operations","tags":["Operations"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/operations/{operationId}":{"get":{"description":"Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getOperation","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"operationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse200ApplicationJson"}}},"description":"The operation, and the resource it produced once one exists.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse404ApplicationProblemPlusJson"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get operation","tags":["Operations"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/operations/{operationId}/cancel":{"post":{"description":"Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path.","operationId":"cancelOperation","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"operationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse200ApplicationJson"}}},"description":"The cancelled operation.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse404ApplicationProblemPlusJson"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse409ApplicationProblemPlusJson"}}},"description":"OPERATION_NOT_CANCELLABLE: Operation Not Cancellable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Cancel operation","tags":["Operations"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/resources":{"get":{"description":"Lists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listResources","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"ability","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"state","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"type","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse200ApplicationJson"}}},"description":"A page of the project's resources.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List resources","tags":["Resources"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/resources/{resourceId}":{"delete":{"description":"Gives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseResource","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse200ApplicationJson"}}},"description":"The release finished inside this request. The resource is gone.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse202ApplicationJson"}}},"description":"The release is still running at the provider. GET the Location after the Retry-After interval; a terminal answer may arrive on any read.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse409ApplicationProblemPlusJson"}}},"description":"WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release resource","tags":["Resources"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getResource","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse200ApplicationJson"}}},"description":"The resource.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get resource","tags":["Resources"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/sms/lines/{resourceId}/campaign":{"delete":{"description":"Any project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously.","operationId":"unassignSmsLineCampaign","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse200ApplicationJson"}}},"description":"The original terminal operation on an authorized replay.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse202ApplicationJson"}}},"description":"Assignment accepted. Poll the operation Location until terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Remove SMS line campaign","tags":["SMS campaigns"],"x-required-permissions":["platforms:write"]},"get":{"description":"Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee.","operationId":"getSmsLineCampaignAssignment","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse200ApplicationJson"}}},"description":"Current assignment, including an untouched version of 1.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Read SMS line campaign assignment","tags":["SMS campaigns"],"x-required-permissions":["platforms:read"]},"put":{"description":"Attach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously.","operationId":"assignSmsLineCampaign","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse200ApplicationJson"}}},"description":"The original terminal operation on an authorized replay.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse202ApplicationJson"}}},"description":"Assignment accepted. Poll the operation Location until terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse400ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse404ApplicationProblemPlusJson"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Assign or replace SMS line campaign","tags":["SMS campaigns"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/sms/numbers":{"post":{"description":"Buys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path.","operationId":"purchaseSmsNumber","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberRequestApplicationJson"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse202ApplicationJson"}}},"description":"The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Purchase SMS number","tags":["SMS numbers"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/sms/numbers/area-codes":{"get":{"description":"Lists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project.","operationId":"listNumberAreaCodes","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"countryCode","required":true,"schema":{"const":"US","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse200ApplicationJson"}}},"description":"Current area-code coverage. An empty list is a successful coverage read, not an upstream failure.","headers":{"Cache-Control":{"description":"Private cache with the remaining five-minute service-cache lifetime.","schema":{"type":"string"}},"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List supported number area codes","tags":["SMS numbers"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/sms/numbers/countries":{"get":{"description":"Lists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project.","operationId":"listNumberCountries","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse200ApplicationJson"}}},"description":"Supported countries.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List supported number countries","tags":["SMS numbers"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/telegram/bots":{"post":{"description":"Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.","operationId":"connectTelegramBot","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotRequestApplicationJson"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse202ApplicationJson"}}},"description":"Setup accepted. Open detail.setupUrl and poll the operation.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse409ApplicationProblemPlusJson"}}},"description":"TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect Telegram bot","tags":["Telegram"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/lines/profile-assignments/batch":{"post":{"description":"Atomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project.","operationId":"batchUpdateVoiceLineProfileAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson"}}},"description":"The updated line profile assignments.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Batch update Voice line profile assignments","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile":{"delete":{"description":"Removes a line's explicit override when the resource version matches so the line follows the project default. Profiles and the pstn_voice ability are unchanged. Requires platforms:write bound to the path project.","operationId":"unassignVoiceLineProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"204":{"description":"The Voice profile was unassigned.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Unassign Voice line profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project.","operationId":"getVoiceLineProfileAssignment","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse200ApplicationJson"}}},"description":"The line profile assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get Voice line profile assignment","tags":["Voice"],"x-required-permissions":["platforms:read"]},"put":{"description":"Assigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project.","operationId":"assignVoiceLineProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse200ApplicationJson"}}},"description":"The updated Voice line profile assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Assign Voice line profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles":{"get":{"description":"Lists reusable Voice profiles in this project. Requires platforms:read bound to the path project.","operationId":"listVoiceProfiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"default","schema":{"enum":["true","false"],"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse200ApplicationJson"}}},"description":"A page of Voice profiles.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List Voice profiles","tags":["Voice"],"x-required-permissions":["platforms:read"]},"post":{"description":"Creates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project.","operationId":"createVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse201ApplicationJson"}}},"description":"The created Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/default":{"get":{"description":"Gets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project.","operationId":"getDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse200ApplicationJson"}}},"description":"The current default Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:read"]},"patch":{"description":"Patches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project.","operationId":"updateDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse200ApplicationJson"}}},"description":"The updated default Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"put":{"description":"Creates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project.","operationId":"createDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse200ApplicationJson"}}},"description":"The identically replayed default Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse201ApplicationJson"}}},"description":"The created default Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}":{"delete":{"description":"Deletes an additional profile when expectedVersion matches. Assigned profiles require force=true, which atomically removes every stored override so affected lines follow the default. The default can never be deleted. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},{"in":"query","name":"force","schema":{"enum":["true","false"],"type":"string"}}],"responses":{"204":{"description":"The Voice profile was deleted.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse409ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Delete Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project.","operationId":"getVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse200ApplicationJson"}}},"description":"The Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get Voice profile","tags":["Voice"],"x-required-permissions":["platforms:read"]},"patch":{"description":"Patches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse200ApplicationJson"}}},"description":"The updated Voice profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound":{"delete":{"description":"Removes a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse200ApplicationJson"}}},"description":"The removed inbound configuration and next profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Remove Voice profile inbound configuration","tags":["Voice"],"x-required-permissions":["platforms:write"]},"patch":{"description":"Updates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse200ApplicationJson"}}},"description":"The updated inbound configuration and profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile inbound configuration","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]},"put":{"description":"Creates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project.","operationId":"replaceVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse200ApplicationJson"}}},"description":"The replaced inbound configuration and profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse201ApplicationJson"}}},"description":"The newly created inbound configuration and profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create or replace Voice profile inbound configuration","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound":{"delete":{"description":"Revokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfileOutbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse200ApplicationJson"}}},"description":"Outbound calling was revoked.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Revoke Voice profile outbound credential","tags":["Voice"],"x-required-permissions":["platforms:write"]},"patch":{"description":"Changes a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfileOutboundAuthentication","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson"}}},"description":"The current outbound configuration and profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile outbound authentication policy","tags":["Voice"],"x-required-permissions":["platforms:write"]},"put":{"description":"Configures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.","operationId":"configureVoiceProfileOutbound","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse200ApplicationJson"}}},"description":"An idempotent replay with an explicit null password.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse201ApplicationJson"}}},"description":"The configured outbound connection and display-once password.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_CONFIGURED: Voice Outbound Already Configured","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Configure Voice profile outbound credential","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound/rotate":{"post":{"description":"Rotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.","operationId":"rotateVoiceProfileOutboundCredential","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse200ApplicationJson"}}},"description":"The rotated password result and next profile version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Rotate Voice outbound credential","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp":{"get":{"description":"Reports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getProjectWhatsappPlatform","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse200ApplicationJson"}}},"description":"The project's WhatsApp line mode.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson"}}},"description":"BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get project WhatsApp platform","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account":{"delete":{"description":"Disconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted.","operationId":"disconnectWhatsappBusinessAccount","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse200ApplicationJson"}}},"description":"The replayed disconnect operation is terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse202ApplicationJson"}}},"description":"Account disconnect accepted. Poll Location after Retry-After.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson"}}},"description":"WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Disconnect WhatsApp Business account and numbers","tags":["WhatsApp Business"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets the one WhatsApp Business Account this project has connected, with its number of live senders. Senders are resources and are listed by GET /platforms/resources?ability=whatsapp_business. The account is not a resource and carries no access token. Meta's retained numbers are listed separately by GET /platforms/whatsapp-business/account/phone-numbers. `subscribedAt` is absent until our app is attached to the account's webhooks. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappBusinessAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse200ApplicationJson"}}},"description":"The project's connected account.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp Business account","tags":["WhatsApp Business"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account/phone-numbers":{"get":{"description":"Lists the connected WABA's phone numbers directly from Meta, including numbers whose Photon sender was disconnected. Ownership is photon for a number in this project's current Photon inventory and meta otherwise. Match a Photon SMS number by its E.164 phoneNumber and reuse its existing displayName when reconnecting. A null name is unavailable, not permission to choose a new name. A failed lookup returns an error rather than an empty list. Requires platforms:read on the path project.","operationId":"listWhatsappAccountPhoneNumbers","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse200ApplicationJson"}}},"description":"The current Meta number inventory for the connected WABA.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List WhatsApp account phone numbers","tags":["WhatsApp Business"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account/senders":{"post":{"description":"Registers an active, SMS-capable Photon VoIP line on this project's connected WhatsApp Business Account. The account is resolved server-side; callers never select a WABA. The platform creates or reuses the Meta number, requests and consumes the SMS ownership code internally, verifies it, and registers the sender. displayName is optional; when omitted the project agent profile name is snapshotted before acceptance. The VoIP line remains a separate resource and never receives the whatsapp_business ability.","operationId":"createWhatsappVoipSender","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderRequestApplicationJson"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse202ApplicationJson"}}},"description":"The sender provision was accepted. Poll the Location after Retry-After until the operation is terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers; WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning; WHATSAPP_VOIP_SOURCE_RELEASING: WhatsApp VoIP Source Releasing","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; WHATSAPP_DISPLAY_NAME_UNAVAILABLE: WhatsApp Display Name Unavailable; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create a VoIP-backed WhatsApp sender","tags":["WhatsApp Business"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/numbers":{"post":{"description":"Exchanges the authorization code Embedded Signup returned and connects exactly the selected phone number as one `whatsapp_sender`. Send the WABA id and phone-number id emitted by the same popup attempt; both are treated as selectors and verified against Meta before use. A selected number that matches a non-retired, same-project `voip_line` is linked to it; a number absent from Photon inventory stays unbound; a matching non-retired `cosmos_line`, foreign VoIP line or unassigned VoIP line fails the operation before registration. Connecting is free — no plan requirement — but Billing must report the project's organization as ready with a payment method on file. The Idempotency-Key is required and permanent: replaying the same key returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.","operationId":"connectWhatsappBusiness","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessRequestApplicationJson"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse202ApplicationJson"}}},"description":"The code was accepted and onboarding was dispatched. GET the Location after the Retry-After interval until the operation is terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect WhatsApp Business","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/numbers/{resourceId}/verification-code":{"get":{"description":"Returns the latest six-digit WhatsApp Business ownership code received by SMS for an active Photon VOIP number, but only when its provider timestamp is strictly newer than the required receivedAfter boundary. receivedAfter must be an RFC 3339 timestamp between this request's arrival time and two minutes before it; once it expires, restart Meta's verification flow with a new boundary. A missing newer code is a retryable 404 with Retry-After: 2. Poll after 2, 4, 8, then 10 seconds, applying ±20% jitter and capping later intervals at 10 seconds. Stop when the original boundary is two minutes old. Responses are never cached. Requires the platforms:write permission bound to the project resource in the path.","operationId":"getWhatsappBusinessVerificationCode","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"receivedAfter","required":true,"schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse200ApplicationJson"}}},"description":"A verification code received strictly after receivedAfter. Treat it as an authentication secret.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; WHATSAPP_VERIFICATION_WINDOW_EXPIRED: WhatsApp Verification Window Expired","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp Business verification code","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/signup-config":{"get":{"description":"Returns what the browser needs to open Meta's Embedded Signup popup: the Facebook Login for Business configuration id, the Graph version to run against, and the scopes it will request. Answered in-process rather than forwarded, so the first step of onboarding survives an outage of the private service. Pass `configId` to `FB.login` as `config_id` with `response_type: 'code'` and `override_default_response_type: true`. Do NOT add a `featureType` — omitting it is what keeps the phone-number screen in the flow, and `only_waba_sharing` produces an account with no number that cannot be provisioned. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappSignupConfig","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse200ApplicationJson"}}},"description":"The parameters to launch Embedded Signup with.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp signup config","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp/assignments":{"get":{"description":"Lists the project's WhatsApp shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listWhatsappSharedLineAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"includeReleased","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse200ApplicationJson"}}},"description":"A page of WhatsApp shared line assignments.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List WhatsApp shared line assignments","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:read"]},"post":{"description":"Maps an end user's phone number onto one of the project's pooled shared WhatsApp lines, consuming a seat from the project's WhatsApp entitlement. The assigned number is allocated by the server. When an email address is supplied the user is sent an invite asynchronously; the response never reports whether that succeeded. Requires the platforms:write permission bound to the project resource in the path.","operationId":"createWhatsappSharedLineAssignment","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse201ApplicationJson"}}},"description":"The created WhatsApp shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp/assignments/{assignmentId}":{"delete":{"description":"Releases a WhatsApp shared line assignment, freeing its seat for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseWhatsappSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson"}}},"description":"The released WhatsApp shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one WhatsApp shared line assignment. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse200ApplicationJson"}}},"description":"The WhatsApp shared line assignment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp/dedicated":{"post":{"description":"Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent.","operationId":"provisionWhatsappDedicatedLine","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse202ApplicationJson"}}},"description":"The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Provision dedicated WhatsApp line","tags":["Dedicated WhatsApp lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp/dedicated/{resourceId}":{"delete":{"description":"Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure.","operationId":"releaseWhatsappDedicatedLine","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse200ApplicationJson"}}},"description":"The WhatsApp ability and its charge period were removed.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse202ApplicationJson"}}},"description":"The removal is still running. GET the Location after the Retry-After interval.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release dedicated WhatsApp line","tags":["Dedicated WhatsApp lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{projectId}":{"delete":{"description":"Starts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation.","operationId":"deleteProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse200ApplicationJson"}}},"description":"The deleted project tombstone.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Delete a project","tags":["Projects"],"x-required-permissions":["project:delete"]},"get":{"description":"Returns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses.","operationId":"getProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse200ApplicationJson"}}},"description":"The requested project.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a project","tags":["Projects"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header.","operationId":"updateProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse200ApplicationJson"}}},"description":"The updated project.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Update a project","tags":["Projects"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile":{"get":{"description":"Returns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar.","operationId":"getAgentProfile","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse200ApplicationJson"}}},"description":"The Project's agent profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get an agent profile","tags":["Agent Profile"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header.","operationId":"updateAgentProfile","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse200ApplicationJson"}}},"description":"The updated agent profile.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update an agent profile","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile/avatar":{"delete":{"description":"Replaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header.","operationId":"resetAgentProfileAvatar","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse200ApplicationJson"}}},"description":"The agent profile reset to the default avatar.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Reset an agent avatar","tags":["Agent Profile"],"x-required-permissions":["project:write"]},"put":{"description":"Commits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile.","operationId":"commitAgentProfileAvatar","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse200ApplicationJson"}}},"description":"The agent profile with its committed avatar.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Commit an agent avatar","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile/avatar/uploads":{"post":{"description":"Creates a ten-minute, Project-bound presigned S3 POST for a JPEG, PNG, or WebP agent avatar up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAgentProfileAvatar with the returned uploadId. Do not cache or log the upload URL or form fields.","operationId":"createAgentProfileAvatarUpload","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse201ApplicationJson"}}},"description":"A short-lived, project-bound presigned S3 POST.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create an agent avatar upload","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/api-keys":{"get":{"operationId":"listProjectApiKeys","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse200ApplicationJson"}}},"description":"Every live key on the project, newest first. Never includes secrets.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"List project API keys","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]},"post":{"description":"Creates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header.","operationId":"createProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse201ApplicationJson"}}},"description":"The created key, with its secret. The secret is shown only here and cannot be recovered afterwards.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse409ApplicationProblemPlusJson"}}},"description":"API_KEY_LIMIT_REACHED: API Key Limit Reached","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Create a project API key","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]}},"/v1/projects/{projectId}/api-keys/{apiKeyId}":{"delete":{"description":"Revokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header.","operationId":"revokeProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"apiKeyId","required":true,"schema":{"type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse200ApplicationJson"}}},"description":"The revoked key. Repeating the delete returns the same revokedAt.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Delete a project API key","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]},"patch":{"description":"Replaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header.","operationId":"updateProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"apiKeyId","required":true,"schema":{"type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse200ApplicationJson"}}},"description":"The key with its new permission list. Sending the list it already holds returns it unchanged.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse400ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse404ApplicationProblemPlusJson"}}},"description":"PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse409ApplicationProblemPlusJson"}}},"description":"API_KEY_REVOKED: API Key Revoked","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse410ApplicationProblemPlusJson"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse413ApplicationProblemPlusJson"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]}],"summary":"Update a project API key's permissions","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]}},"/v1/projects/{projectId}/billing":{"get":{"description":"Returns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview.","operationId":"getBillingOverview","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse200ApplicationJson"}}},"description":"Plan, entitlements, and current-period usage.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"Get the project's billing overview","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/billing/operations/{operationId}":{"get":{"description":"Returns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed.","operationId":"getBillingOperation","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}},{"description":"Operation id returned by a purchase or quantity change.","in":"path","name":"operationId","required":true,"schema":{"pattern":"^pho_bop_.*","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse200ApplicationJson"}}},"description":"Authoritative recovery snapshot for a billing operation.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse404ApplicationProblemPlusJson"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"Get a billing operation snapshot","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/billing/plans":{"get":{"description":"Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan.","operationId":"listBillingPlans","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse200ApplicationJson"}}},"description":"Billing plans grouped by their public plan-metadata type.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse409ApplicationProblemPlusJson"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse422ApplicationProblemPlusJson"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse500ApplicationProblemPlusJson"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse504ApplicationProblemPlusJson"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"List billing plans available to a project","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/metrics/backfill":{"get":{"description":"Returns historical metrics update progress. Completion reflects lastVerifiedAt; queries remain available during updates.","operationId":"getMessageMetricsBackfill","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillResponse200ApplicationJson"}}},"description":"Project-scoped backfill progress.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Get Metrics historical backfill status","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/metrics/query":{"get":{"description":"Returns the message_events SQL schema, supported queries, and limits for the selected API version.","operationId":"getMessageMetricsSqlSchema","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsSqlSchemaResponse200ApplicationJson"}}},"description":"The Project-scoped SQL surface of the resolved contracts date.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Get messaging and voice metrics SQL schema","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]},"post":{"description":"Runs read-only SQL over the Project's message_events table. Get the SQL schema for supported columns, capabilities, and limits.","operationId":"queryMessageMetrics","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClickHouseSqlQueryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse200ApplicationJson"}}},"description":"Dynamic SQL columns and rows followed by bounded ClickHouse read statistics.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse422ApplicationProblemPlusJson"}}},"description":"QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Query messaging and voice metrics with SQL","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/api-versions":{"get":{"description":"Lists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body.","operationId":"listWebhookApiVersions","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse200ApplicationJson"}}},"description":"Published webhook payload API versions.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook API versions","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/destinations":{"get":{"description":"Returns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets.","operationId":"listWebhookDestinations","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"maxLength":2048,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse200ApplicationJson"}}},"description":"One page of active webhook destinations.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook destinations","tags":["Webhook Destinations"],"x-required-permissions":["project:read"]},"post":{"description":"Creates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header.","operationId":"createWebhookDestination","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationRequestApplicationJson"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse201ApplicationJson"}}},"description":"The created destination and its one-time signing secret.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create a webhook destination","tags":["Webhook Destinations"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/destinations/{destinationId}":{"delete":{"description":"Deletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update.","operationId":"deleteWebhookDestination","parameters":[{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse200ApplicationJson"}}},"description":"The stable webhook destination tombstone.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse404ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Delete a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:write"]},"get":{"description":"Returns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created.","operationId":"getWebhookDestination","parameters":[{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse200ApplicationJson"}}},"description":"The requested webhook destination.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse404ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse410ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header.","operationId":"updateWebhookDestination","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse200ApplicationJson"}}},"description":"The updated webhook destination.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse404ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse410ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/destinations/{destinationId}/secret-rotations":{"post":{"description":"Rotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header.","operationId":"rotateWebhookSigningSecret","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretRequestApplicationJson"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse200ApplicationJson"}}},"description":"A new one-time signing secret.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Rotate a webhook signing secret","tags":["Webhook Destinations"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/egress-addresses":{"get":{"description":"Returns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses.","operationId":"listWebhookEgressAddresses","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookEgressAddressesResponse200ApplicationJson"}}},"description":"The public addresses webhook deliveries originate from in this environment.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_UPSTREAM_UNAVAILABLE_503"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"List webhook egress addresses","tags":["Webhook Delivery"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/event-types":{"get":{"description":"Lists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body.","operationId":"listWebhookEventTypes","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"query","name":"apiVersion","required":true,"schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse200ApplicationJson"}}},"description":"Events available in the selected API version.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook event types","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/event-types/{eventType}/schema":{"get":{"description":"Returns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected.","operationId":"getWebhookEventSchema","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"eventType","required":true,"schema":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"}},{"in":"query","name":"apiVersion","required":true,"schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/schema+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson"}}},"description":"The published reader JSON Schema for the event.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse400ApplicationProblemPlusJson"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_NOT_AUTHENTICATED_401"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse403ApplicationProblemPlusJson"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhotonProblem_INTERNAL_ERROR_500"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse502ApplicationProblemPlusJson"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse503ApplicationProblemPlusJson"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaResponse504ApplicationProblemPlusJson"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"description":"Structured date indicating that the operation is deprecated.","schema":{"type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"HTTP date after which the operation may become unavailable.","schema":{"format":"date-time","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a webhook event schema","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}}},"servers":[{"url":"https://api.photon.codes"}]} +{"components":{"headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}},"schemas":{"Account":{"additionalProperties":{},"properties":{"accountId":{"type":"string"},"createdAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"deletedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"email":{"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"phoneVerifiedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"pictureUrl":{"format":"uri","type":"string"},"updatedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["accountId","createdAt","deletedAt","email","firstName","lastName","phoneNumber","phoneVerifiedAt","pictureUrl","updatedAt"],"type":"object"},"AccountDeletedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ACCOUNT_DELETED","status":410,"title":"Account Deleted","type":"https://photon.codes/docs/problems/account-deleted"},"properties":{"code":{"const":"ACCOUNT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Account Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AccountNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ACCOUNT_NOT_FOUND","status":404,"title":"Account Not Found","type":"https://photon.codes/docs/problems/account-not-found"},"properties":{"code":{"const":"ACCOUNT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AccountOwnsOrganizationsProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ACCOUNT_OWNS_ORGANIZATIONS","status":409,"title":"Account Owns Organizations","type":"https://photon.codes/docs/problems/account-owns-organizations"},"properties":{"code":{"const":"ACCOUNT_OWNS_ORGANIZATIONS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Account Owns Organizations","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-owns-organizations","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AccountServiceKey":{"additionalProperties":false,"properties":{"accountId":{"type":"string"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"expiresAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"revokedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"serviceKeyId":{"type":"string"}},"required":["accountId","createdAt","expiresAt","name","revokedAt","serviceKeyId"],"type":"object"},"AccountServiceKeyLimitReachedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ACCOUNT_SERVICE_KEY_LIMIT_REACHED","status":409,"title":"Account Service Key Limit Reached","type":"https://photon.codes/docs/problems/account-service-key-limit-reached"},"properties":{"code":{"const":"ACCOUNT_SERVICE_KEY_LIMIT_REACHED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Account Service Key Limit Reached","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-service-key-limit-reached","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AccountServiceKeyNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ACCOUNT_SERVICE_KEY_NOT_FOUND","status":404,"title":"Account Service Key Not Found","type":"https://photon.codes/docs/problems/account-service-key-not-found"},"properties":{"code":{"const":"ACCOUNT_SERVICE_KEY_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Account Service Key Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/account-service-key-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AgentProfile":{"additionalProperties":false,"properties":{"avatarUrl":{"format":"uri","type":"string"},"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["avatarUrl","firstName","lastName"],"type":"object"},"AgentProfileAvatarContentType":{"enum":["image/jpeg","image/png","image/webp"],"type":"string"},"AgentProfileAvatarUpload":{"additionalProperties":false,"properties":{"expiresAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"formFields":{"$ref":"#/components/schemas/AgentProfileAvatarUploadFormFields"},"uploadId":{"type":"string"},"uploadUrl":{"format":"uri","type":"string"}},"required":["expiresAt","formFields","uploadId","uploadUrl"],"type":"object"},"AgentProfileAvatarUploadFormFields":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"AllWebhookEvents":{"prefixItems":[{"$ref":"#/components/schemas/WebhookEventWildcard"}],"type":"array"},"ApiKey":{"additionalProperties":false,"properties":{"apiKeyId":{"type":"string"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"type":"string"},"expiresAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"permissions":{"items":{"description":"Permission wire value. Known values: events:read, events:write, platforms:read, platforms:write, project:read, project:write. Additional values may be returned; preserve unrecognized values.","type":"string"},"type":"array"},"permissionsUpdatedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"projectId":{"type":"string"},"revokedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]}},"required":["apiKeyId","createdAt","createdByAccountId","expiresAt","name","permissions","permissionsUpdatedAt","projectId","revokedAt"],"type":"object"},"ApiKeyLimitReachedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"API_KEY_LIMIT_REACHED","status":409,"title":"API Key Limit Reached","type":"https://photon.codes/docs/problems/api-key-limit-reached"},"properties":{"code":{"const":"API_KEY_LIMIT_REACHED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"API Key Limit Reached","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-limit-reached","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ApiKeyNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"API_KEY_NOT_FOUND","status":404,"title":"API Key Not Found","type":"https://photon.codes/docs/problems/api-key-not-found"},"properties":{"code":{"const":"API_KEY_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"API Key Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ApiKeyPermission":{"enum":["events:read","events:write","platforms:read","platforms:write","project:read","project:write"],"type":"string"},"ApiKeyRevokedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"API_KEY_REVOKED","status":409,"title":"API Key Revoked","type":"https://photon.codes/docs/problems/api-key-revoked"},"properties":{"code":{"const":"API_KEY_REVOKED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"API Key Revoked","type":"string"},"type":{"const":"https://photon.codes/docs/problems/api-key-revoked","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AppInstallationAssertionInvalidProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"APP_INSTALLATION_ASSERTION_INVALID","status":401,"title":"Invalid Installation Client Assertion","type":"https://photon.codes/docs/problems/app-installation-assertion-invalid"},"properties":{"code":{"const":"APP_INSTALLATION_ASSERTION_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":401,"type":"number"},"title":{"const":"Invalid Installation Client Assertion","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-assertion-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AppInstallationAssertionReplayedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"APP_INSTALLATION_ASSERTION_REPLAYED","status":409,"title":"Installation Assertion Already Used","type":"https://photon.codes/docs/problems/app-installation-assertion-replayed"},"properties":{"code":{"const":"APP_INSTALLATION_ASSERTION_REPLAYED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation Assertion Already Used","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-assertion-replayed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AppInstallationConfigChangedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"APP_INSTALLATION_CONFIG_CHANGED","status":409,"title":"Installation App Configuration Changed","type":"https://photon.codes/docs/problems/app-installation-config-changed"},"properties":{"code":{"const":"APP_INSTALLATION_CONFIG_CHANGED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation App Configuration Changed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-config-changed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AppInstallationDeliveryUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"APP_INSTALLATION_DELIVERY_UNAVAILABLE","status":409,"title":"Installation Delivery Unavailable","type":"https://photon.codes/docs/problems/app-installation-delivery-unavailable"},"properties":{"code":{"const":"APP_INSTALLATION_DELIVERY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Installation Delivery Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/app-installation-delivery-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignSmsLineCampaignBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignInvalidRequestProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"AssignSmsLineCampaignConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/SmsLineUnsupportedProblem"},{"$ref":"#/components/schemas/SmsCampaignNotReadyProblem"},{"$ref":"#/components/schemas/SmsCampaignVersionConflictProblem"},{"$ref":"#/components/schemas/SmsCampaignCapacityExceededProblem"},{"$ref":"#/components/schemas/SmsCampaignReconciliationRequiredProblem"},{"$ref":"#/components/schemas/SmsCampaignMutationInProgressProblem"}]},"AssignSmsLineCampaignForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"},{"$ref":"#/components/schemas/SmsCampaignOrganizationMismatchProblem"}]},"AssignSmsLineCampaignGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"AssignSmsLineCampaignInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"AssignSmsLineCampaignNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignNotFoundProblem"},{"$ref":"#/components/schemas/SmsLineNotFoundProblem"}]},"AssignSmsLineCampaignRequest":{"additionalProperties":false,"properties":{"campaignId":{"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["campaignId","expectedVersion"],"type":"object"},"AssignSmsLineCampaignServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignContextUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"AssignVoiceLineProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceDefaultProfileAssignmentForbiddenProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"}]},"AssignVoiceLineProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"AssignVoiceLineProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"AssignVoiceLineProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"AssignVoiceLineProfileNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/ResourceNotFoundProblem"},{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}]},"AssignVoiceLineProfileRequest":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"profileId":{"type":"string"}},"required":["expectedVersion","profileId"],"type":"object"},"AssignmentExistsProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ASSIGNMENT_EXISTS","status":409,"title":"Assignment Exists","type":"https://photon.codes/docs/problems/assignment-exists"},"properties":{"code":{"const":"ASSIGNMENT_EXISTS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment Exists","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-exists","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AssignmentNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ASSIGNMENT_NOT_FOUND","status":404,"title":"Assignment Not Found","type":"https://photon.codes/docs/problems/assignment-not-found"},"properties":{"code":{"const":"ASSIGNMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Assignment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/assignment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"Attachment":{"additionalProperties":false,"properties":{"contentType":{"pattern":"^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+$","type":"string"},"createdAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"},"filename":{"minLength":1,"type":"string"},"id":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"metadata":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"sizeBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$","type":"string"}},"required":["contentType","createdAt","id","projectId","sizeBytes","updatedAt"],"type":"object"},"AttachmentConflictProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ATTACHMENT_CONFLICT","status":409,"title":"Attachment Conflict","type":"https://photon.codes/docs/problems/attachment-conflict"},"properties":{"code":{"const":"ATTACHMENT_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AttachmentNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ATTACHMENT_NOT_FOUND","status":404,"title":"Attachment Not Found","type":"https://photon.codes/docs/problems/attachment-not-found"},"properties":{"code":{"const":"ATTACHMENT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Attachment Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AttachmentNotReadyProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ATTACHMENT_NOT_READY","status":409,"title":"Attachment Not Ready","type":"https://photon.codes/docs/problems/attachment-not-ready"},"properties":{"code":{"const":"ATTACHMENT_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AttachmentNotReadyRetryAfter":{"enum":["5"],"type":"string"},"AttachmentPage":{"additionalProperties":false,"properties":{"items":{"items":{"$ref":"#/components/schemas/Attachment"},"type":"array"},"nextPageToken":{"description":"Continue with this token, even if items is empty. Omitted when no more pages remain.","maxLength":4096,"minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$","type":"string"}},"required":["items"],"type":"object"},"AttachmentUploadNotReadyProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ATTACHMENT_UPLOAD_NOT_READY","status":409,"title":"Attachment Upload Not Ready","type":"https://photon.codes/docs/problems/attachment-upload-not-ready"},"properties":{"code":{"const":"ATTACHMENT_UPLOAD_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Attachment Upload Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/attachment-upload-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},"AuthorizedApplication":{"additionalProperties":{},"properties":{"application":{"$ref":"#/components/schemas/AuthorizedOAuthApplication"},"authorizationId":{"description":"Identifier of the user's authorization grant for this application.","type":"string"},"grantedScopes":{"description":"OAuth scope slugs the user has granted to this application.","items":{"description":"Granted OAuth scope slug.","type":"string"},"type":"array"},"oauthResource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"OAuth resource associated with the grant, or null when no resource is specified."}},"required":["application","authorizationId","grantedScopes","oauthResource"],"type":"object"},"AuthorizedOAuthApplication":{"additionalProperties":{},"description":"The OAuth application authorized by the authenticated user.","properties":{"applicationType":{"description":"OAuth application type reported by the authorization server.","type":"string"},"clientId":{"description":"OAuth client identifier used by the application in authorization requests.","type":"string"},"createdAt":{"description":"UTC timestamp when the application was created, in RFC 3339 format.","example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Application description, or null when no description is set."},"id":{"description":"Application identifier to pass as applicationId when revoking this application's grant.","type":"string"},"isFirstParty":{"description":"Whether the application is classified as first-party by the authorization server.","type":"boolean"},"name":{"description":"Display name of the authorized application.","type":"string"},"redirectUris":{"description":"Registered OAuth callback URLs for the application.","items":{"$ref":"#/components/schemas/AuthorizedOAuthApplicationRedirectUri"},"type":"array"},"scopes":{"description":"OAuth scope slugs configured for the application; grantedScopes records what the user authorized.","items":{"description":"OAuth scope slug.","type":"string"},"type":"array"},"updatedAt":{"description":"UTC timestamp when the application was last updated, in RFC 3339 format.","example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"usesPkce":{"description":"Whether the application uses Proof Key for Code Exchange (PKCE).","type":"boolean"}},"required":["applicationType","clientId","createdAt","description","id","isFirstParty","name","redirectUris","scopes","updatedAt","usesPkce"],"type":"object"},"AuthorizedOAuthApplicationRedirectUri":{"additionalProperties":{},"properties":{"default":{"description":"Whether this is the application's default redirect URI.","type":"boolean"},"uri":{"description":"Registered OAuth callback URL for the application.","type":"string"}},"required":["default","uri"],"type":"object"},"AvailableProjectSlug":{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"slug":{"type":"string"}},"required":["available","slug"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceDefaultProfileAssignmentForbiddenProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"}]},"BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/ResourceNotFoundProblem"},{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}]},"BatchUpdateVoiceLineProfileAssignmentsRequest":{"additionalProperties":false,"properties":{"updates":{"items":{"$ref":"#/components/schemas/VoiceLineProfileAssignmentUpdate"},"maxItems":100,"minItems":1,"type":"array"}},"required":["updates"],"type":"object"},"BatchUpdateVoiceLineProfileAssignmentsResponse":{"additionalProperties":false,"properties":{"assignments":{"items":{"$ref":"#/components/schemas/VoiceLineProfileAssignment"},"type":"array"}},"required":["assignments"],"type":"object"},"BeginInvitationSsoBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"BeginInvitationSsoForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"BeginInvitationSsoGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"BeginInvitationSsoInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"BeginInvitationSsoPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"BeginInvitationSsoRequest":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"},"token":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"}},"required":["token","returnTo"],"type":"object"},"BeginOrganizationAuthenticationBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"BeginOrganizationAuthenticationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"BeginOrganizationAuthenticationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"BeginOrganizationAuthenticationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"BeginOrganizationAuthenticationPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"BeginOrganizationClosureAuthenticationBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"BeginOrganizationClosureAuthenticationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"BeginOrganizationClosureAuthenticationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"BeginOrganizationClosureAuthenticationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"BeginOrganizationClosureAuthenticationPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"BeginOrganizationSsoAdmissionBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"BeginOrganizationSsoAdmissionForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"BeginOrganizationSsoAdmissionGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"BeginOrganizationSsoAdmissionInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"BeginOrganizationSsoAdmissionPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"BillingNotProvisionedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"BILLING_NOT_PROVISIONED","status":503,"title":"Billing Not Provisioned","type":"https://photon.codes/docs/problems/billing-not-provisioned"},"properties":{"code":{"const":"BILLING_NOT_PROVISIONED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Billing Not Provisioned","type":"string"},"type":{"const":"https://photon.codes/docs/problems/billing-not-provisioned","type":"string"}},"required":["code","status","title","type"],"type":"object"},"BillingOperation":{"description":"Authoritative provisioning state. Poll the operation route while pending.","oneOf":[{"$ref":"#/components/schemas/PendingBillingOperation"},{"$ref":"#/components/schemas/SucceededBillingOperation"},{"$ref":"#/components/schemas/FailedBillingOperation"}]},"BillingOperationFailure":{"additionalProperties":false,"properties":{"code":{"$ref":"#/components/schemas/BillingOperationFailureCode"},"detail":{"anyOf":[{"$ref":"#/components/schemas/BillingOperationFailureDetail"},{"type":"null"}]},"retryable":{"type":"boolean"}},"required":["code","detail","retryable"],"type":"object"},"BillingOperationFailureCode":{"description":"Stable provider-neutral failure category.","enum":["payment_method_required","payment_failed","not_provisioned","invalid_target","internal"],"type":"string"},"BillingOperationFailureDetail":{"enum":["cancellation_scheduled","feature_not_sold_by_plan","feature_not_found","payment_timeout","plan_activation_timeout","plan_not_found","quantity_out_of_range","target_rejected"],"type":"string"},"BillingOperationKind":{"enum":["change_plan","adjust_fixed_charge_quantity"],"type":"string"},"BillingOperationResult":{"additionalProperties":false,"properties":{"type":{"const":"version","type":"string"},"version":{"type":"string"}},"required":["type","version"],"type":"object"},"BillingPlan":{"additionalProperties":false,"properties":{"baseAmountCents":{"description":"Recurring base price in whole cents.","maximum":9007199254740991,"minimum":0,"type":"integer"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currency":{"description":"ISO currency code.","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"entitlements":{"items":{"$ref":"#/components/schemas/BillingPlanEntitlement"},"type":"array"},"fixedCharges":{"items":{"$ref":"#/components/schemas/FixedCharge"},"type":"array"},"interval":{"$ref":"#/components/schemas/BillingPlanInterval"},"name":{"type":"string"},"payInAdvance":{"type":"boolean"},"planCode":{"maxLength":64,"minLength":1,"type":"string"},"usageCharges":{"items":{"$ref":"#/components/schemas/UsageCharge"},"type":"array"}},"required":["baseAmountCents","currency","description","entitlements","fixedCharges","interval","name","payInAdvance","planCode","usageCharges"],"type":"object"},"BillingPlanEntitlement":{"additionalProperties":false,"properties":{"featureKey":{"type":"string"},"value":{"type":"string"}},"required":["featureKey","value"],"type":"object"},"BillingPlanInterval":{"enum":["weekly","monthly","quarterly","semiannual","yearly"],"type":"string"},"CancelOperationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CancelOperationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CancelOperationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CancelSubscriptionBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CancelSubscriptionConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/FailedPreconditionProblem"},{"$ref":"#/components/schemas/IdempotencyRequestInProgressProblem"}]},"CancelSubscriptionForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CancelSubscriptionGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CancelSubscriptionInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CancelSubscriptionRequest":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["category"],"type":"object"},"CancelSubscriptionResponse":{"additionalProperties":false,"properties":{"cancellationScheduled":{"description":"False when the category held no active subscription.","type":"boolean"},"cancelsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End of the final paid period, ISO 8601."},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["cancellationScheduled","cancelsAt","category"],"type":"object"},"CancelSubscriptionServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"CancelSubscriptionUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CaptchaProvider":{"enum":["turnstile","hcaptcha"],"type":"string"},"CaptchaRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"challengeContext":"example-challenge-context","code":"CAPTCHA_REQUIRED","provider":"turnstile","siteKey":"example-site-key","status":403,"title":"Captcha Required","type":"https://photon.codes/docs/problems/captcha-required"},"properties":{"challengeContext":{"type":"string"},"code":{"const":"CAPTCHA_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"provider":{"$ref":"#/components/schemas/CaptchaProvider"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"siteKey":{"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Captcha Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/captcha-required","type":"string"}},"required":["challengeContext","provider","siteKey","code","status","title","type"],"type":"object"},"ChangePlanBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ChangePlanConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/FailedPreconditionProblem"},{"$ref":"#/components/schemas/IdempotencyRequestInProgressProblem"}]},"ChangePlanForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ChangePlanGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ChangePlanInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ChangePlanRequest":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"planCode":{"description":"Plan to subscribe to, e.g. analytics_pro.","maxLength":64,"minLength":1,"type":"string"}},"required":["category","planCode"],"type":"object"},"ChangePlanServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ChangePlanUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CheckProjectSlugAvailabilityForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CheckProjectSlugAvailabilityGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CheckProjectSlugAvailabilityResponse":{"oneOf":[{"$ref":"#/components/schemas/AvailableProjectSlug"},{"$ref":"#/components/schemas/UnavailableProjectSlug"}]},"ClickHouseSqlQueryRequest":{"additionalProperties":false,"properties":{"parameters":{"additionalProperties":{"maxLength":16384,"type":"string"},"propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]{0,63}$","type":"string"},"type":"object"},"sql":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["sql"],"type":"object"},"CommitAccountProfilePictureBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"CommitAccountProfilePictureForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CommitAccountProfilePictureGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CommitAccountProfilePictureInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CommitAccountProfilePictureRequest":{"additionalProperties":false,"properties":{"uploadId":{"pattern":"^pho_upl_[0-9a-z]{26}$","type":"string"}},"required":["uploadId"],"type":"object"},"CommitAccountProfilePictureUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"CommitAgentProfileAvatarBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"CommitAgentProfileAvatarForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CommitAgentProfileAvatarGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CommitAgentProfileAvatarRequest":{"additionalProperties":false,"properties":{"uploadId":{"type":"string"}},"required":["uploadId"],"type":"object"},"CommitAgentProfileAvatarUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"ConfigureVoiceProfileOutboundBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ConfigureVoiceProfileOutboundConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"},{"$ref":"#/components/schemas/VoiceOutboundConfiguredProblem"}]},"ConfigureVoiceProfileOutboundForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ConfigureVoiceProfileOutboundGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ConfigureVoiceProfileOutboundInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ConfigureVoiceProfileOutboundRequest":{"additionalProperties":false,"properties":{"authentication":{"$ref":"#/components/schemas/SipOutboundAuthenticationPolicy"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["authentication","expectedVersion"],"type":"object"},"ConfigureVoiceProfileOutboundResponse":{"additionalProperties":false,"properties":{"outbound":{"$ref":"#/components/schemas/SipOutboundConfiguration"},"password":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","password","profileVersion"],"type":"object"},"ConfigureVoiceProfileOutboundUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"ConfirmAccountPhoneVerificationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ConfirmAccountPhoneVerificationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ConfirmAccountPhoneVerificationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ConfirmAccountPhoneVerificationRequest":{"additionalProperties":false,"properties":{"code":{"pattern":"^\\d{6}$","type":"string"},"phoneNumber":{"pattern":"^[+\\d][\\d\\s().-]{6,24}$","type":"string"}},"required":["code","phoneNumber"],"type":"object"},"ConnectEmailDomainBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ConnectEmailDomainConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/EmailDomainAlreadyConnectedProblem"},{"$ref":"#/components/schemas/EmailDomainCapExceededProblem"}]},"ConnectEmailDomainForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ConnectEmailDomainGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ConnectEmailDomainInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ConnectEmailDomainRequest":{"additionalProperties":false,"properties":{"domain":{"type":"string"}},"required":["domain"],"type":"object"},"ConnectEmailDomainServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ConnectEmailDomainUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"ConnectTelegramBotBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ConnectTelegramBotConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/TelegramProjectDeletedProblem"},{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/TelegramProvisionInProgressProblem"}]},"ConnectTelegramBotForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ConnectTelegramBotGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ConnectTelegramBotInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ConnectTelegramBotRequest":{"additionalProperties":false,"properties":{},"type":"object"},"ConnectTelegramBotUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"ConnectWhatsappBusinessBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ConnectWhatsappBusinessForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ConnectWhatsappBusinessGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ConnectWhatsappBusinessInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ConnectWhatsappBusinessRequest":{"additionalProperties":false,"properties":{"code":{"maxLength":1024,"minLength":1,"type":"string"},"phoneNumberId":{"maxLength":64,"minLength":1,"type":"string"},"wabaId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["code","phoneNumberId","wabaId"],"type":"object"},"ConnectWhatsappBusinessServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ConnectWhatsappBusinessUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CountProjectsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CountProjectsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateAccountProfilePictureUploadForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateAccountProfilePictureUploadGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateAccountProfilePictureUploadInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateAccountServiceKeyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"CreateAccountServiceKeyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateAccountServiceKeyGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateAccountServiceKeyInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateAccountServiceKeyRequest":{"additionalProperties":false,"properties":{"expiresAt":{"example":"2030-01-01T00:00:00Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"name":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"CreateAccountServiceKeyResponse":{"additionalProperties":false,"properties":{"secret":{"type":"string"},"serviceKey":{"$ref":"#/components/schemas/AccountServiceKey"}},"required":["secret","serviceKey"],"type":"object"},"CreateAccountServiceKeyUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"CreateAgentProfileAvatarUploadForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateAgentProfileAvatarUploadGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateAgentProfileAvatarUploadRequest":{"additionalProperties":false,"properties":{"contentType":{"$ref":"#/components/schemas/AgentProfileAvatarContentType"}},"required":["contentType"],"type":"object"},"CreateAppInstallationRequestConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/AppInstallationAssertionReplayedProblem"},{"$ref":"#/components/schemas/AppInstallationConfigChangedProblem"}]},"CreateAppInstallationRequestGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateAppInstallationRequestRequest":{"additionalProperties":false,"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"clientAssertion":{"maxLength":16384,"minLength":1,"type":"string"},"redirectUri":{"maxLength":4096,"type":"string"},"state":{"maxLength":4096,"type":"string"}},"required":["appId","clientAssertion","redirectUri","state"],"type":"object"},"CreateAppInstallationRequestResponse":{"additionalProperties":{},"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"appVersion":{"pattern":"^[1-9][0-9]*$","type":"string"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"redirectUri":{"maxLength":4096,"type":"string"},"requestId":{"pattern":"^pho_air_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"state":{"maxLength":4096,"type":"string"}},"required":["requestId","appId","appVersion","redirectUri","state","createdAt"],"type":"object"},"CreateDefaultVoiceProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceDefaultProfileExistsProblem"}]},"CreateDefaultVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateDefaultVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateDefaultVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateDefaultVoiceProfileRequest":{"additionalProperties":false,"properties":{"mediaEncryption":{"$ref":"#/components/schemas/VoiceProfileMediaEncryption"},"protocol":{"const":"sip","type":"string"}},"required":["protocol"],"type":"object"},"CreateOrganizationPaymentMethodCheckoutBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CreateOrganizationPaymentMethodCheckoutForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateOrganizationPaymentMethodCheckoutResponse":{"additionalProperties":false,"properties":{"checkoutUrl":{"description":"Hosted Stripe page; send the user here.","format":"uri","type":"string"}},"required":["checkoutUrl"],"type":"object"},"CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/PaymentProviderNotReadyProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateOrganizationSetupIntentBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CreateOrganizationSetupIntentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateOrganizationSetupIntentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateOrganizationSetupIntentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateOrganizationSetupIntentResponse":{"additionalProperties":false,"properties":{"clientSecret":{"description":"Stripe SetupIntent client secret.","minLength":1,"type":"string"},"publishableKey":{"description":"Publishable key for the Stripe account backing billing.","pattern":"^pk_.*","type":"string"}},"required":["clientSecret","publishableKey"],"type":"object"},"CreateOrganizationSetupIntentUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateOrganizationSsoPortalLinkBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"CreateOrganizationSsoPortalLinkForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"CreateOrganizationSsoPortalLinkGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateOrganizationSsoPortalLinkInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateOrganizationSsoPortalLinkPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"CreateOrganizationSsoPortalLinkRequest":{"additionalProperties":false,"properties":{"intent":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkRequestIntent"},"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"CreateOrganizationSsoPortalLinkRequestIntent":{"default":"sso","enum":["sso","domain_verification"],"type":"string"},"CreateOrganizationSsoPortalLinkResponse":{"additionalProperties":{},"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"CreateProjectApiKeyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"CreateProjectApiKeyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateProjectApiKeyRequest":{"additionalProperties":false,"example":{"name":"Example key","permissions":["project:read"]},"properties":{"expiresAt":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"name":{"maxLength":128,"minLength":1,"type":"string"},"permissions":{"items":{"$ref":"#/components/schemas/ApiKeyPermission"},"minItems":1,"type":"array"}},"required":["name","permissions"],"type":"object"},"CreateProjectApiKeyResponse":{"additionalProperties":false,"properties":{"apiKey":{"$ref":"#/components/schemas/ApiKey"},"secret":{"type":"string"}},"required":["apiKey","secret"],"type":"object"},"CreateProjectApiKeyUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateProjectBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"CreateProjectForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateProjectGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"CreateProjectRequest":{"additionalProperties":false,"properties":{"name":{"maxLength":256,"minLength":1,"type":"string"},"slug":{"maxLength":63,"minLength":3,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"}},"required":["name","slug"],"type":"object"},"CreateProjectUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateSharedLineAssignmentBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CreateSharedLineAssignmentConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/ImessageModeDedicatedProblem"},{"$ref":"#/components/schemas/SharedLineCapExceededProblem"},{"$ref":"#/components/schemas/AssignmentExistsProblem"}]},"CreateSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateSharedLineAssignmentRequest":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"maxLength":100,"minLength":1,"type":"string"},"handle":{"$ref":"#/components/schemas/ImessageHandle"},"lastName":{"maxLength":100,"minLength":1,"type":"string"}},"required":["handle"],"type":"object"},"CreateSharedLineAssignmentServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/SharedLinePoolExhaustedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"CreateSharedLineAssignmentUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateVoiceProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceDefaultProfileRequiredProblem"}]},"CreateVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateVoiceProfileRequest":{"additionalProperties":false,"properties":{"mediaEncryption":{"$ref":"#/components/schemas/VoiceProfileMediaEncryption"},"name":{"maxLength":100,"minLength":1,"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["name","protocol"],"type":"object"},"CreateWebhookDestinationBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"CreateWebhookDestinationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateWebhookDestinationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateWebhookDestinationRequest":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"description":{"maxLength":1000,"type":"string"},"enabledEvents":{"$ref":"#/components/schemas/WebhookEventSelection"},"name":{"maxLength":256,"minLength":1,"type":"string"},"status":{"$ref":"#/components/schemas/WebhookDestinationStatus","default":"enabled"},"url":{"description":"HTTPS URL without credentials or a fragment.","format":"uri","maxLength":2048,"minLength":1,"type":"string"}},"required":["apiVersion","enabledEvents","name","url"],"type":"object"},"CreateWebhookDestinationResponse":{"additionalProperties":false,"properties":{"destination":{"$ref":"#/components/schemas/WebhookDestination"},"signingSecret":{"pattern":"^whsec_.*","type":"string"}},"required":["destination","signingSecret"],"type":"object"},"CreateWebhookDestinationUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateWhatsappSharedLineAssignmentBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CreateWhatsappSharedLineAssignmentConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/WhatsappModeDedicatedProblem"},{"$ref":"#/components/schemas/SharedLineCapExceededProblem"},{"$ref":"#/components/schemas/AssignmentExistsProblem"}]},"CreateWhatsappSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateWhatsappSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateWhatsappSharedLineAssignmentRequest":{"additionalProperties":false,"properties":{"email":{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"firstName":{"maxLength":100,"minLength":1,"type":"string"},"handle":{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},"lastName":{"maxLength":100,"minLength":1,"type":"string"}},"required":["handle"],"type":"object"},"CreateWhatsappSharedLineAssignmentServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/SharedLinePoolExhaustedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreateWhatsappVoipSenderBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"CreateWhatsappVoipSenderConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/WhatsappAccountDisconnectingProblem"},{"$ref":"#/components/schemas/WhatsappAccountProvisioningProblem"},{"$ref":"#/components/schemas/WhatsappSenderConnectedProblem"},{"$ref":"#/components/schemas/WhatsappSenderProvisioningProblem"},{"$ref":"#/components/schemas/WhatsappVoipSourceReleasingProblem"}]},"CreateWhatsappVoipSenderForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"CreateWhatsappVoipSenderGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"CreateWhatsappVoipSenderInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"CreateWhatsappVoipSenderNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/WhatsappWabaNotConnectedProblem"},{"$ref":"#/components/schemas/WhatsappVoipSourceNotEligibleProblem"}]},"CreateWhatsappVoipSenderRequest":{"additionalProperties":false,"properties":{"displayName":{"type":"string"},"voipResourceId":{"type":"string"}},"required":["voipResourceId"],"type":"object"},"CreateWhatsappVoipSenderServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"CreateWhatsappVoipSenderUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/WhatsappDisplayNameUnavailableProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"CreatedAppInstallationDelivery":{"additionalProperties":false,"properties":{"clientId":{"maxLength":256,"pattern":"^client_[A-Za-z0-9]+$","type":"string"},"clientSecret":{"maxLength":8192,"minLength":1,"type":"string"},"installationId":{"pattern":"^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"const":"created","type":"string"}},"required":["installationId","status","clientId","clientSecret"],"type":"object"},"DedicatedProjectPlatformSettings":{"additionalProperties":false,"properties":{"mode":{"const":"dedicated","type":"string"}},"required":["mode"],"type":"object"},"DeleteAccountForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteAccountGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"DeleteAccountInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DeleteProjectBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"DeleteProjectForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteProjectGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"DeleteProjectUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"DeleteVoiceProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/VoiceProfileInUseProblem"},{"$ref":"#/components/schemas/VoiceDefaultProfileDeletionForbiddenProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"}]},"DeleteVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteVoiceProfileForceInput":{"enum":["true","false"],"type":"string"},"DeleteVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"DeleteVoiceProfileInboundConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"}]},"DeleteVoiceProfileInboundForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteVoiceProfileInboundGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"DeleteVoiceProfileInboundInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DeleteVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DeleteVoiceProfileOutboundConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundNotConfiguredProblem"}]},"DeleteVoiceProfileOutboundForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteVoiceProfileOutboundGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"DeleteVoiceProfileOutboundInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DeleteVoiceProfileOutboundResponse":{"additionalProperties":false,"properties":{"outbound":{"type":"null"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","profileVersion"],"type":"object"},"DeleteWebhookDestinationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DeleteWebhookDestinationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"DeprecatedWebhookApiVersion":{"additionalProperties":false,"properties":{"retirement":{"$ref":"#/components/schemas/WebhookApiVersionRetirement"},"selectable":{"const":false,"type":"boolean"},"status":{"const":"deprecated","type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["retirement","successor","selectable","status","version"],"type":"object"},"DeprecatedWebhookEventCatalog":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"events":{"items":{"$ref":"#/components/schemas/WebhookEventType"},"type":"array"},"packageVersion":{"minLength":1,"type":"string"},"retirement":{"$ref":"#/components/schemas/WebhookApiVersionRetirement"},"selectable":{"const":false,"type":"boolean"},"status":{"const":"deprecated","type":"string"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]}},"required":["retirement","successor","selectable","status","contractNamespace","packageVersion","apiVersion","events"],"type":"object"},"DeviceAuthorizeResponse":{"additionalProperties":{},"properties":{"device_code":{"description":"Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize.","type":"string"},"expires_in":{"description":"Lifetime of the device code and user code, in seconds.","type":"number"},"interval":{"description":"Minimum number of seconds to wait between token polling requests.","type":"number"},"user_code":{"description":"Code the user enters at verification_uri to authorize this device.","type":"string"},"verification_uri":{"description":"Browser URL where the user enters user_code and authorizes the device.","type":"string"},"verification_uri_complete":{"description":"Browser URL with user_code included, ready to open or encode as a QR code.","type":"string"}},"required":["device_code","expires_in","interval","user_code","verification_uri","verification_uri_complete"],"type":"object"},"DeviceCodeGrantRequest":{"properties":{"device_code":{"description":"device_code returned by POST /v1/auth/device/code. Required for a device-code grant.","minLength":1,"type":"string"},"grant_type":{"const":"urn:ietf:params:oauth:grant-type:device_code","description":"Selects the device authorization grant to poll or exchange a device code.","type":"string"}},"required":["device_code","grant_type"],"type":"object"},"DeviceTokenBadRequestResponse":{"additionalProperties":{},"properties":{"error":{"description":"OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval.","type":"string"},"error_description":{"description":"Optional human-readable explanation of the OAuth error.","type":"string"}},"required":["error"],"type":"object"},"DeviceTokenRequest":{"oneOf":[{"$ref":"#/components/schemas/DeviceCodeGrantRequest"},{"$ref":"#/components/schemas/RefreshTokenGrantRequest"}]},"DeviceTokenResponse":{"additionalProperties":{},"properties":{"access_token":{"description":"Bearer access token for authenticated Photon API requests.","type":"string"},"authentication_method":{"description":"Authentication method used for the device login, when returned. Omitted for refresh grants.","type":"string"},"expires_in":{"description":"Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable.","type":"number"},"refresh_token":{"description":"Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one.","type":"string"},"user":{"$ref":"#/components/schemas/DeviceTokenResponseUser"}},"required":["access_token","expires_in","refresh_token","user"],"type":"object"},"DeviceTokenResponseUser":{"additionalProperties":{},"description":"Profile of the authenticated user.","properties":{"email":{"description":"Authenticated user's email address.","type":"string"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User's first name, or null when not set."},"id":{"description":"Authenticated user's identity identifier; distinct from the Photon Account ID.","type":"string"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User's last name, or null when not set."}},"required":["id","email","first_name","last_name"],"type":"object"},"DisableOrganizationSsoBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"DisableOrganizationSsoForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"DisableOrganizationSsoGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"DisableOrganizationSsoInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DisableOrganizationSsoPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"DisableOrganizationSsoRequest":{"additionalProperties":false,"properties":{"domains":{"default":[],"items":{"maxLength":253,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"expectedVersion":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"}},"required":["expectedVersion"],"type":"object"},"DisableOrganizationSsoUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"DisconnectWhatsappBusinessAccountBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"DisconnectWhatsappBusinessAccountConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/WhatsappAccountDisconnectingProblem"},{"$ref":"#/components/schemas/WhatsappAccountProvisioningProblem"}]},"DisconnectWhatsappBusinessAccountForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DisconnectWhatsappBusinessAccountGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"DisconnectWhatsappBusinessAccountInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DisconnectWhatsappBusinessAccountUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"DownloadAttachmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"DownloadAttachmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"DownloadAttachmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"DownloadAttachmentResponse":{},"EmailDomainAlreadyConnectedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"EMAIL_DOMAIN_ALREADY_CONNECTED","status":409,"title":"Email Domain Already Connected","type":"https://photon.codes/docs/problems/email-domain-already-connected"},"properties":{"code":{"const":"EMAIL_DOMAIN_ALREADY_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Email Domain Already Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/email-domain-already-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},"EmailDomainCapExceededProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"EMAIL_DOMAIN_CAP_EXCEEDED","status":409,"title":"Email Domain Cap Exceeded","type":"https://photon.codes/docs/problems/email-domain-cap-exceeded"},"properties":{"code":{"const":"EMAIL_DOMAIN_CAP_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Email Domain Cap Exceeded","type":"string"},"type":{"const":"https://photon.codes/docs/problems/email-domain-cap-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},"EntitlementRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ENTITLEMENT_REQUIRED","status":402,"title":"Entitlement Required","type":"https://photon.codes/docs/problems/entitlement-required"},"properties":{"code":{"const":"ENTITLEMENT_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":402,"type":"number"},"title":{"const":"Entitlement Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/entitlement-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ExistingAppInstallationDelivery":{"additionalProperties":false,"properties":{"installationId":{"pattern":"^pho_ain_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"$ref":"#/components/schemas/ExistingAppInstallationDeliveryStatus"}},"required":["installationId","status"],"type":"object"},"ExistingAppInstallationDeliveryStatus":{"enum":["delivery_consumed","recovery_required","revocation_pending","revoked"],"type":"string"},"FailedBillingOperation":{"additionalProperties":false,"properties":{"failure":{"$ref":"#/components/schemas/BillingOperationFailure"},"kind":{"$ref":"#/components/schemas/BillingOperationKind"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"type":"null"},"status":{"const":"failed","description":"Terminal. Failure contains a stable code and retryability.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},"FailedPreconditionProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"FAILED_PRECONDITION","status":409,"title":"Failed Precondition","type":"https://photon.codes/docs/problems/failed-precondition"},"properties":{"code":{"const":"FAILED_PRECONDITION","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Failed Precondition","type":"string"},"type":{"const":"https://photon.codes/docs/problems/failed-precondition","type":"string"}},"required":["code","status","title","type"],"type":"object"},"FixedCharge":{"additionalProperties":false,"properties":{"chargeModel":{"$ref":"#/components/schemas/FixedChargeModel"},"displayName":{"type":"string"},"fixedChargeCode":{"type":"string"},"payInAdvance":{"type":"boolean"},"pricing":{"$ref":"#/components/schemas/FixedChargePricing"},"prorated":{"type":"boolean"},"quantity":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["chargeModel","displayName","fixedChargeCode","payInAdvance","pricing","prorated","quantity"],"type":"object"},"FixedChargeModel":{"enum":["graduated","standard","volume"],"type":"string"},"FixedChargePricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"$ref":"#/components/schemas/FixedChargeTier"},"type":"array"}},"required":["amount","tiers"],"type":"object"},"FixedChargeTier":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","toUnit"],"type":"object"},"ForbiddenProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"FORBIDDEN","status":403,"title":"Forbidden","type":"https://photon.codes/docs/problems/forbidden"},"properties":{"code":{"const":"FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},"GetAccountForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetAccountGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetAccountInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetAgentProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetAgentProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetAttachmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetAttachmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetAttachmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetBillingOperationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetBillingOperationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetBillingOperationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetBillingOverviewForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetBillingOverviewGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetBillingOverviewInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetBillingOverviewResponse":{"additionalProperties":false,"properties":{"entitlementsVersion":{"description":"Bumps on every entitlement change in any category.","maximum":9007199254740991,"minimum":0,"type":"integer"},"subscriptions":{"description":"One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened.","items":{"$ref":"#/components/schemas/ProjectSubscription"},"type":"array"},"usage":{"description":"Current-period metered usage, priced.","items":{"$ref":"#/components/schemas/MeteredUsage"},"type":"array"}},"required":["entitlementsVersion","subscriptions","usage"],"type":"object"},"GetDefaultVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetDefaultVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetDefaultVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetMessageMetricsBackfillForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetMessageMetricsBackfillResponse":{"additionalProperties":{},"properties":{"failedWrites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lastVerifiedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"},{"type":"null"}]},"processedWrites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"$ref":"#/components/schemas/MessageMetricsBackfillState"},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["failedWrites","lastVerifiedAt","processedWrites","state","version"],"type":"object"},"GetMessageMetricsSqlSchemaForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetMessageMetricsSqlSchemaResponse":{"additionalProperties":false,"properties":{"capabilities":{"$ref":"#/components/schemas/MessageMetricsSqlCapabilities"},"dialect":{"type":"string"},"limits":{"$ref":"#/components/schemas/MessageMetricsSqlLimits"},"projectScoped":{"const":true,"type":"boolean"},"tables":{"items":{"$ref":"#/components/schemas/MessageMetricsSqlTable"},"type":"array"},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["capabilities","dialect","limits","projectScoped","tables","version"],"type":"object"},"GetOperationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetOperationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetOperationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetOperationResponse":{"additionalProperties":false,"properties":{"operation":{"$ref":"#/components/schemas/Operation"},"resource":{"$ref":"#/components/schemas/Resource"}},"required":["operation"],"type":"object"},"GetOrganizationBillingOverviewForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetOrganizationBillingOverviewGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetOrganizationBillingOverviewInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetOrganizationBillingOverviewResponse":{"additionalProperties":false,"properties":{"entitlementsVersion":{"description":"Bumps on every entitlement change for the organization.","maximum":9007199254740991,"minimum":0,"type":"integer"},"subscription":{"anyOf":[{"$ref":"#/components/schemas/OrganizationSubscription"},{"type":"null"}],"description":"The organization-owned subscription, or null when billing was never opened or has ended."}},"required":["entitlementsVersion","subscription"],"type":"object"},"GetOrganizationConnectionStatusForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"GetOrganizationConnectionStatusGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetOrganizationConnectionStatusInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetOrganizationPaymentMethodForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetOrganizationPaymentMethodGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetOrganizationPaymentMethodInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetOrganizationPaymentMethodResponse":{"additionalProperties":false,"properties":{"cardOnFile":{"description":"True once a card is captured for the payer.","type":"boolean"},"paymentMethod":{"anyOf":[{"$ref":"#/components/schemas/PaymentMethod"},{"type":"null"}],"description":"Metadata for the default card, or null."}},"required":["cardOnFile","paymentMethod"],"type":"object"},"GetOrganizationSsoConfigurationBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"GetOrganizationSsoConfigurationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"GetOrganizationSsoConfigurationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetOrganizationSsoConfigurationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetOrganizationSsoConfigurationPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"GetProjectClosureStatusForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetProjectClosureStatusGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetProjectClosureStatusResponse":{"additionalProperties":{},"properties":{"deletionOperationId":{"anyOf":[{"pattern":"^pho_opr_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},{"type":"null"}]},"domains":{"items":{"$ref":"#/components/schemas/ProjectClosureDomainStatus"},"type":"array"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"ready":{"type":"boolean"}},"required":["deletionOperationId","domains","organizationId","projectId","ready"],"type":"object"},"GetProjectForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetProjectGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"GetProjectImessagePlatformForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetProjectImessagePlatformGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetProjectImessagePlatformInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetProjectImessagePlatformServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"GetProjectWhatsappPlatformForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetProjectWhatsappPlatformGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetProjectWhatsappPlatformInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetProjectWhatsappPlatformServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"GetResourceForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetResourceGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetResourceInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetSmsLineCampaignAssignmentConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/SmsLineUnsupportedProblem"},{"$ref":"#/components/schemas/SmsCampaignNotReadyProblem"},{"$ref":"#/components/schemas/SmsCampaignVersionConflictProblem"},{"$ref":"#/components/schemas/SmsCampaignCapacityExceededProblem"},{"$ref":"#/components/schemas/SmsCampaignReconciliationRequiredProblem"},{"$ref":"#/components/schemas/SmsCampaignMutationInProgressProblem"}]},"GetSmsLineCampaignAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"},{"$ref":"#/components/schemas/SmsCampaignOrganizationMismatchProblem"}]},"GetSmsLineCampaignAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetSmsLineCampaignAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetSmsLineCampaignAssignmentNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignNotFoundProblem"},{"$ref":"#/components/schemas/SmsLineNotFoundProblem"}]},"GetSmsLineCampaignAssignmentResponse":{"additionalProperties":{},"properties":{"campaign":{"anyOf":[{"$ref":"#/components/schemas/SmsLineCampaign"},{"type":"null"}]},"eligibility":{"$ref":"#/components/schemas/SmsLineCampaignEligibility"},"reasonCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"resourceId":{"type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["campaign","eligibility","reasonCode","resourceId","version"],"type":"object"},"GetSmsLineCampaignAssignmentServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignContextUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"GetVoiceLineProfileAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetVoiceLineProfileAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetVoiceLineProfileAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetWebhookDestinationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWebhookDestinationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetWebhookEventSchemaForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWebhookEventSchemaGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetWhatsappBusinessAccountForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWhatsappBusinessAccountGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetWhatsappBusinessAccountInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetWhatsappBusinessVerificationCodeForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetWhatsappBusinessVerificationCodeInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetWhatsappBusinessVerificationCodeNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/ResourceNotFoundProblem"},{"$ref":"#/components/schemas/WhatsappVerificationCodeNotFoundProblem"}]},"GetWhatsappBusinessVerificationCodeResponse":{"additionalProperties":false,"properties":{"code":{"pattern":"^\\d{6}$","type":"string"},"receivedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["code","receivedAt"],"type":"object"},"GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/WhatsappVerificationWindowExpiredProblem"}]},"GetWhatsappSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWhatsappSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"GetWhatsappSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetWhatsappSignupConfigForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"GetWhatsappSignupConfigInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"GetWhatsappSignupConfigResponse":{"additionalProperties":false,"properties":{"configId":{"type":"string"},"graphVersion":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"required":["configId","graphVersion","scopes"],"type":"object"},"HttpErrorProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"HTTP_ERROR","status":400,"title":"Request Failed","type":"https://photon.codes/docs/problems/http-error"},"properties":{"code":{"const":"HTTP_ERROR","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Request Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/http-error","type":"string"}},"required":["code","status","title","type"],"type":"object"},"IdempotencyKeyInvalidProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IDEMPOTENCY_KEY_INVALID","status":400,"title":"Idempotency Key Invalid","type":"https://photon.codes/docs/problems/idempotency-key-invalid"},"properties":{"code":{"const":"IDEMPOTENCY_KEY_INVALID","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Invalid","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-invalid","type":"string"}},"required":["code","status","title","type"],"type":"object"},"IdempotencyKeyRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IDEMPOTENCY_KEY_REQUIRED","status":400,"title":"Idempotency Key Required","type":"https://photon.codes/docs/problems/idempotency-key-required"},"properties":{"code":{"const":"IDEMPOTENCY_KEY_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Idempotency Key Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"IdempotencyKeyReusedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IDEMPOTENCY_KEY_REUSED","status":422,"title":"Idempotency Key Reused","type":"https://photon.codes/docs/problems/idempotency-key-reused"},"properties":{"code":{"const":"IDEMPOTENCY_KEY_REUSED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Idempotency Key Reused","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-key-reused","type":"string"}},"required":["code","status","title","type"],"type":"object"},"IdempotencyRequestInProgressProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IDEMPOTENCY_REQUEST_IN_PROGRESS","status":409,"title":"Idempotency Request In Progress","type":"https://photon.codes/docs/problems/idempotency-request-in-progress"},"properties":{"code":{"const":"IDEMPOTENCY_REQUEST_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Idempotency Request In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-request-in-progress","type":"string"}},"required":["code","status","title","type"],"type":"object"},"IdempotencyUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IDEMPOTENCY_UNAVAILABLE","status":503,"title":"Idempotency Unavailable","type":"https://photon.codes/docs/problems/idempotency-unavailable"},"properties":{"code":{"const":"IDEMPOTENCY_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Idempotency Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/idempotency-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ImessageHandle":{"anyOf":[{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},{"format":"email","maxLength":254,"pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"}]},"ImessageModeDedicatedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"IMESSAGE_MODE_DEDICATED","status":409,"title":"iMessage Mode Is Dedicated","type":"https://photon.codes/docs/problems/imessage-mode-dedicated"},"properties":{"code":{"const":"IMESSAGE_MODE_DEDICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"iMessage Mode Is Dedicated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/imessage-mode-dedicated","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InsufficientScopeProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INSUFFICIENT_SCOPE","status":403,"title":"Insufficient Scope","type":"https://photon.codes/docs/problems/insufficient-scope"},"properties":{"code":{"const":"INSUFFICIENT_SCOPE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Insufficient Scope","type":"string"},"type":{"const":"https://photon.codes/docs/problems/insufficient-scope","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InternalErrorProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INTERNAL_ERROR","status":500,"title":"Internal Server Error","type":"https://photon.codes/docs/problems/internal-error"},"properties":{"code":{"const":"INTERNAL_ERROR","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Internal Server Error","type":"string"},"type":{"const":"https://photon.codes/docs/problems/internal-error","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InvalidArgumentProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INVALID_ARGUMENT","status":400,"title":"Invalid Argument","type":"https://photon.codes/docs/problems/invalid-argument"},"properties":{"code":{"const":"INVALID_ARGUMENT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Argument","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-argument","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InvalidAttachmentRequestProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INVALID_ATTACHMENT_REQUEST","status":400,"title":"Invalid Attachment Request","type":"https://photon.codes/docs/problems/invalid-attachment-request"},"properties":{"code":{"const":"INVALID_ATTACHMENT_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Attachment Request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-attachment-request","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InvalidAuthContextProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INVALID_AUTH_CONTEXT","status":500,"title":"Invalid Authentication Context","type":"https://photon.codes/docs/problems/invalid-auth-context"},"properties":{"code":{"const":"INVALID_AUTH_CONTEXT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":500,"type":"number"},"title":{"const":"Invalid Authentication Context","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-auth-context","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InvalidReturnToProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"INVALID_RETURN_TO","status":400,"title":"Invalid Return To","type":"https://photon.codes/docs/problems/invalid-return-to"},"properties":{"code":{"const":"INVALID_RETURN_TO","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid Return To","type":"string"},"type":{"const":"https://photon.codes/docs/problems/invalid-return-to","type":"string"}},"required":["code","status","title","type"],"type":"object"},"InvitationEnterpriseLoginRequest":{"additionalProperties":false,"properties":{"invitationToken":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"},"returnTo":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["invitationToken","returnTo"],"type":"object"},"Invoice":{"additionalProperties":false,"properties":{"currency":{"description":"ISO currency code.","type":"string"},"invoiceId":{"description":"Invoice id.","type":"string"},"issuedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Issue date, ISO 8601."},"kind":{"$ref":"#/components/schemas/InvoiceKind"},"number":{"description":"Human invoice number.","type":"string"},"paymentStatus":{"$ref":"#/components/schemas/InvoicePaymentStatus"},"pdfUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Downloadable PDF link."},"subjects":{"description":"Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges.","items":{"$ref":"#/components/schemas/InvoiceSubject"},"type":"array"},"totalCents":{"description":"Invoice total in cents.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["currency","invoiceId","issuedAt","kind","number","paymentStatus","pdfUrl","subjects","totalCents"],"type":"object"},"InvoiceKind":{"description":"What produced the invoice.","enum":["subscription","one_off","credit"],"type":"string"},"InvoicePaymentStatus":{"description":"Provider-neutral payment status.","enum":["pending","succeeded","failed"],"type":"string"},"InvoiceSubject":{"oneOf":[{"$ref":"#/components/schemas/ProjectInvoiceSubject"},{"$ref":"#/components/schemas/OrganizationInvoiceSubject"}]},"JsonValue":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array"},{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"propertyNames":{"type":"string"},"type":"object"}]},"ListAccountServiceKeysForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListAccountServiceKeysGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ListAccountServiceKeysInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListAccountServiceKeysResponse":{"additionalProperties":false,"properties":{"serviceKeys":{"items":{"$ref":"#/components/schemas/AccountServiceKey"},"type":"array"}},"required":["serviceKeys"],"type":"object"},"ListAttachmentsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListAttachmentsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ListAttachmentsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListAuthorizedApplicationsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"ListAuthorizedApplicationsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ListAuthorizedApplicationsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListAuthorizedApplicationsOrder":{"enum":["normal","desc","asc"],"type":"string"},"ListAuthorizedApplicationsResponse":{"additionalProperties":{},"properties":{"authorizedApplications":{"description":"One page of applications authorized by the authenticated user.","items":{"$ref":"#/components/schemas/AuthorizedApplication"},"type":"array"},"listMetadata":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponseListMetadata"}},"required":["authorizedApplications","listMetadata"],"type":"object"},"ListAuthorizedApplicationsResponseListMetadata":{"additionalProperties":{},"description":"Pagination cursors to pass as after or before in the next list request.","properties":{"after":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor for the next page, or null when there is no next page."},"before":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor for the previous page, or null when there is no previous page."}},"required":["after","before"],"type":"object"},"ListBillingPlansForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListBillingPlansGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListBillingPlansInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListBillingPlansResponse":{"additionalProperties":false,"properties":{"plans":{"additionalProperties":{"items":{"$ref":"#/components/schemas/BillingPlan"},"type":"array"},"description":"Plans grouped by valid metadata type and explicitly published with visible=\"true\".","propertyNames":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"type":"object"}},"required":["plans"],"type":"object"},"ListInvoicesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListInvoicesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListInvoicesInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListInvoicesResponse":{"additionalProperties":false,"properties":{"invoices":{"items":{"$ref":"#/components/schemas/Invoice"},"type":"array"}},"required":["invoices"],"type":"object"},"ListNumberAreaCodesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListNumberAreaCodesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListNumberAreaCodesInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListNumberAreaCodesResponse":{"additionalProperties":false,"properties":{"areaCodes":{"items":{"pattern":"^[2-9][0-9]{2}$","type":"string"},"type":"array"},"countryCode":{"const":"US","type":"string"}},"required":["areaCodes","countryCode"],"type":"object"},"ListNumberCountriesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListNumberCountriesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListNumberCountriesInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListNumberCountriesResponse":{"additionalProperties":false,"properties":{"countries":{"items":{"$ref":"#/components/schemas/NumberCountry"},"type":"array"}},"required":["countries"],"type":"object"},"ListOauthScopesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ListOauthScopesResponse":{"additionalProperties":{},"properties":{"scopes":{"description":"Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included.","items":{"description":"OAuth business permission slug.","type":"string"},"type":"array"}},"required":["scopes"],"type":"object"},"ListOperationsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListOperationsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListOperationsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListProjectApiKeysForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListProjectApiKeysResponse":{"additionalProperties":false,"properties":{"apiKeys":{"items":{"$ref":"#/components/schemas/ApiKey"},"type":"array"}},"required":["apiKeys"],"type":"object"},"ListProjectPlatformsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListProjectPlatformsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListProjectPlatformsResponse":{"additionalProperties":false,"properties":{"platforms":{"items":{"$ref":"#/components/schemas/SupportedPlatform"},"type":"array"}},"required":["platforms"],"type":"object"},"ListProjectsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListProjectsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ListResourcesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListResourcesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListResourcesInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListSharedLineAssignmentsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListSharedLineAssignmentsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListSharedLineAssignmentsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListVoiceProfilesDefaultInput":{"enum":["true","false"],"type":"string"},"ListVoiceProfilesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListVoiceProfilesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListVoiceProfilesInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListWebhookApiVersionsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWebhookApiVersionsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListWebhookApiVersionsResponse":{"additionalProperties":false,"properties":{"apiVersions":{"items":{"$ref":"#/components/schemas/WebhookApiVersion"},"type":"array"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"packageVersion":{"minLength":1,"type":"string"}},"required":["contractNamespace","packageVersion","apiVersions"],"type":"object"},"ListWebhookDestinationsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWebhookDestinationsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListWebhookEgressAddressesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWebhookEgressAddressesResponse":{"additionalProperties":false,"properties":{"ipAddresses":{"description":"Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address.","items":{"$ref":"#/components/schemas/WebhookEgressAddress"},"minItems":1,"type":"array","uniqueItems":true}},"required":["ipAddresses"],"type":"object"},"ListWebhookEventTypesForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWebhookEventTypesGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListWebhookEventTypesResponse":{"oneOf":[{"$ref":"#/components/schemas/SelectableWebhookEventCatalog"},{"$ref":"#/components/schemas/DeprecatedWebhookEventCatalog"}]},"ListWhatsappAccountPhoneNumbersForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListWhatsappAccountPhoneNumbersInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ListWhatsappAccountPhoneNumbersResponse":{"additionalProperties":false,"properties":{"phoneNumbers":{"items":{"$ref":"#/components/schemas/WhatsappAccountPhoneNumber"},"type":"array"},"wabaId":{"minLength":1,"type":"string"}},"required":["phoneNumbers","wabaId"],"type":"object"},"ListWhatsappSharedLineAssignmentsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ListWhatsappSharedLineAssignmentsInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"MessageMetricsBackfillState":{"enum":["disabled","pending","running","verifying","completed","paused","failed"],"type":"string"},"MessageMetricsDirection":{"enum":["addressed","received"],"type":"string"},"MessageMetricsJsonCatalog":{"additionalProperties":false,"properties":{"commonPaths":{"items":{"$ref":"#/components/schemas/MessageMetricsJsonPath"},"readOnly":true,"type":"array"},"discriminators":{"items":{"$ref":"#/components/schemas/MessageMetricsJsonDiscriminator"},"readOnly":true,"type":"array"},"platforms":{"items":{"$ref":"#/components/schemas/MessageMetricsPlatformJsonPaths"},"readOnly":true,"type":"array"},"resource":{"$ref":"#/components/schemas/MessageMetricsJsonResource"}},"required":["commonPaths","discriminators","platforms","resource"],"type":"object"},"MessageMetricsJsonDiscriminator":{"anyOf":[{"$ref":"#/components/schemas/MessageMetricsJsonPathDiscriminator"},{"$ref":"#/components/schemas/MessageMetricsJsonOneOfPathsDiscriminator"}]},"MessageMetricsJsonOneOfPathsDiscriminator":{"additionalProperties":false,"properties":{"oneOfPaths":{"items":{"type":"string"},"readOnly":true,"type":"array"}},"required":["oneOfPaths"],"type":"object"},"MessageMetricsJsonPath":{"additionalProperties":false,"properties":{"additionalProperties":{"const":true,"type":"boolean"},"contentTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"directions":{"items":{"$ref":"#/components/schemas/MessageMetricsDirection"},"readOnly":true,"type":"array"},"expression":{"type":"string"},"itemTypes":{"items":{"type":"string"},"readOnly":true,"type":"array"},"path":{"type":"string"},"required":{"type":"boolean"},"type":{"type":"string"},"values":{"items":{"$ref":"#/components/schemas/MessageMetricsJsonPathValue"},"readOnly":true,"type":"array"}},"required":["expression","path","required","type"],"type":"object"},"MessageMetricsJsonPathDiscriminator":{"additionalProperties":false,"properties":{"path":{"type":"string"},"values":{"items":{"type":"string"},"readOnly":true,"type":"array"}},"required":["path","values"],"type":"object"},"MessageMetricsJsonPathValue":{"type":["boolean","number","string"]},"MessageMetricsJsonResource":{"additionalProperties":false,"properties":{"contractsVersion":{"type":"string"},"type":{"const":"message","type":"string"}},"required":["contractsVersion","type"],"type":"object"},"MessageMetricsPlatform":{"enum":["email","imessage","sms","telegram","voice","whatsapp","whatsapp_business"],"type":"string"},"MessageMetricsPlatformJsonPaths":{"additionalProperties":false,"properties":{"name":{"$ref":"#/components/schemas/MessageMetricsPlatform"},"paths":{"items":{"$ref":"#/components/schemas/MessageMetricsJsonPath"},"readOnly":true,"type":"array"}},"required":["name","paths"],"type":"object"},"MessageMetricsQueryColumn":{"additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"type":"object"},"MessageMetricsQueryStatistics":{"additionalProperties":false,"properties":{"bytesRead":{"minimum":0,"type":"number"},"elapsedSeconds":{"minimum":0,"type":"number"},"rowsRead":{"minimum":0,"type":"number"}},"required":["bytesRead","elapsedSeconds","rowsRead"],"type":"object"},"MessageMetricsSqlCapabilities":{"additionalProperties":false,"properties":{"arrayJoin":{"type":"boolean"},"ctes":{"type":"boolean"},"joins":{"type":"boolean"},"parameters":{"type":"boolean"},"selectWithoutFrom":{"type":"boolean"},"subqueries":{"type":"boolean"},"unions":{"type":"boolean"}},"required":["arrayJoin","ctes","joins","parameters","selectWithoutFrom","subqueries","unions"],"type":"object"},"MessageMetricsSqlColumn":{"additionalProperties":false,"properties":{"description":{"type":"string"},"json":{"$ref":"#/components/schemas/MessageMetricsJsonCatalog"},"name":{"type":"string"},"type":{"type":"string"}},"required":["description","name","type"],"type":"object"},"MessageMetricsSqlLimits":{"additionalProperties":false,"properties":{"maximumParameterValueBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumParameters":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumSqlBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"maximumTotalParameterBytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["maximumParameters","maximumParameterValueBytes","maximumSqlBytes","maximumTotalParameterBytes"],"type":"object"},"MessageMetricsSqlTable":{"additionalProperties":false,"properties":{"columns":{"items":{"$ref":"#/components/schemas/MessageMetricsSqlColumn"},"type":"array"},"currentState":{"type":"string"},"description":{"type":"string"},"name":{"$ref":"#/components/schemas/MessageMetricsSqlTableName"}},"required":["columns","currentState","description","name"],"type":"object"},"MessageMetricsSqlTableName":{"enum":["message_events"],"type":"string"},"MeteredUsage":{"additionalProperties":false,"properties":{"amountCents":{"description":"Cost accrued so far.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currency":{"description":"ISO currency code.","type":"string"},"displayName":{"description":"Display name for this usage item.","type":"string"},"metricCode":{"description":"Metered thing, e.g. imessage_message.","type":"string"},"units":{"description":"Units consumed this period.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["amountCents","category","currency","displayName","metricCode","units"],"type":"object"},"NotAuthenticatedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"NOT_AUTHENTICATED","status":401,"title":"Not Authenticated","type":"https://photon.codes/docs/problems/not-authenticated"},"properties":{"code":{"const":"NOT_AUTHENTICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":401,"type":"number"},"title":{"const":"Not Authenticated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/not-authenticated","type":"string"}},"required":["code","status","title","type"],"type":"object"},"NumberCountry":{"additionalProperties":false,"properties":{"callingCode":{"pattern":"^\\+[1-9][0-9]{0,2}$","type":"string"},"countryCode":{"pattern":"^[A-Z]{2}$","type":"string"},"displayName":{"type":"string"}},"required":["callingCode","countryCode","displayName"],"type":"object"},"Operation":{"additionalProperties":false,"properties":{"cancellable":{"type":"boolean"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"endedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"error":{"$ref":"#/components/schemas/OperationError"},"operationId":{"type":"string"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"startedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"$ref":"#/components/schemas/OperationState"},"type":{"$ref":"#/components/schemas/OperationType"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["cancellable","createdAt","operationId","projectId","resourceType","state","type","updatedAt"],"type":"object"},"OperationError":{"additionalProperties":false,"properties":{"code":{"type":"string"},"detail":{"type":"string"}},"required":["code","detail"],"type":"object"},"OperationNotCancellableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"OPERATION_NOT_CANCELLABLE","status":409,"title":"Operation Not Cancellable","type":"https://photon.codes/docs/problems/operation-not-cancellable"},"properties":{"code":{"const":"OPERATION_NOT_CANCELLABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Operation Not Cancellable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-cancellable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OperationNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"OPERATION_NOT_FOUND","status":404,"title":"Operation Not Found","type":"https://photon.codes/docs/problems/operation-not-found"},"properties":{"code":{"const":"OPERATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Operation Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/operation-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OperationPage":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"operations":{"items":{"$ref":"#/components/schemas/Operation"},"type":"array"}},"required":["operations"],"type":"object"},"OperationState":{"enum":["pending","running","succeeded","failed","cancelled"],"type":"string"},"OperationType":{"enum":["resource.provision","resource.release","whatsapp.account.disconnect","sms.campaign.assign","sms.campaign.unassign"],"type":"string"},"OrganizationAuthenticationRedirect":{"additionalProperties":false,"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},"OrganizationAuthenticationRequest":{"additionalProperties":false,"properties":{"returnTo":{"minLength":1,"type":"string"}},"required":["returnTo"],"type":"object"},"OrganizationConnectionNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_CONNECTION_NOT_FOUND","status":404,"title":"Organization Connection Not Found","type":"https://photon.codes/docs/problems/organization-connection-not-found"},"properties":{"code":{"const":"ORGANIZATION_CONNECTION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization Connection Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-connection-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OrganizationConnectionStatus":{"additionalProperties":{},"properties":{"membership":{"$ref":"#/components/schemas/OrganizationConnectionStatusMembership"},"organization":{"$ref":"#/components/schemas/OrganizationConnectionStatusOrganization"},"organizationId":{"type":"string"},"synchronized":{"type":"boolean"}},"required":["organizationId","organization","membership","synchronized"],"type":"object"},"OrganizationConnectionStatusMembership":{"additionalProperties":{},"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"retryAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/OrganizationConnectionSyncStatus"}},"required":["status","errorCode","retryAt"],"type":"object"},"OrganizationConnectionStatusOrganization":{"additionalProperties":{},"properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/OrganizationConnectionSyncStatus"}},"required":["status","errorCode"],"type":"object"},"OrganizationConnectionSyncStatus":{"enum":["pending","syncing","ready","error","blocked"],"type":"string"},"OrganizationEnterpriseLoginRequest":{"additionalProperties":false,"properties":{"invitationToken":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"},"organizationId":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"returnTo":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["organizationId","returnTo"],"type":"object"},"OrganizationInvoiceSubject":{"additionalProperties":false,"properties":{"organizationId":{"type":"string"},"type":{"const":"organization","type":"string"}},"required":["organizationId","type"],"type":"object"},"OrganizationSsoConfiguration":{"additionalProperties":{},"properties":{"connectionChangedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"connectionGeneration":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"connectionState":{"$ref":"#/components/schemas/OrganizationSsoConfigurationConnectionState"},"connectionType":{"type":"string"},"desiredSsoEnforced":{"type":"boolean"},"domains":{"items":{"$ref":"#/components/schemas/OrganizationSsoDomain"},"type":"array"},"organizationId":{"type":"string"},"policySyncStatus":{"$ref":"#/components/schemas/OrganizationSsoConfigurationPolicySyncStatus"},"providerAvailable":{"type":"boolean"},"ssoEnforced":{"type":"boolean"},"ssoJitEnabled":{"type":"boolean"},"version":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"}},"required":["organizationId","connectionState","connectionGeneration","connectionChangedAt","version","ssoEnforced","desiredSsoEnforced","ssoJitEnabled","policySyncStatus"],"type":"object"},"OrganizationSsoConfigurationConnectionState":{"enum":["not_configured","configuring","ready","error"],"type":"string"},"OrganizationSsoConfigurationPolicySyncStatus":{"enum":["synced","manual_required"],"type":"string"},"OrganizationSsoConflictProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_SSO_CONFLICT","status":409,"title":"Organization SSO Conflict","type":"https://photon.codes/docs/problems/organization-sso-conflict"},"properties":{"code":{"const":"ORGANIZATION_SSO_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization SSO Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OrganizationSsoDomain":{"additionalProperties":{},"properties":{"domain":{"type":"string"},"state":{"$ref":"#/components/schemas/OrganizationSsoDomainState"}},"required":["domain","state"],"type":"object"},"OrganizationSsoDomainState":{"enum":["verified","pending","failed"],"type":"string"},"OrganizationSsoNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_SSO_NOT_FOUND","status":404,"title":"Organization SSO Not Found","type":"https://photon.codes/docs/problems/organization-sso-not-found"},"properties":{"code":{"const":"ORGANIZATION_SSO_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Organization SSO Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OrganizationSsoPreconditionFailedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_SSO_PRECONDITION_FAILED","status":412,"title":"Organization SSO Precondition Failed","type":"https://photon.codes/docs/problems/organization-sso-precondition-failed"},"properties":{"code":{"const":"ORGANIZATION_SSO_PRECONDITION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"Organization SSO Precondition Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-precondition-failed","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OrganizationSsoRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_SSO_REQUIRED","status":403,"title":"Organization SSO Required","type":"https://photon.codes/docs/problems/organization-sso-required"},"properties":{"code":{"const":"ORGANIZATION_SSO_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Organization SSO Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sso-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"OrganizationSubscription":{"additionalProperties":false,"properties":{"cancelsAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}],"description":"When the subscription will end, ISO 8601."},"currentPeriodEnd":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}],"description":"End of the current billing period, ISO 8601."},"entitlements":{"items":{"$ref":"#/components/schemas/OrganizationSubscriptionEntitlement"},"type":"array"},"fixedCharges":{"description":"Fixed charges defined by the organization's current plan. Quantity is the plan default.","items":{"$ref":"#/components/schemas/FixedCharge"},"type":"array"},"planCode":{"description":"The organization's plan; display only.","type":"string"},"status":{"$ref":"#/components/schemas/SubscriptionStatus"}},"required":["cancelsAt","currentPeriodEnd","entitlements","fixedCharges","planCode","status"],"type":"object"},"OrganizationSubscriptionEntitlement":{"additionalProperties":false,"properties":{"featureKey":{"description":"Feature gate key.","type":"string"},"value":{"description":"Gate value as a string.","type":"string"}},"required":["featureKey","value"],"type":"object"},"OrganizationSyncUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"ORGANIZATION_SYNC_UNAVAILABLE","status":409,"title":"Organization Synchronization Unavailable","type":"https://photon.codes/docs/problems/organization-sync-unavailable"},"properties":{"code":{"const":"ORGANIZATION_SYNC_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Organization Synchronization Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/organization-sync-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PayloadTooLargeProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"PAYLOAD_TOO_LARGE","status":413,"title":"Payload Too Large","type":"https://photon.codes/docs/problems/payload-too-large"},"properties":{"code":{"const":"PAYLOAD_TOO_LARGE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":413,"type":"number"},"title":{"const":"Payload Too Large","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payload-too-large","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PaymentMethod":{"additionalProperties":false,"properties":{"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Card network brand, e.g. visa."},"expiresMonth":{"anyOf":[{"maximum":12,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Card expiration month."},"expiresYear":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}],"description":"Four-digit card expiration year."},"last4":{"anyOf":[{"pattern":"^\\d{4}$","type":"string"},{"type":"null"}],"description":"Last four card digits."}},"required":["brand","expiresMonth","expiresYear","last4"],"type":"object"},"PaymentProviderNotReadyProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"PAYMENT_PROVIDER_NOT_READY","status":503,"title":"Payment Provider Not Ready","type":"https://photon.codes/docs/problems/payment-provider-not-ready"},"properties":{"code":{"const":"PAYMENT_PROVIDER_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Payment Provider Not Ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/payment-provider-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},"PendingBillingOperation":{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"$ref":"#/components/schemas/BillingOperationKind"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"type":"null"},"result":{"type":"null"},"status":{"const":"pending","description":"Accepted and still executing. Poll the operation route.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},"PhoneVerificationCaptcha":{"additionalProperties":false,"properties":{"challengeContext":{"maxLength":1024,"minLength":1,"type":"string"},"token":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["challengeContext","token"],"type":"object"},"ProfilePictureContentType":{"enum":["image/jpeg","image/png","image/webp"],"type":"string"},"ProfilePictureUpload":{"additionalProperties":false,"properties":{"expiresAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"formFields":{"$ref":"#/components/schemas/ProfilePictureUploadFormFields"},"uploadId":{"type":"string"},"uploadUrl":{"format":"uri","type":"string"}},"required":["expiresAt","formFields","uploadId","uploadUrl"],"type":"object"},"ProfilePictureUploadFormFields":{"additionalProperties":{"type":"string"},"propertyNames":{"type":"string"},"type":"object"},"ProfilePictureUploadRequest":{"additionalProperties":false,"properties":{"contentType":{"$ref":"#/components/schemas/ProfilePictureContentType"}},"required":["contentType"],"type":"object"},"Project":{"additionalProperties":false,"properties":{"agentProfile":{"$ref":"#/components/schemas/AgentProfile"},"billingInitialization":{"$ref":"#/components/schemas/ProjectBillingInitialization"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"createdByAccountId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdByActorKind":{"anyOf":[{"$ref":"#/components/schemas/ProjectCreatedByActorKind"},{"type":"null"}]},"deletedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"organizationId":{"type":"string"},"projectId":{"type":"string"},"slug":{"type":"string"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["agentProfile","createdAt","createdByAccountId","createdByActorId","createdByActorKind","deletedAt","name","organizationId","projectId","slug","updatedAt"],"type":"object"},"ProjectApiKeyResponse":{"additionalProperties":false,"properties":{"apiKey":{"$ref":"#/components/schemas/ApiKey"}},"required":["apiKey"],"type":"object"},"ProjectBillingInitialization":{"enum":["pending","retry_required","completed","unknown"],"type":"string"},"ProjectClosingProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"PROJECT_CLOSING","status":409,"title":"Project Is Closing","type":"https://photon.codes/docs/problems/project-closing"},"properties":{"code":{"const":"PROJECT_CLOSING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Project Is Closing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-closing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProjectClosureDomain":{"enum":["projects","billing","platforms","call_registry"],"type":"string"},"ProjectClosureDomainStatus":{"additionalProperties":{},"properties":{"blockers":{"items":{"type":"string"},"type":"array"},"domain":{"$ref":"#/components/schemas/ProjectClosureDomain"},"ready":{"type":"boolean"}},"required":["blockers","domain","ready"],"type":"object"},"ProjectCount":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count"],"type":"object"},"ProjectCreatedByActorKind":{"enum":["account","service_identity"],"type":"string"},"ProjectDeletedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"PROJECT_DELETED","status":410,"title":"Project Deleted","type":"https://photon.codes/docs/problems/project-deleted"},"properties":{"code":{"const":"PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProjectInvoiceSubject":{"additionalProperties":false,"properties":{"projectId":{"type":"string"},"type":{"const":"project","type":"string"}},"required":["projectId","type"],"type":"object"},"ProjectNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"PROJECT_NOT_FOUND","status":404,"title":"Project Not Found","type":"https://photon.codes/docs/problems/project-not-found"},"properties":{"code":{"const":"PROJECT_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Project Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/project-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ProjectPage":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"projects":{"items":{"$ref":"#/components/schemas/Project"},"type":"array"}},"required":["projects"],"type":"object"},"ProjectPlatformSettings":{"oneOf":[{"$ref":"#/components/schemas/SharedProjectPlatformSettings"},{"$ref":"#/components/schemas/DedicatedProjectPlatformSettings"}]},"ProjectSubscription":{"additionalProperties":false,"properties":{"cancelsAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"When the subscription will end instead of renewing, ISO 8601."},"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"categoryDisplayName":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"description":"Display name for the subscription category; absent or null when unconfigured."},"currentPeriodEnd":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End of the current billing period, ISO 8601."},"entitlements":{"description":"Feature gates granted by this category's plan.","items":{"$ref":"#/components/schemas/ProjectSubscriptionEntitlement"},"type":"array"},"fixedCharges":{"description":"Fixed charges defined by this category's current plan. Quantity is the plan default.","items":{"$ref":"#/components/schemas/FixedCharge"},"type":"array"},"planCode":{"description":"This category's plan; display only.","type":"string"},"status":{"$ref":"#/components/schemas/SubscriptionStatus"}},"required":["cancelsAt","category","currentPeriodEnd","entitlements","fixedCharges","planCode","status"],"type":"object"},"ProjectSubscriptionEntitlement":{"additionalProperties":false,"properties":{"featureKey":{"description":"Feature gate key, e.g. imessage_shared_lines.max_user_assignments.","type":"string"},"value":{"description":"Gate value as a string.","type":"string"}},"required":["featureKey","value"],"type":"object"},"ProvisionImessageDedicatedLineBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ProvisionImessageDedicatedLineForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ProvisionImessageDedicatedLineGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ProvisionImessageDedicatedLineInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ProvisionImessageDedicatedLineServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ProvisionImessageDedicatedLineUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"ProvisionWhatsappDedicatedLineBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ProvisionWhatsappDedicatedLineForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ProvisionWhatsappDedicatedLineGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ProvisionWhatsappDedicatedLineInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ProvisionWhatsappDedicatedLineServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ProvisionWhatsappDedicatedLineUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"PurchaseSmsNumberBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"PurchaseSmsNumberForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"PurchaseSmsNumberGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"PurchaseSmsNumberInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"PurchaseSmsNumberRequest":{"additionalProperties":false,"properties":{"areaCode":{"pattern":"^[2-9][0-9]{2}$","type":"string"},"countryCode":{"const":"US","type":"string"}},"required":["countryCode"],"type":"object"},"PurchaseSmsNumberServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/BillingNotProvisionedProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"PurchaseSmsNumberUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"QueryConcurrencyLimitProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"QUERY_CONCURRENCY_LIMIT","status":429,"title":"Query Concurrency Limit","type":"https://photon.codes/docs/problems/query-concurrency-limit"},"properties":{"code":{"const":"QUERY_CONCURRENCY_LIMIT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Query Concurrency Limit","type":"string"},"type":{"const":"https://photon.codes/docs/problems/query-concurrency-limit","type":"string"}},"required":["code","status","title","type"],"type":"object"},"QueryMessageMetricsForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"QueryMessageMetricsGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"QueryMessageMetricsResponse":{"additionalProperties":false,"properties":{"columns":{"items":{"$ref":"#/components/schemas/MessageMetricsQueryColumn"},"type":"array"},"rows":{"items":{"items":{},"type":"array"},"type":"array"},"statistics":{"$ref":"#/components/schemas/MessageMetricsQueryStatistics"}},"required":["columns","rows","statistics"],"type":"object"},"QueryMessageMetricsUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/QueryResourceLimitProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"QueryResourceLimitProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"QUERY_RESOURCE_LIMIT","status":422,"title":"Query Resource Limit","type":"https://photon.codes/docs/problems/query-resource-limit"},"properties":{"code":{"const":"QUERY_RESOURCE_LIMIT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Query Resource Limit","type":"string"},"type":{"const":"https://photon.codes/docs/problems/query-resource-limit","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RateLimitedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"RATE_LIMITED","status":429,"title":"Too Many Requests","type":"https://photon.codes/docs/problems/rate-limited"},"properties":{"code":{"const":"RATE_LIMITED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":429,"type":"number"},"title":{"const":"Too Many Requests","type":"string"},"type":{"const":"https://photon.codes/docs/problems/rate-limited","type":"string"}},"required":["code","status","title","type"],"type":"object"},"RedeemAppInstallationDeliveryGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"RedeemAppInstallationDeliveryRequest":{"additionalProperties":false,"properties":{"appId":{"pattern":"^pho_app_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"clientAssertion":{"maxLength":16384,"minLength":1,"type":"string"},"code":{"pattern":"^[A-Za-z0-9_-]{43}$","type":"string"}},"required":["appId","clientAssertion","code"],"type":"object"},"RedeemAppInstallationDeliveryResponse":{"oneOf":[{"$ref":"#/components/schemas/CreatedAppInstallationDelivery"},{"$ref":"#/components/schemas/ExistingAppInstallationDelivery"}]},"RefreshOrganizationSsoConnectionBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"RefreshOrganizationSsoConnectionForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"RefreshOrganizationSsoConnectionGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"RefreshOrganizationSsoConnectionInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"RefreshOrganizationSsoConnectionPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"RefreshTokenGrantRequest":{"properties":{"grant_type":{"const":"refresh_token","description":"Selects the refresh-token grant to obtain a new token pair.","type":"string"},"refresh_token":{"description":"Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success.","minLength":1,"type":"string"}},"required":["grant_type","refresh_token"],"type":"object"},"ReleaseImessageDedicatedLineForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReleaseImessageDedicatedLineGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReleaseImessageDedicatedLineInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReleaseResourceConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/WhatsappSenderConnectedProblem"},{"$ref":"#/components/schemas/WhatsappSenderProvisioningProblem"}]},"ReleaseResourceForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReleaseResourceGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReleaseResourceInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReleaseSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReleaseSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReleaseSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReleaseWhatsappDedicatedLineForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReleaseWhatsappDedicatedLineGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReleaseWhatsappDedicatedLineInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReleaseWhatsappSharedLineAssignmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReplaceVoiceProfileInboundConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"}]},"ReplaceVoiceProfileInboundForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ReplaceVoiceProfileInboundGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ReplaceVoiceProfileInboundInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ReplaceVoiceProfileInboundRequest":{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"$ref":"#/components/schemas/SipInboundCredentialsWithPassword"},{"type":"null"}]},"destinationUri":{"maxLength":2048,"minLength":1,"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["credentials","destinationUri","expectedVersion"],"type":"object"},"RequestTimeoutProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"REQUEST_TIMEOUT","status":504,"title":"Request Timeout","type":"https://photon.codes/docs/problems/request-timeout"},"properties":{"code":{"const":"REQUEST_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Request Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/request-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResetAccountProfilePictureBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"ResetAccountProfilePictureForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ResetAccountProfilePictureGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ResetAccountProfilePictureInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ResetAccountProfilePictureUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"ResetAgentProfileAvatarBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ResetAgentProfileAvatarForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ResetAgentProfileAvatarGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"ResetAgentProfileAvatarUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"Resource":{"additionalProperties":false,"properties":{"abilities":{"items":{"type":"string"},"type":"array"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"detail":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"retiredAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"state":{"$ref":"#/components/schemas/ResourceState"},"type":{"type":"string"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["abilities","createdAt","detail","projectId","resourceId","state","type","updatedAt"],"type":"object"},"ResourceMismatchProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"RESOURCE_MISMATCH","status":403,"title":"Resource Mismatch","type":"https://photon.codes/docs/problems/resource-mismatch"},"properties":{"code":{"const":"RESOURCE_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Resource Mismatch","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResourceNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"RESOURCE_NOT_FOUND","status":404,"title":"Resource Not Found","type":"https://photon.codes/docs/problems/resource-not-found"},"properties":{"code":{"const":"RESOURCE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Resource Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/resource-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"ResourcePage":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"resources":{"items":{"$ref":"#/components/schemas/Resource"},"type":"array"}},"required":["resources"],"type":"object"},"ResourceState":{"enum":["unallocated","active","retired"],"type":"string"},"ResumeSubscriptionBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"ResumeSubscriptionConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/FailedPreconditionProblem"},{"$ref":"#/components/schemas/IdempotencyRequestInProgressProblem"}]},"ResumeSubscriptionForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"ResumeSubscriptionGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"ResumeSubscriptionInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"ResumeSubscriptionRequest":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"}},"required":["category"],"type":"object"},"ResumeSubscriptionResponse":{"additionalProperties":false,"properties":{"category":{"description":"Category slug, e.g. analytics or messaging.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string"},"resumed":{"description":"False when the subscription was not scheduled to cancel.","type":"boolean"}},"required":["category","resumed"],"type":"object"},"ResumeSubscriptionServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"ResumeSubscriptionUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"RetryEnterpriseLoginRequest":{"additionalProperties":false,"properties":{"retryToken":{"pattern":"^enroll_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","type":"string"}},"required":["retryToken"],"type":"object"},"RetryOrganizationConnectionSyncForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"RetryOrganizationConnectionSyncGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"RetryOrganizationConnectionSyncInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"RevokeAccountServiceKeyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"RevokeAccountServiceKeyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"RevokeAccountServiceKeyGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"RevokeAccountServiceKeyInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"RevokeAccountServiceKeyNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/AccountNotFoundProblem"},{"$ref":"#/components/schemas/AccountServiceKeyNotFoundProblem"}]},"RevokeAccountServiceKeyResponse":{"additionalProperties":false,"properties":{"serviceKey":{"$ref":"#/components/schemas/AccountServiceKey"}},"required":["serviceKey"],"type":"object"},"RevokeAccountServiceKeyUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"RevokeAuthorizedApplicationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"RevokeAuthorizedApplicationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"RevokeAuthorizedApplicationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"RevokeProjectApiKeyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"RevokeProjectApiKeyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"RevokeProjectApiKeyNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectNotFoundProblem"},{"$ref":"#/components/schemas/ApiKeyNotFoundProblem"}]},"RevokeProjectApiKeyUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"RotateVoiceProfileOutboundCredentialBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"RotateVoiceProfileOutboundCredentialConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"},{"$ref":"#/components/schemas/VoiceOutboundNotConfiguredProblem"}]},"RotateVoiceProfileOutboundCredentialForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"RotateVoiceProfileOutboundCredentialInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"RotateVoiceProfileOutboundCredentialRequest":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mode":{"$ref":"#/components/schemas/VoiceOutboundCredentialRotationMode"}},"required":["expectedVersion","mode"],"type":"object"},"RotateVoiceProfileOutboundCredentialResponse":{"additionalProperties":false,"properties":{"password":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"previousPasswordValidUntil":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["password","previousPasswordValidUntil","profileVersion"],"type":"object"},"RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"RotateWebhookSigningSecretBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"RotateWebhookSigningSecretForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"RotateWebhookSigningSecretGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"RotateWebhookSigningSecretRequest":{"additionalProperties":false,"properties":{"overlapSeconds":{"default":86400,"maximum":604800,"minimum":0,"type":"integer"}},"type":"object"},"RotateWebhookSigningSecretResponse":{"additionalProperties":false,"properties":{"previousSecretExpiresAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"signingSecret":{"pattern":"^whsec_.*","type":"string"}},"required":["previousSecretExpiresAt","signingSecret"],"type":"object"},"RotateWebhookSigningSecretUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"SelectableWebhookApiVersion":{"additionalProperties":false,"properties":{"retirement":{"anyOf":[{"$ref":"#/components/schemas/WebhookApiVersionRetirement"},{"type":"null"}]},"selectable":{"const":true,"type":"boolean"},"status":{"$ref":"#/components/schemas/SelectableWebhookApiVersionStatus"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]},"version":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"required":["retirement","successor","selectable","status","version"],"type":"object"},"SelectableWebhookApiVersionStatus":{"enum":["preview","latest","maintain"],"type":"string"},"SelectableWebhookEventCatalog":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"contractNamespace":{"const":"@photon-hq/contracts","type":"string"},"events":{"items":{"$ref":"#/components/schemas/WebhookEventType"},"type":"array"},"packageVersion":{"minLength":1,"type":"string"},"retirement":{"anyOf":[{"$ref":"#/components/schemas/WebhookApiVersionRetirement"},{"type":"null"}]},"selectable":{"const":true,"type":"boolean"},"status":{"$ref":"#/components/schemas/SelectableWebhookApiVersionStatus"},"successor":{"anyOf":[{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},{"type":"null"}]}},"required":["retirement","successor","selectable","status","contractNamespace","packageVersion","apiVersion","events"],"type":"object"},"SharedLineAssignment":{"additionalProperties":false,"properties":{"assignedPhoneNumber":{"type":"string"},"assignmentId":{"type":"string"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"handle":{"type":"string"},"lastName":{"type":"string"},"platform":{"$ref":"#/components/schemas/SharedLineAssignmentPlatform"},"projectId":{"type":"string"},"releasedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["assignedPhoneNumber","assignmentId","createdAt","handle","platform","projectId","updatedAt"],"type":"object"},"SharedLineAssignmentPage":{"additionalProperties":false,"properties":{"assignments":{"items":{"$ref":"#/components/schemas/SharedLineAssignment"},"type":"array"},"nextPageToken":{"type":"string"}},"required":["assignments"],"type":"object"},"SharedLineAssignmentPlatform":{"enum":["imessage","whatsapp"],"type":"string"},"SharedLineCapExceededProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SHARED_LINE_CAP_EXCEEDED","status":409,"title":"Shared Line Cap Exceeded","type":"https://photon.codes/docs/problems/shared-line-cap-exceeded"},"properties":{"code":{"const":"SHARED_LINE_CAP_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Shared Line Cap Exceeded","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-cap-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SharedLinePoolExhaustedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SHARED_LINE_POOL_EXHAUSTED","status":503,"title":"Shared Line Pool Exhausted","type":"https://photon.codes/docs/problems/shared-line-pool-exhausted"},"properties":{"code":{"const":"SHARED_LINE_POOL_EXHAUSTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Shared Line Pool Exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/shared-line-pool-exhausted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SharedProjectPlatformSettings":{"additionalProperties":false,"properties":{"maxUserAssignments":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mode":{"const":"shared","type":"string"}},"required":["maxUserAssignments","mode"],"type":"object"},"SipAuthenticationAlgorithm":{"enum":["sha-256","md5"],"type":"string"},"SipEndpoint":{"additionalProperties":false,"properties":{"host":{"type":"string"},"port":{"maximum":65535,"minimum":1,"type":"integer"},"transport":{"$ref":"#/components/schemas/SipTransport"}},"required":["host","port","transport"],"type":"object"},"SipInboundConfiguration":{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"$ref":"#/components/schemas/SipInboundCredentials"},{"type":"null"}]},"destinationUri":{"type":"string"}},"required":["credentials","destinationUri"],"type":"object"},"SipInboundCredentials":{"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"},"SipInboundCredentialsWithPassword":{"additionalProperties":false,"properties":{"password":{"minLength":1,"type":"string"},"username":{"maxLength":256,"minLength":1,"type":"string"}},"required":["password","username"],"type":"object"},"SipOutboundAuthentication":{"additionalProperties":false,"properties":{"algorithm":{"$ref":"#/components/schemas/SipAuthenticationAlgorithm"},"previousPasswordValidUntil":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"username":{"type":"string"},"validFrom":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["algorithm","previousPasswordValidUntil","username","validFrom"],"type":"object"},"SipOutboundAuthenticationPolicy":{"additionalProperties":false,"properties":{"algorithm":{"$ref":"#/components/schemas/SipAuthenticationAlgorithm"}},"required":["algorithm"],"type":"object"},"SipOutboundConfiguration":{"additionalProperties":false,"properties":{"authentication":{"$ref":"#/components/schemas/SipOutboundAuthentication"},"connection":{"$ref":"#/components/schemas/SipOutboundConnection"}},"required":["authentication","connection"],"type":"object"},"SipOutboundConnection":{"additionalProperties":false,"properties":{"endpoints":{"items":{"$ref":"#/components/schemas/SipEndpoint"},"minItems":1,"type":"array"},"realm":{"type":"string"}},"required":["endpoints","realm"],"type":"object"},"SipTransport":{"enum":["udp","tcp","tls"],"type":"string"},"SlugTakenProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SLUG_TAKEN","status":409,"suggestion":"example-project-2","title":"Slug Already Taken","type":"https://photon.codes/docs/problems/slug-taken"},"properties":{"code":{"const":"SLUG_TAKEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"suggestion":{"type":"string"},"title":{"const":"Slug Already Taken","type":"string"},"type":{"const":"https://photon.codes/docs/problems/slug-taken","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignCapacityExceededProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_CAPACITY_EXCEEDED","status":409,"title":"Campaign number capacity exhausted","type":"https://photon.codes/docs/problems/sms-campaign-capacity-exceeded"},"properties":{"code":{"const":"SMS_CAMPAIGN_CAPACITY_EXCEEDED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign number capacity exhausted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-capacity-exceeded","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignContextUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_CONTEXT_UNAVAILABLE","status":503,"title":"Campaign context unavailable","type":"https://photon.codes/docs/problems/sms-campaign-context-unavailable"},"properties":{"code":{"const":"SMS_CAMPAIGN_CONTEXT_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Campaign context unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-context-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignInvalidRequestProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_INVALID_REQUEST","status":400,"title":"Invalid SMS campaign request","type":"https://photon.codes/docs/problems/sms-campaign-invalid-request"},"properties":{"code":{"const":"SMS_CAMPAIGN_INVALID_REQUEST","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":400,"type":"number"},"title":{"const":"Invalid SMS campaign request","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-invalid-request","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignMutationInProgressProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"properties":{"code":{"const":"SMS_CAMPAIGN_MUTATION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"operationId":{"type":"string"},"operationUrl":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment mutation in progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-mutation-in-progress","type":"string"}},"required":["operationId","operationUrl","code","status","title","type"],"type":"object"},"SmsCampaignNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_NOT_FOUND","status":404,"title":"Campaign not found","type":"https://photon.codes/docs/problems/sms-campaign-not-found"},"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Campaign not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignNotReadyProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_NOT_READY","status":409,"title":"Campaign not ready","type":"https://photon.codes/docs/problems/sms-campaign-not-ready"},"properties":{"code":{"const":"SMS_CAMPAIGN_NOT_READY","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign not ready","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-not-ready","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignOrganizationMismatchProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_ORGANIZATION_MISMATCH","status":403,"title":"Campaign belongs to another organization","type":"https://photon.codes/docs/problems/sms-campaign-organization-mismatch"},"properties":{"code":{"const":"SMS_CAMPAIGN_ORGANIZATION_MISMATCH","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":403,"type":"number"},"title":{"const":"Campaign belongs to another organization","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-organization-mismatch","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignReconciliationRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_RECONCILIATION_REQUIRED","status":409,"title":"Campaign reconciliation required","type":"https://photon.codes/docs/problems/sms-campaign-reconciliation-required"},"properties":{"code":{"const":"SMS_CAMPAIGN_RECONCILIATION_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Campaign reconciliation required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-reconciliation-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsCampaignVersionConflictProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_CAMPAIGN_VERSION_CONFLICT","status":409,"title":"Assignment version conflict","type":"https://photon.codes/docs/problems/sms-campaign-version-conflict"},"properties":{"code":{"const":"SMS_CAMPAIGN_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Assignment version conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-campaign-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsLineCampaign":{"additionalProperties":{},"properties":{"id":{"type":"string"},"organizationId":{"type":"string"}},"required":["id","organizationId"],"type":"object"},"SmsLineCampaignEligibility":{"enum":["eligible","blocked","unknown"],"type":"string"},"SmsLineNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_LINE_NOT_FOUND","status":404,"title":"SMS line not found","type":"https://photon.codes/docs/problems/sms-line-not-found"},"properties":{"code":{"const":"SMS_LINE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"SMS line not found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SmsLineUnsupportedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SMS_LINE_UNSUPPORTED","status":409,"title":"SMS line unsupported","type":"https://photon.codes/docs/problems/sms-line-unsupported"},"properties":{"code":{"const":"SMS_LINE_UNSUPPORTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"SMS line unsupported","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sms-line-unsupported","type":"string"}},"required":["code","status","title","type"],"type":"object"},"SortOrder":{"enum":["asc","desc"],"type":"string"},"SsoSubscriptionRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"SSO_SUBSCRIPTION_REQUIRED","status":412,"title":"SSO Subscription Required","type":"https://photon.codes/docs/problems/sso-subscription-required"},"properties":{"code":{"const":"SSO_SUBSCRIPTION_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":412,"type":"number"},"title":{"const":"SSO Subscription Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/sso-subscription-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"StartAccountPhoneVerificationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/CaptchaRequiredProblem"},{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"StartAccountPhoneVerificationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"StartAccountPhoneVerificationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"StartAccountPhoneVerificationRequest":{"additionalProperties":false,"properties":{"captcha":{"$ref":"#/components/schemas/PhoneVerificationCaptcha"},"phoneNumber":{"pattern":"^[+\\d][\\d\\s().-]{6,24}$","type":"string"}},"required":["phoneNumber"],"type":"object"},"StartAccountPhoneVerificationResponse":{"additionalProperties":false,"properties":{"channel":{"const":"sms","type":"string"},"expiresAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"resendAvailableAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["channel","expiresAt","resendAvailableAt"],"type":"object"},"StartEnterpriseLoginRequest":{"anyOf":[{"$ref":"#/components/schemas/OrganizationEnterpriseLoginRequest"},{"$ref":"#/components/schemas/InvitationEnterpriseLoginRequest"},{"$ref":"#/components/schemas/RetryEnterpriseLoginRequest"}]},"StartEnterpriseLoginResponse":{"additionalProperties":{},"properties":{"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"SubscriptionStatus":{"description":"State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated.","enum":["active","past_due","terminated"],"type":"string","x-enumDescriptions":{"active":"Subscribed and in good standing, on a free or a paid plan.","past_due":"The payer has an overdue invoice. Dunning is organization-level, so it applies to every category at once. Entitlements are unaffected — the plan still grants what it grants.","terminated":"The subscription is gone. Not reported by the overview, which omits categories holding nothing."}},"SucceededBillingOperation":{"additionalProperties":false,"properties":{"failure":{"type":"null"},"kind":{"$ref":"#/components/schemas/BillingOperationKind"},"operationId":{"description":"Stable handle for this provisioning action.","type":"string"},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"$ref":"#/components/schemas/BillingOperationResult"},"status":{"const":"succeeded","description":"Terminal. The result is authoritative.","type":"string"},"submittedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["failure","kind","operationId","submittedAt","resolvedAt","result","status"],"type":"object"},"SupportedPlatform":{"additionalProperties":false,"properties":{"description":{"type":"string"},"displayName":{"type":"string"},"type":{"type":"string"}},"required":["description","displayName","type"],"type":"object"},"TelegramProjectDeletedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"TELEGRAM_PROJECT_DELETED","status":409,"title":"Telegram Project Deleted","type":"https://photon.codes/docs/problems/telegram-project-deleted"},"properties":{"code":{"const":"TELEGRAM_PROJECT_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Telegram Project Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/telegram-project-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"TelegramProvisionInProgressProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"TELEGRAM_PROVISION_IN_PROGRESS","operationId":"pho_opr_00000000000000000000000001","operationUrl":"/v1/projects/pho_prj_00000000000000000000000001/platforms/operations/pho_opr_00000000000000000000000001","status":409,"title":"Telegram Provision In Progress","type":"https://photon.codes/docs/problems/telegram-provision-in-progress"},"properties":{"code":{"const":"TELEGRAM_PROVISION_IN_PROGRESS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"operationId":{"type":"string"},"operationUrl":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Telegram Provision In Progress","type":"string"},"type":{"const":"https://photon.codes/docs/problems/telegram-provision-in-progress","type":"string"}},"required":["operationId","operationUrl","code","status","title","type"],"type":"object"},"TerminalBillingOperation":{"oneOf":[{"$ref":"#/components/schemas/SucceededBillingOperation"},{"$ref":"#/components/schemas/FailedBillingOperation"}]},"TimestampOrderBy":{"enum":["created_at","updated_at"],"type":"string"},"UnassignSmsLineCampaignBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignInvalidRequestProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"UnassignSmsLineCampaignConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/SmsLineUnsupportedProblem"},{"$ref":"#/components/schemas/SmsCampaignNotReadyProblem"},{"$ref":"#/components/schemas/SmsCampaignVersionConflictProblem"},{"$ref":"#/components/schemas/SmsCampaignCapacityExceededProblem"},{"$ref":"#/components/schemas/SmsCampaignReconciliationRequiredProblem"},{"$ref":"#/components/schemas/SmsCampaignMutationInProgressProblem"}]},"UnassignSmsLineCampaignForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"},{"$ref":"#/components/schemas/SmsCampaignOrganizationMismatchProblem"}]},"UnassignSmsLineCampaignGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UnassignSmsLineCampaignInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UnassignSmsLineCampaignNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignNotFoundProblem"},{"$ref":"#/components/schemas/SmsLineNotFoundProblem"}]},"UnassignSmsLineCampaignServiceUnavailableProblem":{"oneOf":[{"$ref":"#/components/schemas/SmsCampaignContextUnavailableProblem"},{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}]},"UnassignVoiceLineProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UnassignVoiceLineProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UnassignVoiceLineProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UnavailableProjectSlug":{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"$ref":"#/components/schemas/UnavailableProjectSlugReason"},"slug":{"type":"string"},"suggestion":{"type":"string"}},"required":["available","reason","slug"],"type":"object"},"UnavailableProjectSlugReason":{"enum":["reserved","retired","taken","too_short"],"type":"string"},"UpdateAccountBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/HttpErrorProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"}]},"UpdateAccountForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateAccountGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"UpdateAccountInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateAccountRequest":{"additionalProperties":false,"properties":{"firstName":{"maxLength":256,"minLength":1,"type":"string"},"lastName":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]}},"type":"object"},"UpdateAccountUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"},{"$ref":"#/components/schemas/ValidationFailedProblem"}]},"UpdateAgentProfileBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"UpdateAgentProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateAgentProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"UpdateAgentProfileRequest":{"additionalProperties":false,"properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"type":"object"},"UpdateAgentProfileUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"UpdateDefaultVoiceProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileDirectionConfiguredProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"}]},"UpdateDefaultVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateDefaultVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UpdateDefaultVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateDefaultVoiceProfileRequest":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mediaEncryption":{"$ref":"#/components/schemas/VoiceProfileMediaEncryption"},"protocol":{"const":"sip","type":"string"}},"required":["expectedVersion"],"type":"object"},"UpdateOrganizationSsoPolicyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/InvalidReturnToProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"UpdateOrganizationSsoPolicyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"}]},"UpdateOrganizationSsoPolicyGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"UpdateOrganizationSsoPolicyInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateOrganizationSsoPolicyPreconditionFailedProblem":{"oneOf":[{"$ref":"#/components/schemas/OrganizationSsoPreconditionFailedProblem"},{"$ref":"#/components/schemas/SsoSubscriptionRequiredProblem"}]},"UpdateOrganizationSsoPolicyRequest":{"additionalProperties":false,"properties":{"expectedVersion":{"pattern":"^(0|[1-9][0-9]{0,19})$","type":"string"},"ssoJitEnabled":{"type":"boolean"}},"required":["expectedVersion","ssoJitEnabled"],"type":"object"},"UpdateProjectApiKeyBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"UpdateProjectApiKeyForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateProjectApiKeyNotFoundProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectNotFoundProblem"},{"$ref":"#/components/schemas/ApiKeyNotFoundProblem"}]},"UpdateProjectApiKeyRequest":{"additionalProperties":false,"properties":{"permissions":{"items":{"$ref":"#/components/schemas/ApiKeyPermission"},"minItems":1,"type":"array"}},"required":["permissions"],"type":"object"},"UpdateProjectApiKeyUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"UpdateProjectBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"}]},"UpdateProjectForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateProjectGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"UpdateProjectRequest":{"additionalProperties":false,"properties":{"name":{"maxLength":256,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"UpdateProjectUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"UpdateVoiceProfileConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileDirectionConfiguredProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"}]},"UpdateVoiceProfileForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateVoiceProfileGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UpdateVoiceProfileInboundConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"}]},"UpdateVoiceProfileInboundForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateVoiceProfileInboundGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UpdateVoiceProfileInboundInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateVoiceProfileInboundRequest":{"additionalProperties":false,"properties":{"credentials":{"anyOf":[{"$ref":"#/components/schemas/SipInboundCredentialsWithPassword"},{"type":"null"}]},"destinationUri":{"maxLength":2048,"minLength":1,"type":"string"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["expectedVersion"],"type":"object"},"UpdateVoiceProfileInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateVoiceProfileOutboundAuthenticationConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/ProjectClosingProblem"},{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"},{"$ref":"#/components/schemas/VoiceOutboundOperationPendingProblem"},{"$ref":"#/components/schemas/VoiceOutboundNotConfiguredProblem"}]},"UpdateVoiceProfileOutboundAuthenticationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpdateVoiceProfileOutboundAuthenticationRequest":{"additionalProperties":false,"properties":{"authentication":{"$ref":"#/components/schemas/SipOutboundAuthenticationPolicy"},"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["authentication","expectedVersion"],"type":"object"},"UpdateVoiceProfileOutboundAuthenticationResponse":{"additionalProperties":false,"properties":{"outbound":{"$ref":"#/components/schemas/SipOutboundConfiguration"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["outbound","profileVersion"],"type":"object"},"UpdateVoiceProfileRequest":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mediaEncryption":{"$ref":"#/components/schemas/VoiceProfileMediaEncryption"},"name":{"maxLength":100,"minLength":1,"type":"string"},"protocol":{"const":"sip","type":"string"}},"required":["expectedVersion"],"type":"object"},"UpdateWebhookDestinationBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/IdempotencyKeyRequiredProblem"},{"$ref":"#/components/schemas/IdempotencyKeyInvalidProblem"},{"$ref":"#/components/schemas/InvalidArgumentProblem"}]},"UpdateWebhookDestinationForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UpdateWebhookDestinationGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/RequestTimeoutProblem"},{"$ref":"#/components/schemas/UpstreamTimeoutProblem"}]},"UpdateWebhookDestinationRequest":{"additionalProperties":false,"minProperties":1,"properties":{"description":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}]},"enabledEvents":{"$ref":"#/components/schemas/WebhookEventSelection"},"name":{"maxLength":256,"minLength":1,"type":"string"},"status":{"$ref":"#/components/schemas/WebhookDestinationStatus"},"url":{"description":"HTTPS URL without credentials or a fragment.","format":"uri","maxLength":2048,"minLength":1,"type":"string"}},"type":"object"},"UpdateWebhookDestinationUnprocessableEntityProblem":{"oneOf":[{"$ref":"#/components/schemas/ValidationFailedProblem"},{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}]},"UploadAttachmentBadRequestProblem":{"oneOf":[{"$ref":"#/components/schemas/HttpErrorProblem"},{"$ref":"#/components/schemas/InvalidAttachmentRequestProblem"}]},"UploadAttachmentConflictProblem":{"oneOf":[{"$ref":"#/components/schemas/AttachmentConflictProblem"},{"$ref":"#/components/schemas/AttachmentUploadNotReadyProblem"}]},"UploadAttachmentForbiddenProblem":{"oneOf":[{"$ref":"#/components/schemas/ForbiddenProblem"},{"$ref":"#/components/schemas/InsufficientScopeProblem"},{"$ref":"#/components/schemas/OrganizationSsoRequiredProblem"},{"$ref":"#/components/schemas/ResourceMismatchProblem"}]},"UploadAttachmentGatewayTimeoutProblem":{"oneOf":[{"$ref":"#/components/schemas/UpstreamTimeoutProblem"},{"$ref":"#/components/schemas/RequestTimeoutProblem"}]},"UploadAttachmentInternalServerErrorProblem":{"oneOf":[{"$ref":"#/components/schemas/InternalErrorProblem"},{"$ref":"#/components/schemas/InvalidAuthContextProblem"}]},"UpstreamFailureProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"UPSTREAM_FAILURE","status":502,"title":"Upstream Service Failure","type":"https://photon.codes/docs/problems/upstream-failure"},"properties":{"code":{"const":"UPSTREAM_FAILURE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":502,"type":"number"},"title":{"const":"Upstream Service Failure","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-failure","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpstreamTimeoutProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"UPSTREAM_TIMEOUT","status":504,"title":"Upstream Service Timeout","type":"https://photon.codes/docs/problems/upstream-timeout"},"properties":{"code":{"const":"UPSTREAM_TIMEOUT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":504,"type":"number"},"title":{"const":"Upstream Service Timeout","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-timeout","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UpstreamUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"UPSTREAM_UNAVAILABLE","status":503,"title":"Upstream Service Unavailable","type":"https://photon.codes/docs/problems/upstream-unavailable"},"properties":{"code":{"const":"UPSTREAM_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":503,"type":"number"},"title":{"const":"Upstream Service Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/upstream-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"UsageCharge":{"additionalProperties":false,"properties":{"chargeCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"chargeModel":{"$ref":"#/components/schemas/UsageChargeModel"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"filters":{"items":{"$ref":"#/components/schemas/UsageChargeFilter"},"type":"array"},"invoiceable":{"type":"boolean"},"metricCode":{"type":"string"},"minimumAmountCents":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payInAdvance":{"type":"boolean"},"pricing":{"$ref":"#/components/schemas/UsageChargePricing"},"prorated":{"type":"boolean"}},"required":["chargeCode","chargeModel","displayName","filters","invoiceable","metricCode","minimumAmountCents","payInAdvance","pricing","prorated"],"type":"object"},"UsageChargeFilter":{"additionalProperties":false,"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricing":{"$ref":"#/components/schemas/UsageChargePricing"},"values":{"items":{"$ref":"#/components/schemas/UsageChargeFilterValue"},"type":"array"}},"required":["displayName","pricing","values"],"type":"object"},"UsageChargeFilterValue":{"additionalProperties":false,"properties":{"key":{"type":"string"},"values":{"items":{"type":"string"},"type":"array"}},"required":["key","values"],"type":"object"},"UsageChargeModel":{"enum":["dynamic","graduated","graduated_percentage","package","percentage","standard","volume"],"type":"string"},"UsageChargePricing":{"additionalProperties":false,"properties":{"amount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fixedAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"freeUnits":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerEvents":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"freeUnitsPerTotalAggregation":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"packageSize":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"perTransactionMaxAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"perTransactionMinAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"pricingGroupKeys":{"items":{"type":"string"},"type":"array"},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"tiers":{"items":{"$ref":"#/components/schemas/UsageChargeTier"},"type":"array"}},"required":["amount","fixedAmount","freeUnits","freeUnitsPerEvents","freeUnitsPerTotalAggregation","packageSize","perTransactionMaxAmount","perTransactionMinAmount","pricingGroupKeys","rate","tiers"],"type":"object"},"UsageChargeTier":{"additionalProperties":false,"properties":{"flatAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"fromUnit":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"perUnitAmount":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"rate":{"anyOf":[{"description":"Decimal amount in the plan currency. Kept as text so sub-cent unit prices remain exact.","pattern":"^\\d+(?:\\.\\d+)?$","type":"string"},{"type":"null"}]},"toUnit":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["flatAmount","fromUnit","perUnitAmount","rate","toUnit"],"type":"object"},"ValidationFailedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VALIDATION_FAILED","issues":[{"code":"invalid_type","location":"json","message":"Expected a string.","path":"/name"}],"status":422,"title":"Request Validation Failed","type":"https://photon.codes/docs/problems/validation-failed"},"properties":{"code":{"const":"VALIDATION_FAILED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"issues":{"items":{"$ref":"#/components/schemas/ValidationIssue"},"type":"array"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"Request Validation Failed","type":"string"},"type":{"const":"https://photon.codes/docs/problems/validation-failed","type":"string"}},"required":["issues","code","status","title","type"],"type":"object"},"ValidationIssue":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"location":{"$ref":"#/components/schemas/ValidationLocation"},"message":{"minLength":1,"type":"string"},"path":{"type":"string"}},"required":["code","location","message","path"],"type":"object"},"ValidationLocation":{"enum":["body","cookie","form","header","json","param","query"],"type":"string"},"VoiceDefaultProfileAssignmentForbiddenProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN","status":409,"title":"Voice Default Profile Assignment Forbidden","type":"https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden"},"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Assignment Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceDefaultProfileDeletionForbiddenProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN","status":409,"title":"Voice Default Profile Deletion Forbidden","type":"https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden"},"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Deletion Forbidden","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceDefaultProfileExistsProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_DEFAULT_PROFILE_EXISTS","status":409,"title":"Voice Default Profile Exists","type":"https://photon.codes/docs/problems/voice-default-profile-exists"},"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_EXISTS","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Exists","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-exists","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceDefaultProfileRequiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_DEFAULT_PROFILE_REQUIRED","status":409,"title":"Voice Default Profile Required","type":"https://photon.codes/docs/problems/voice-default-profile-required"},"properties":{"code":{"const":"VOICE_DEFAULT_PROFILE_REQUIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Default Profile Required","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-default-profile-required","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceLineProfileAssignment":{"additionalProperties":false,"properties":{"profileId":{"type":"string"},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"projectId":{"type":"string"},"resourceId":{"type":"string"},"resourceVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},"required":["projectId","resourceId","resourceVersion","updatedAt"],"type":"object"},"VoiceLineProfileAssignmentUpdate":{"additionalProperties":false,"properties":{"expectedVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"profileId":{"anyOf":[{"type":"string"},{"type":"null"}]},"resourceId":{"type":"string"}},"required":["expectedVersion","profileId","resourceId"],"type":"object"},"VoiceOutboundConfiguredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_OUTBOUND_CONFIGURED","status":409,"title":"Voice Outbound Already Configured","type":"https://photon.codes/docs/problems/voice-outbound-configured"},"properties":{"code":{"const":"VOICE_OUTBOUND_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Already Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceOutboundCredentialRotationMode":{"enum":["normal","emergency"],"type":"string"},"VoiceOutboundNotConfiguredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_OUTBOUND_NOT_CONFIGURED","status":409,"title":"Voice Outbound Not Configured","type":"https://photon.codes/docs/problems/voice-outbound-not-configured"},"properties":{"code":{"const":"VOICE_OUTBOUND_NOT_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Not Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-not-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceOutboundOperationPendingProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_OUTBOUND_OPERATION_PENDING","status":409,"title":"Voice Outbound Operation Pending","type":"https://photon.codes/docs/problems/voice-outbound-operation-pending"},"properties":{"code":{"const":"VOICE_OUTBOUND_OPERATION_PENDING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Outbound Operation Pending","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-outbound-operation-pending","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceProfile":{"additionalProperties":false,"properties":{"configuration":{"$ref":"#/components/schemas/VoiceProfileConfiguration"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"isDefault":{"type":"boolean"},"lineCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"mediaEncryption":{"$ref":"#/components/schemas/VoiceProfileMediaEncryption"},"name":{"type":"string"},"profileId":{"type":"string"},"projectId":{"type":"string"},"protocol":{"const":"sip","type":"string"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"version":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["configuration","createdAt","isDefault","lineCount","mediaEncryption","name","profileId","projectId","protocol","updatedAt","version"],"type":"object"},"VoiceProfileConfiguration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"$ref":"#/components/schemas/SipInboundConfiguration"},{"type":"null"}]},"outbound":{"anyOf":[{"$ref":"#/components/schemas/SipOutboundConfiguration"},{"type":"null"}]}},"required":["inbound","outbound"],"type":"object"},"VoiceProfileDirectionConfiguredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_PROFILE_DIRECTION_CONFIGURED","status":409,"title":"Voice Profile Direction Configured","type":"https://photon.codes/docs/problems/voice-profile-direction-configured"},"properties":{"code":{"const":"VOICE_PROFILE_DIRECTION_CONFIGURED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Direction Configured","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-direction-configured","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceProfileInUseProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_PROFILE_IN_USE","status":409,"title":"Voice Profile In Use","type":"https://photon.codes/docs/problems/voice-profile-in-use"},"properties":{"code":{"const":"VOICE_PROFILE_IN_USE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile In Use","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-in-use","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceProfileInboundConfiguration":{"additionalProperties":false,"properties":{"inbound":{"anyOf":[{"$ref":"#/components/schemas/SipInboundConfiguration"},{"type":"null"}]},"profileVersion":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["inbound","profileVersion"],"type":"object"},"VoiceProfileMediaEncryption":{"enum":["auto","srtp"],"type":"string"},"VoiceProfileNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_PROFILE_NOT_FOUND","status":404,"title":"Voice Profile Not Found","type":"https://photon.codes/docs/problems/voice-profile-not-found"},"properties":{"code":{"const":"VOICE_PROFILE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Voice Profile Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"VoiceProfilePage":{"additionalProperties":false,"properties":{"nextPageToken":{"type":"string"},"profiles":{"items":{"$ref":"#/components/schemas/VoiceProfile"},"type":"array"}},"required":["profiles"],"type":"object"},"VoiceProfileVersionConflictProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"VOICE_PROFILE_VERSION_CONFLICT","status":409,"title":"Voice Profile Version Conflict","type":"https://photon.codes/docs/problems/voice-profile-version-conflict"},"properties":{"code":{"const":"VOICE_PROFILE_VERSION_CONFLICT","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"Voice Profile Version Conflict","type":"string"},"type":{"const":"https://photon.codes/docs/problems/voice-profile-version-conflict","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WebhookApiVersion":{"oneOf":[{"$ref":"#/components/schemas/SelectableWebhookApiVersion"},{"$ref":"#/components/schemas/DeprecatedWebhookApiVersion"}]},"WebhookApiVersionRetirement":{"additionalProperties":false,"properties":{"migrationGuide":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"}},"required":["migrationGuide","reason"],"type":"object"},"WebhookDestination":{"additionalProperties":false,"properties":{"apiVersion":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"createdAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"deletedAt":{"anyOf":[{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"destinationId":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"enabledEvents":{"$ref":"#/components/schemas/WebhookEventSelection"},"name":{"type":"string"},"projectId":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"},"status":{"$ref":"#/components/schemas/WebhookDestinationStatus"},"updatedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["apiVersion","createdAt","deletedAt","description","destinationId","enabledEvents","name","projectId","status","updatedAt","url"],"type":"object"},"WebhookDestinationDeletedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WEBHOOK_DESTINATION_DELETED","status":410,"title":"Webhook Destination Deleted","type":"https://photon.codes/docs/problems/webhook-destination-deleted"},"properties":{"code":{"const":"WEBHOOK_DESTINATION_DELETED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":410,"type":"number"},"title":{"const":"Webhook Destination Deleted","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-deleted","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WebhookDestinationNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WEBHOOK_DESTINATION_NOT_FOUND","status":404,"title":"Webhook Destination Not Found","type":"https://photon.codes/docs/problems/webhook-destination-not-found"},"properties":{"code":{"const":"WEBHOOK_DESTINATION_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"Webhook Destination Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/webhook-destination-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WebhookDestinationPage":{"additionalProperties":false,"properties":{"destinations":{"items":{"$ref":"#/components/schemas/WebhookDestination"},"type":"array"},"nextPageToken":{"minLength":1,"type":"string"}},"required":["destinations"],"type":"object"},"WebhookDestinationStatus":{"enum":["enabled","disabled"],"type":"string"},"WebhookEgressAddress":{"format":"ipv4","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$","type":"string"},"WebhookEventSchema":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"propertyNames":{"type":"string"},"type":"object"},"WebhookEventSelection":{"anyOf":[{"$ref":"#/components/schemas/AllWebhookEvents"},{"$ref":"#/components/schemas/WebhookEventTypeList"}]},"WebhookEventType":{"additionalProperties":false,"properties":{"audience":{"$ref":"#/components/schemas/WebhookEventTypeAudience"},"description":{"type":"string"},"schemaProfile":{"const":"reader","type":"string"},"schemaUrl":{"example":"/v1/projects/pho_prj_00000000000000000000000001/webhooks/event-types/message.received/schema?apiVersion=2026-07-01","format":"uri-reference","pattern":"^\\/v1\\/projects\\/.*","type":"string"},"type":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"}},"required":["audience","description","schemaProfile","schemaUrl","type"],"type":"object"},"WebhookEventTypeAudience":{"enum":["agent","infrastructure"],"type":"string"},"WebhookEventTypeList":{"items":{"$ref":"#/components/schemas/WebhookEventTypeName"},"maxItems":256,"minItems":1,"type":"array","uniqueItems":true},"WebhookEventTypeName":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"},"WebhookEventWildcard":{"const":"*","type":"string"},"WhatsappAccountDisconnectingProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_ACCOUNT_DISCONNECTING","status":409,"title":"WhatsApp Business Account Disconnecting","type":"https://photon.codes/docs/problems/whatsapp-account-disconnecting"},"properties":{"code":{"const":"WHATSAPP_ACCOUNT_DISCONNECTING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Disconnecting","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-disconnecting","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappAccountPhoneNumber":{"additionalProperties":false,"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"ownership":{"$ref":"#/components/schemas/WhatsappPhoneNumberOwnership"},"phoneNumber":{"pattern":"^\\+[1-9]\\d{1,14}$","type":"string"},"phoneNumberId":{"minLength":1,"type":"string"}},"required":["displayName","ownership","phoneNumber","phoneNumberId"],"type":"object"},"WhatsappAccountProvisioningProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_ACCOUNT_PROVISIONING","status":409,"title":"WhatsApp Business Account Has Provisioning Numbers","type":"https://photon.codes/docs/problems/whatsapp-account-provisioning"},"properties":{"code":{"const":"WHATSAPP_ACCOUNT_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Business Account Has Provisioning Numbers","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-account-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappBusinessAccount":{"additionalProperties":false,"properties":{"accountName":{"anyOf":[{"type":"string"},{"type":"null"}]},"alerts":{"items":{"$ref":"#/components/schemas/WhatsappBusinessAccountAlert"},"type":"array"},"businessId":{"type":"string"},"businessName":{"anyOf":[{"type":"string"},{"type":"null"}]},"connectedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"maxPhoneNumbersPerBusiness":{"maximum":2147483647,"minimum":0,"type":"integer"},"outboundCapacity":{"$ref":"#/components/schemas/WhatsappOutboundCapacity"},"restriction":{"anyOf":[{"$ref":"#/components/schemas/WhatsappBusinessAccountRestriction"},{"type":"null"}]},"reviewStatus":{"$ref":"#/components/schemas/WhatsappReviewStatus"},"senderCount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"subscribedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"wabaId":{"type":"string"}},"required":["accountName","alerts","businessId","businessName","connectedAt","outboundCapacity","restriction","reviewStatus","senderCount","wabaId"],"type":"object"},"WhatsappBusinessAccountAlert":{"additionalProperties":false,"properties":{"description":{"type":"string"},"entityId":{"type":"string"},"entityType":{"type":"string"},"observedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"severity":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["description","entityId","entityType","observedAt","severity","status","type"],"type":"object"},"WhatsappBusinessAccountRestriction":{"additionalProperties":false,"properties":{"observedAt":{"example":"2026-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"},"status":{"$ref":"#/components/schemas/WhatsappRestrictionStatus"}},"required":["observedAt","status"],"type":"object"},"WhatsappDisplayNameUnavailableProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_DISPLAY_NAME_UNAVAILABLE","status":422,"title":"WhatsApp Display Name Unavailable","type":"https://photon.codes/docs/problems/whatsapp-display-name-unavailable"},"properties":{"code":{"const":"WHATSAPP_DISPLAY_NAME_UNAVAILABLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"WhatsApp Display Name Unavailable","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-display-name-unavailable","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappModeDedicatedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_MODE_DEDICATED","status":409,"title":"WhatsApp Mode Is Dedicated","type":"https://photon.codes/docs/problems/whatsapp-mode-dedicated"},"properties":{"code":{"const":"WHATSAPP_MODE_DEDICATED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Mode Is Dedicated","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-mode-dedicated","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappOutboundCapacity":{"enum":["50","250","1000","2000","10000","100000","UNLIMITED","UNTIERED","UNKNOWN"],"type":"string"},"WhatsappPhoneNumberOwnership":{"enum":["photon","meta"],"type":"string"},"WhatsappRestrictionStatus":{"enum":["FLAGGED","DISABLED","REINSTATED","UNKNOWN"],"type":"string"},"WhatsappReviewStatus":{"enum":["PENDING","APPROVED","REJECTED","UNKNOWN"],"type":"string"},"WhatsappSenderConnectedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_SENDER_CONNECTED","status":409,"title":"WhatsApp Sender Connected","type":"https://photon.codes/docs/problems/whatsapp-sender-connected"},"properties":{"code":{"const":"WHATSAPP_SENDER_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappSenderProvisioningProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_SENDER_PROVISIONING","status":409,"title":"WhatsApp Sender Provisioning","type":"https://photon.codes/docs/problems/whatsapp-sender-provisioning"},"properties":{"code":{"const":"WHATSAPP_SENDER_PROVISIONING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp Sender Provisioning","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-sender-provisioning","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappVerificationCodeNotFoundProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_VERIFICATION_CODE_NOT_FOUND","status":404,"title":"WhatsApp Verification Code Not Found","type":"https://photon.codes/docs/problems/whatsapp-verification-code-not-found"},"properties":{"code":{"const":"WHATSAPP_VERIFICATION_CODE_NOT_FOUND","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Verification Code Not Found","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-verification-code-not-found","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappVerificationWindowExpiredProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_VERIFICATION_WINDOW_EXPIRED","status":422,"title":"WhatsApp Verification Window Expired","type":"https://photon.codes/docs/problems/whatsapp-verification-window-expired"},"properties":{"code":{"const":"WHATSAPP_VERIFICATION_WINDOW_EXPIRED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":422,"type":"number"},"title":{"const":"WhatsApp Verification Window Expired","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-verification-window-expired","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappVoipSourceNotEligibleProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE","status":404,"title":"WhatsApp VoIP Source Not Eligible","type":"https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible"},"properties":{"code":{"const":"WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp VoIP Source Not Eligible","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappVoipSourceReleasingProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_VOIP_SOURCE_RELEASING","status":409,"title":"WhatsApp VoIP Source Releasing","type":"https://photon.codes/docs/problems/whatsapp-voip-source-releasing"},"properties":{"code":{"const":"WHATSAPP_VOIP_SOURCE_RELEASING","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":409,"type":"number"},"title":{"const":"WhatsApp VoIP Source Releasing","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-voip-source-releasing","type":"string"}},"required":["code","status","title","type"],"type":"object"},"WhatsappWabaNotConnectedProblem":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"code":"WHATSAPP_WABA_NOT_CONNECTED","status":404,"title":"WhatsApp Business Account Not Connected","type":"https://photon.codes/docs/problems/whatsapp-waba-not-connected"},"properties":{"code":{"const":"WHATSAPP_WABA_NOT_CONNECTED","type":"string"},"detail":{"minLength":1,"type":"string"},"instance":{"minLength":1,"type":"string"},"remediation":{"not":{}},"requestId":{"minLength":1,"type":"string"},"status":{"const":404,"type":"number"},"title":{"const":"WhatsApp Business Account Not Connected","type":"string"},"type":{"const":"https://photon.codes/docs/problems/whatsapp-waba-not-connected","type":"string"}},"required":["code","status","title","type"],"type":"object"}},"securitySchemes":{"accountServiceKey":{"description":"Account Service Key, prefixed with `pho_ask_`, sent as `Authorization: Bearer `. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.","scheme":"bearer","type":"http"},"oauth2":{"description":"OAuth grant issued by the Photon authorization server. The token is a bearer JWT whose consented scope is intersected with the permissions the route grants; an empty intersection is `403 insufficient_scope`.","flows":{"authorizationCode":{"authorizationUrl":"https://auth.photon.codes/oauth2/authorize","scopes":{"account:create_project":"Create a project owned by the account.","account:read":"View account profile.","account:read_projects":"List projects associated with the account; does not grant access to project contents.","account:write":"Update account name and profile.","billing:read":"View invoices, usage, payment status.","events:read":"Query stored Events and discover their SQL schema within a project.","organization:create_project":"Create a project in the organization.","organization:read":"View organization name and avatar.","organization:read_projects":"List projects in the organization.","platforms:read":"View project platform configuration.","platforms:write":"Change project platform configuration.","project:delete":"Permanently delete the project.","project:read":"View non-sensitive project settings.","project:read_usage":"View project usage and costs.","project:write":"Change agent profiles, webhook settings, and other project configuration.","ten_dlc:read":"View organization 10DLC Brand and Campaign registration records.","ten_dlc:write":"Register and update organization 10DLC Brands and Campaigns, including OTP operations."},"tokenUrl":"https://auth.photon.codes/oauth2/token"}},"type":"oauth2"},"projectApiKey":{"description":"Project API key, `pho_sk_` prefixed, sent as `Authorization: Bearer `. Bound to one project, so it is accepted only under `/v1/projects/{projectId}` and refused everywhere else.","scheme":"bearer","type":"http"},"serviceIdentityBearer":{"description":"Organization Service Identity API key or M2M access token, sent as `Authorization: Bearer `. Restricted to its organization and explicitly granted business permissions. It does not authorize human organization governance or Photon credential management. Never send an M2M client secret to a business endpoint.","scheme":"bearer","type":"http"}}},"info":{"title":"Photon API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/v1/account":{"delete":{"description":"Deletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier.","operationId":"deleteAccount","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The deleted account tombstone.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountOwnsOrganizationsProblem"}}},"description":"ACCOUNT_OWNS_ORGANIZATIONS: Account Owns Organizations","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteAccountGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Delete the authenticated account","tags":["Account"],"x-required-permissions":["security:write"]},"get":{"description":"Returns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile.","operationId":"getAccount","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The authenticated account.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAccountGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:read"]}],"summary":"Get the authenticated account","tags":["Account"],"x-required-permissions":["account:read"]},"patch":{"description":"Updates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header.","operationId":"updateAccount","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The updated account.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountBadRequestProblem"}}},"description":"HTTP_ERROR: Request Failed; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountUnprocessableEntityProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAccountGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Update the authenticated account","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/oauth/authorized-applications":{"get":{"description":"Lists the OAuth applications authorized by the authenticated user.","operationId":"listAuthorizedApplications","parameters":[{"description":"Pagination cursor from listMetadata.after for the next page. Cannot be combined with before.","in":"query","name":"after","schema":{"maxLength":128,"minLength":1,"type":"string"}},{"description":"Pagination cursor from listMetadata.before for the previous page. Cannot be combined with after.","in":"query","name":"before","schema":{"maxLength":128,"minLength":1,"type":"string"}},{"description":"Maximum number of authorized applications to return, from 1 to 100. Omit to use the default page size.","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Result ordering: normal, descending (desc), or ascending (asc). Omit to use the default order.","in":"query","name":"order","schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsOrder"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsResponse"}}},"description":"OAuth applications authorized by the authenticated user.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAuthorizedApplicationsGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"List connected applications","tags":["Connected Applications"]}},"/v1/account/oauth/authorized-applications/{applicationId}":{"delete":{"description":"Revokes the authenticated user's grant for one OAuth application.","operationId":"revokeAuthorizedApplication","parameters":[{"description":"Authorized application's id, prefixed with connect_app_. Use application.id from the list response, not its clientId or authorizationId.","in":"path","name":"applicationId","required":true,"schema":{"maxLength":128,"pattern":"^connect_app_[A-Za-z0-9]+$","type":"string"}}],"responses":{"204":{"description":"OAuth application grant revoked.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAuthorizedApplicationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Revoke a connected application","tags":["Connected Applications"]}},"/v1/account/phone":{"put":{"description":"Binds the number once the code is approved. Repeat calls return the bound Account.","operationId":"confirmAccountPhoneVerification","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The Account with its verified phone number.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfirmAccountPhoneVerificationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Confirm a phone number verification","tags":["Account"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["account:write"]}},"/v1/account/phone/verifications":{"post":{"description":"Sends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After.","operationId":"startAccountPhoneVerification","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationResponse"}}},"description":"A pending verification. The Account is unchanged.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/StartAccountPhoneVerificationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Start a phone number verification","tags":["Account"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["account:write"]}},"/v1/account/profile-picture":{"delete":{"description":"Removes the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header.","operationId":"resetAccountProfilePicture","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The Account reset to its default profile picture.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureUnprocessableEntityProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAccountProfilePictureGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Remove a profile picture","tags":["Account"],"x-required-permissions":["account:write"]},"put":{"description":"Commits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account.","operationId":"commitAccountProfilePicture","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"The Account with its committed profile picture.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureUnprocessableEntityProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAccountProfilePictureGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Commit a profile picture","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/profile-picture/uploads":{"post":{"description":"Creates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields.","operationId":"createAccountProfilePictureUpload","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilePictureUploadRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfilePictureUpload"}}},"description":"A short-lived, Account-bound presigned S3 POST.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountProfilePictureUploadGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"oauth2":["account:write"]}],"summary":"Create a profile picture upload","tags":["Account"],"x-required-permissions":["account:write"]}},"/v1/account/service-keys":{"get":{"description":"Returns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created.","operationId":"listAccountServiceKeys","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysResponse"}}},"description":"Unrevoked Account Service Key metadata, including expired keys, newest first.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAccountServiceKeysGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"List Account Service Keys","tags":["Account Service Keys"],"x-required-permissions":["security:read"]},"post":{"description":"Creates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header.","operationId":"createAccountServiceKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyResponse"}}},"description":"The created Account Service Key and its one-time credential.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountServiceKeyLimitReachedProblem"}}},"description":"ACCOUNT_SERVICE_KEY_LIMIT_REACHED: Account Service Key Limit Reached","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyUnprocessableEntityProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAccountServiceKeyGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Create an Account Service Key","tags":["Account Service Keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["security:write"]}},"/v1/account/service-keys/{serviceKeyId}":{"delete":{"description":"Revokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header.","operationId":"revokeAccountServiceKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"serviceKeyId","required":true,"schema":{"pattern":"^pho_ask_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyResponse"}}},"description":"The revoked key metadata. Repeated revocation is stable.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyNotFoundProblem"}}},"description":"ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AccountDeletedProblem"}}},"description":"ACCOUNT_DELETED: Account Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyUnprocessableEntityProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeAccountServiceKeyGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Revoke an Account Service Key","tags":["Account Service Keys"],"x-required-permissions":["security:write"]}},"/v1/auth/device/code":{"post":{"description":"Starts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored.","operationId":"deviceAuthorize","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthorizeResponse"}}},"description":"Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"description":"The authorization request was rejected. OAuth errors use error and error_description fields.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"Start Device Authorization","tags":["Device Authorization"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/device/token":{"post":{"description":"Exchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.\n\nThis SDK method sends uncompressed JSON (application/json). Other request formats described above apply to direct HTTP requests.","operationId":"deviceToken","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenRequest"}}},"description":"Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenResponse"}}},"description":"Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenBadRequestResponse"}}},"description":"authorization_pending, slow_down, access_denied, expired_token, invalid_grant, invalid_request, or unsupported_grant_type. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"description":"Relayed slow_down; back off the polling interval.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"description":"server_error: the login could not be completed; retry the login from the start.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"Exchange Device Code or Refresh Token","tags":["Device Authorization"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/login/enrollment":{"post":{"description":"Returns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials.","operationId":"startEnterpriseLogin","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEnterpriseLoginRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEnterpriseLoginResponse"}}},"description":"Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidReturnToProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"Start company sign-in without an existing Account","tags":["Authentication"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/oauth/scopes":{"get":{"description":"Lists the business permissions available to OAuth applications.","operationId":"listOauthScopes","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOauthScopesResponse"}}},"description":"The configurable OAuth business permissions.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOauthScopesGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"List OAuth scopes","tags":["OAuth Discovery"]}},"/v1/auth/organizations/{orgId}/connection-status":{"get":{"description":"Requires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization.","operationId":"getOrganizationConnectionStatus","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationConnectionStatus"}}},"description":"Organization mapping and current member synchronization.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationConnectionNotFoundProblem"}}},"description":"ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSyncUnavailableProblem"}}},"description":"ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationConnectionStatusGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Read organization and own membership synchronization","tags":["Organization Connections"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/connection-sync/retry":{"post":{"description":"Reconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy.","operationId":"retryOrganizationConnectionSync","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationConnectionStatus"}}},"description":"Current synchronization state after requesting retry.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationConnectionNotFoundProblem"}}},"description":"ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSyncUnavailableProblem"}}},"description":"ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationConnectionSyncGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Retry own organization connection synchronization","tags":["Organization Connections"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso":{"get":{"description":"Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings.","operationId":"getOrganizationSsoConfiguration","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConfiguration"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationSsoConfigurationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Read organization SSO configuration","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}},"patch":{"description":"Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing.","operationId":"updateOrganizationSsoPolicy","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConfiguration"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationSsoPolicyGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Update organization SSO policy","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/admission":{"post":{"description":"Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership.","operationId":"beginOrganizationSsoAdmission","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRedirect"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationSsoAdmissionGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Begin organization SSO admission for an existing Account","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/authenticate":{"post":{"description":"Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session.","operationId":"beginOrganizationAuthentication","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRedirect"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationAuthenticationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate to the current organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/closure-authenticate":{"post":{"description":"Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization.","operationId":"beginOrganizationClosureAuthentication","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRedirect"}}},"description":"Targeted SSO authorization URL.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginOrganizationClosureAuthenticationGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate the current Owner to inspect organization closure","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/disable":{"post":{"description":"Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run.","operationId":"disableOrganizationSso","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConfiguration"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisableOrganizationSsoGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Turn organization SSO off","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/invitation":{"post":{"description":"Returns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation.","operationId":"beginInvitationSso","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAuthenticationRedirect"}}},"description":"Invitation-bound SSO authorization URL.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BeginInvitationSsoGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Authenticate to an invitation's organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/portal":{"post":{"description":"Returns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow.","operationId":"createOrganizationSsoPortalLink","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkResponse"}}},"description":"Short-lived provider setup link.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSsoPortalLinkGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Create organization SSO setup portal","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/auth/organizations/{orgId}/sso/refresh":{"post":{"description":"Refreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body.","operationId":"refreshOrganizationSsoConnection","parameters":[{"in":"path","name":"orgId","required":true,"schema":{"pattern":"^pho_org_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConfiguration"}}},"description":"Current connection and independent local policy state.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionBadRequestProblem"}}},"description":"INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoNotFoundProblem"}}},"description":"ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OrganizationSsoConflictProblem"}}},"description":"ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionPreconditionFailedProblem"}}},"description":"ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RefreshOrganizationSsoConnectionGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Refresh organization SSO connection","tags":["Organization SSO"],"x-photon-mcp":{"enabled":false}}},"/v1/installation-requests":{"post":{"description":"Authenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required.","operationId":"createAppInstallationRequest","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestResponse"}}},"description":"Installation request metadata. No customer credential or access is issued.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AppInstallationAssertionInvalidProblem"}}},"description":"APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestConflictProblem"}}},"description":"APP_INSTALLATION_ASSERTION_REPLAYED: Installation Assertion Already Used; APP_INSTALLATION_CONFIG_CHANGED: Installation App Configuration Changed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAppInstallationRequestGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"Request an app installation","tags":["App Installations"],"x-photon-mcp":{"enabled":false}}},"/v1/installation-requests/redeem":{"post":{"description":"The registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential.","operationId":"redeemAppInstallationDelivery","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryResponse"}}},"description":"First successful delivery or metadata-only operation status.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AppInstallationAssertionInvalidProblem"}}},"description":"APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AppInstallationDeliveryUnavailableProblem"}}},"description":"APP_INSTALLATION_DELIVERY_UNAVAILABLE: Installation Delivery Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RedeemAppInstallationDeliveryGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[],"summary":"Redeem an approved installation credential","tags":["App Installations"],"x-photon-mcp":{"enabled":false}}},"/v1/organizations/{organizationId}/billing":{"get":{"description":"Returns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan.","operationId":"getOrganizationBillingOverview","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewResponse"}}},"description":"The organization-owned plan and its resolved entitlements.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingOverviewGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"Get the organization's billing overview","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/checkout":{"post":{"description":"Returns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward.","operationId":"createOrganizationPaymentMethodCheckout","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutResponse"}}},"description":"Hosted card-capture page for the organization.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; PAYMENT_PROVIDER_NOT_READY: Payment Provider Not Ready\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Get a payment-method checkout URL for the organization","tags":["Organization Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/invoices":{"get":{"description":"Returns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription.","operationId":"listInvoices","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListInvoicesResponse"}}},"description":"A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListInvoicesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"List invoices","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/payment-method":{"get":{"description":"Reports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session.","operationId":"getOrganizationPaymentMethod","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodResponse"}}},"description":"Whether the organization has a captured card and its metadata.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOrganizationPaymentMethodGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]},{"oauth2":["billing:read"]}],"summary":"Check the organization for a card on file","tags":["Organization Billing"],"x-required-permissions":["billing:read"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/cancel":{"post":{"description":"Schedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization.","operationId":"cancelSubscription","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse"}}},"description":"The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionConflictProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Cancel a category at the end of its billing period","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/purchase":{"post":{"description":"Purchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization.","operationId":"changePlan","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalBillingOperation"}}},"description":"The idempotency key resolved to an operation that is already terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingBillingOperation"}}},"description":"Plan change accepted. Poll the returned operation until it succeeds or fails.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical billing operation to poll for completion.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum seconds to wait before polling again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanConflictProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ChangePlanGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Purchase or change a category's plan","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/projects/{projectId}/resume":{"post":{"description":"Removes a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization.","operationId":"resumeSubscription","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionResponse"}}},"description":"Removes a scheduled cancellation so the category renews normally.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionConflictProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResumeSubscriptionGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Resume a category scheduled for cancellation","tags":["Project Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/billing/setup-intent":{"post":{"description":"Creates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret.","operationId":"createOrganizationSetupIntent","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentResponse"}}},"description":"Payment-provider client configuration (client secret and publishable key) for capturing the organization's card.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentBadRequestProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationSetupIntentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Create a SetupIntent for an in-app card capture","tags":["Organization Billing"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["billing:manage"]}},"/v1/organizations/{organizationId}/projects":{"get":{"description":"Returns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter.","operationId":"listProjects","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"createdAfter","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"query","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"maxLength":2048,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage"}}},"description":"One page of active projects in the organization.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectsGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"List accessible projects","tags":["Projects"],"x-required-permissions":["organization:read_projects"]},"post":{"description":"Creates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project.","operationId":"createProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The created project.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/SlugTakenProblem"}}},"description":"SLUG_TAKEN: Slug Already Taken","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Create a project","tags":["Projects"],"x-required-permissions":["organization:create_project"]}},"/v1/organizations/{organizationId}/projects/closure-status":{"get":{"description":"Returns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion.","operationId":"getProjectClosureStatus","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusResponse"}}},"description":"Current cleanup and settlement evidence. Project deletion alone does not establish readiness.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectClosureStatusGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Read project closure progress","tags":["Projects"],"x-required-permissions":["organization:read_projects"]}},"/v1/organizations/{organizationId}/projects/count":{"get":{"description":"Counts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged.","operationId":"countProjects","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"createdAfter","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}},{"in":"query","name":"query","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCount"}}},"description":"The number of matching projects.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CountProjectsGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Count accessible projects","tags":["Projects"],"x-required-permissions":["organization:read_projects"]}},"/v1/organizations/{organizationId}/projects/slug-availability":{"get":{"description":"Reports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason.","operationId":"checkProjectSlugAvailability","parameters":[{"in":"path","name":"organizationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"slug","required":true,"schema":{"maxLength":63,"minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityResponse"}}},"description":"Whether the slug can be allocated, and why not.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CheckProjectSlugAvailabilityGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Check slug availability","tags":["Projects"],"x-required-permissions":["organization:create_project"]}},"/v1/projects/{id}/attachments":{"get":{"description":"Lists the Project's Attachment metadata, with optional time filters.","operationId":"listAttachments","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"Exclusive upper bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.","in":"query","name":"createdBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Inclusive lower bound on createdAt, RFC 3339. Cannot combine with updatedAt bounds.","in":"query","name":"createdSince","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Direction along orderBy; desc, the default, is newest first","in":"query","name":"order","schema":{"$ref":"#/components/schemas/SortOrder"}},{"description":"Sort timestamp; defaults to the filtered timestamp, otherwise created_at. Must match the time bounds.","in":"query","name":"orderBy","schema":{"$ref":"#/components/schemas/TimestampOrderBy"}},{"description":"Items per page. A value above 100 returns at most 100 items.","in":"query","name":"pageSize","schema":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},{"description":"Token from nextPageToken. Keep the same Project and query.","in":"query","name":"pageToken","schema":{"maxLength":4096,"minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$","type":"string"}},{"description":"Exclusive upper bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.","in":"query","name":"updatedBefore","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}},{"description":"Inclusive lower bound on updatedAt, RFC 3339. Cannot combine with createdAt bounds.","in":"query","name":"updatedSince","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentPage"}}},"description":"A page of Project Attachments in the requested order.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListAttachmentsGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List Project Attachments","tags":["Attachments"],"x-required-permissions":["project:read"]},"post":{"description":"Uploads a file and returns its Attachment once ready to download.","operationId":"uploadAttachment","parameters":[{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"header","name":"content-length","required":true,"schema":{"pattern":"^[1-9][0-9]*$","type":"string"}},{"in":"header","name":"content-type","required":true,"schema":{"maxLength":512,"type":"string"}},{"description":"Reuse the same key and request for retries.","in":"header","name":"idempotency-key","required":true,"schema":{"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}}],"requestBody":{"content":{"multipart/related":{"schema":{"format":"binary","type":"string"}}},"description":"Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attachment"}}},"description":"The attachment upload had already been committed.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attachment"}}},"description":"The attachment was uploaded and committed.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical resource URL of the Attachment.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentBadRequestProblem"}}},"description":"HTTP_ERROR: Request Failed; INVALID_ATTACHMENT_REQUEST: Invalid Attachment Request","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentConflictProblem"}}},"description":"ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Upload an Attachment","tags":["Attachments"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{id}/attachments/{attachmentId}":{"get":{"description":"Returns an Attachment's metadata. Use the content endpoint to download its bytes.","operationId":"getAttachment","parameters":[{"in":"path","name":"attachmentId","required":true,"schema":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attachment"}}},"description":"The Attachment resource.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AttachmentNotFoundProblem"}}},"description":"ATTACHMENT_NOT_FOUND: Attachment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAttachmentGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get an Attachment","tags":["Attachments"],"x-required-permissions":["project:read"]}},"/v1/projects/{id}/attachments/{attachmentId}/content":{"get":{"description":"Downloads an Attachment's bytes. If unavailable after ten seconds, returns ATTACHMENT_NOT_READY with Retry-After: 5.","operationId":"downloadAttachment","parameters":[{"in":"path","name":"attachmentId","required":true,"schema":{"pattern":"^pho_att_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentResponse"}}},"description":"The Attachment's raw file bytes. Content-Type identifies the media type of the response.","headers":{"Content-Disposition":{"description":"Attachment disposition using the filename declared during upload.","schema":{"type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AttachmentNotFoundProblem"}}},"description":"ATTACHMENT_NOT_FOUND: Attachment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AttachmentNotReadyProblem"}}},"description":"ATTACHMENT_NOT_READY: Attachment Not Ready","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Seconds to wait before retrying the download.","schema":{"$ref":"#/components/schemas/AttachmentNotReadyRetryAfter"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DownloadAttachmentGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Download an Attachment","tags":["Attachments"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:read"]}},"/v1/projects/{id}/platforms":{"get":{"description":"Lists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listProjectPlatforms","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsResponse"}}},"description":"Every platform type available to the project.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectPlatformsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List project platforms","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/email/domains":{"post":{"description":"Reserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.","operationId":"connectEmailDomain","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectEmailDomainGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect email domain","tags":["Email domains"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage":{"get":{"description":"Reports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getProjectImessagePlatform","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPlatformSettings"}}},"description":"The project's iMessage line mode.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformServiceUnavailableProblem"}}},"description":"BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectImessagePlatformGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get project iMessage platform","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/imessage/assignments":{"get":{"description":"Lists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listSharedLineAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"includeReleased","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignmentPage"}}},"description":"A page of shared line assignments.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListSharedLineAssignmentsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List shared line assignments","tags":["Shared line assignments"],"x-required-permissions":["platforms:read"]},"post":{"description":"Maps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path.","operationId":"createSharedLineAssignment","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The created shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}":{"delete":{"description":"Releases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The released shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignmentNotFoundProblem"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignmentNotFoundProblem"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get shared line assignment","tags":["Shared line assignments"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/imessage/dedicated":{"post":{"description":"Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path.","operationId":"provisionImessageDedicatedLine","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectClosingProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionImessageDedicatedLineGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Provision dedicated iMessage line","tags":["Dedicated iMessage lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/imessage/dedicated/{resourceId}":{"delete":{"description":"Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure.","operationId":"releaseImessageDedicatedLine","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The iMessage product and its charge period were removed.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The removal is still running. GET the Location after the Retry-After interval.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseImessageDedicatedLineGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release dedicated iMessage line","tags":["Dedicated iMessage lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/operations":{"get":{"description":"Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listOperations","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"resourceId","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"type","schema":{"$ref":"#/components/schemas/OperationType"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationPage"}}},"description":"A page of the project's operations.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListOperationsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List operations","tags":["Operations"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/operations/{operationId}":{"get":{"description":"Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getOperation","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"operationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOperationResponse"}}},"description":"The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OperationNotFoundProblem"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetOperationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get operation","tags":["Operations"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/operations/{operationId}/cancel":{"post":{"description":"Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path.","operationId":"cancelOperation","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"operationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The cancelled operation.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OperationNotFoundProblem"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OperationNotCancellableProblem"}}},"description":"OPERATION_NOT_CANCELLABLE: Operation Not Cancellable","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CancelOperationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Cancel operation","tags":["Operations"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/resources":{"get":{"description":"Lists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listResources","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"ability","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"state","schema":{"minLength":1,"type":"string"}},{"in":"query","name":"type","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourcePage"}}},"description":"A page of the project's resources.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListResourcesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List resources","tags":["Resources"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/resources/{resourceId}":{"delete":{"description":"Gives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseResource","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The release finished inside this request. The resource is gone.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The release is still running at the provider. GET the Location after the Retry-After interval; a terminal answer may arrive on any read.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceConflictProblem"}}},"description":"WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseResourceGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release resource","tags":["Resources"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getResource","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Resource"}}},"description":"The resource.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetResourceGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get resource","tags":["Resources"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/sms/lines/{resourceId}/campaign":{"delete":{"description":"Any project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously.","operationId":"unassignSmsLineCampaign","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The original terminal operation on an authorized replay. No Retry-After is emitted.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"Assignment accepted. Poll the operation Location until terminal.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignBadRequestProblem"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignNotFoundProblem"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignSmsLineCampaignGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Remove SMS line campaign","tags":["SMS campaigns"],"x-required-permissions":["platforms:write"]},"get":{"description":"Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee.","operationId":"getSmsLineCampaignAssignment","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentResponse"}}},"description":"Current assignment, including an untouched version of 1.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/SmsCampaignInvalidRequestProblem"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentNotFoundProblem"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetSmsLineCampaignAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Read SMS line campaign assignment","tags":["SMS campaigns"],"x-required-permissions":["platforms:read"]},"put":{"description":"Attach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously.","operationId":"assignSmsLineCampaign","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The original terminal operation on an authorized replay. No Retry-After is emitted.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"Assignment accepted. Poll the operation Location until terminal.","headers":{"Cache-Control":{"description":"Assignment and operation responses must not be cached.","schema":{"example":"no-store","type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignBadRequestProblem"}}},"description":"SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignNotFoundProblem"}}},"description":"SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/IdempotencyKeyReusedProblem"}}},"description":"IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignSmsLineCampaignGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Assign or replace SMS line campaign","tags":["SMS campaigns"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/sms/numbers":{"post":{"description":"Buys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path.","operationId":"purchaseSmsNumber","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectClosingProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PurchaseSmsNumberGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Purchase SMS number","tags":["SMS numbers"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/sms/numbers/area-codes":{"get":{"description":"Lists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project.","operationId":"listNumberAreaCodes","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"countryCode","required":true,"schema":{"const":"US","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesResponse"}}},"description":"Current area-code coverage. An empty list is a successful coverage read, not an upstream failure.","headers":{"Cache-Control":{"description":"Private cache with the remaining five-minute service-cache lifetime.","schema":{"type":"string"}},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberAreaCodesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List supported number area codes","tags":["SMS numbers"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/sms/numbers/countries":{"get":{"description":"Lists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project.","operationId":"listNumberCountries","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesResponse"}}},"description":"Supported countries.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListNumberCountriesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List supported number countries","tags":["SMS numbers"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/telegram/bots":{"post":{"description":"Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged.","operationId":"connectTelegramBot","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"Setup accepted. Open detail.setupUrl and poll the operation.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotConflictProblem"}}},"description":"TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectTelegramBotGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect Telegram bot","tags":["Telegram"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/lines/profile-assignments/batch":{"post":{"description":"Atomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project.","operationId":"batchUpdateVoiceLineProfileAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsResponse"}}},"description":"The updated line profile assignments.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Batch update Voice line profile assignments","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile":{"delete":{"description":"Removes a line's explicit override when the resource version matches so the line follows the project default. Profiles and the pstn_voice ability are unchanged. Requires platforms:write bound to the path project.","operationId":"unassignVoiceLineProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"204":{"description":"The Voice profile was unassigned.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileVersionConflictProblem"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UnassignVoiceLineProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Unassign Voice line profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project.","operationId":"getVoiceLineProfileAssignment","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceLineProfileAssignment"}}},"description":"The line profile assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceLineProfileAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get Voice line profile assignment","tags":["Voice"],"x-required-permissions":["platforms:read"]},"put":{"description":"Assigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project.","operationId":"assignVoiceLineProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceLineProfileAssignment"}}},"description":"The updated Voice line profile assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignVoiceLineProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Assign Voice line profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles":{"get":{"description":"Lists reusable Voice profiles in this project. Requires platforms:read bound to the path project.","operationId":"listVoiceProfiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"default","schema":{"$ref":"#/components/schemas/ListVoiceProfilesDefaultInput"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfilePage"}}},"description":"A page of Voice profiles.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListVoiceProfilesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List Voice profiles","tags":["Voice"],"x-required-permissions":["platforms:read"]},"post":{"description":"Creates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project.","operationId":"createVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The created Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/default":{"get":{"description":"Gets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project.","operationId":"getDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The current default Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetDefaultVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:read"]},"patch":{"description":"Patches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project.","operationId":"updateDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The updated default Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"put":{"description":"Creates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project.","operationId":"createDefaultVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The identically replayed default Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The created default Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateDefaultVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create default Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}":{"delete":{"description":"Deletes an additional profile when expectedVersion matches. Assigned profiles require force=true, which atomically removes every stored override so affected lines follow the default. The default can never be deleted. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},{"in":"query","name":"force","schema":{"$ref":"#/components/schemas/DeleteVoiceProfileForceInput"}}],"responses":{"204":{"description":"The Voice profile was deleted.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileConflictProblem"}}},"description":"VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN: Voice Default Profile Deletion Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Delete Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project.","operationId":"getVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get Voice profile","tags":["Voice"],"x-required-permissions":["platforms:read"]},"patch":{"description":"Patches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfile"}}},"description":"The updated Voice profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile","tags":["Voice"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound":{"delete":{"description":"Removes a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfileInboundConfiguration"}}},"description":"The removed inbound configuration and next profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundConflictProblem"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileInboundGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Remove Voice profile inbound configuration","tags":["Voice"],"x-required-permissions":["platforms:write"]},"patch":{"description":"Updates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfileInboundConfiguration"}}},"description":"The updated inbound configuration and profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileInboundGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile inbound configuration","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]},"put":{"description":"Creates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project.","operationId":"replaceVoiceProfileInbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfileInboundConfiguration"}}},"description":"The replaced inbound configuration and profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceProfileInboundConfiguration"}}},"description":"The newly created inbound configuration and profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReplaceVoiceProfileInboundGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create or replace Voice profile inbound configuration","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound":{"delete":{"description":"Revokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project.","operationId":"deleteVoiceProfileOutbound","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}},{"in":"query","name":"expectedVersion","required":true,"schema":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundResponse"}}},"description":"Outbound calling was revoked.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundConflictProblem"}}},"description":"VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteVoiceProfileOutboundGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Revoke Voice profile outbound credential","tags":["Voice"],"x-required-permissions":["platforms:write"]},"patch":{"description":"Changes a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project.","operationId":"updateVoiceProfileOutboundAuthentication","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationResponse"}}},"description":"The current outbound configuration and profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update Voice profile outbound authentication policy","tags":["Voice"],"x-required-permissions":["platforms:write"]},"put":{"description":"Configures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.","operationId":"configureVoiceProfileOutbound","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse"}}},"description":"An idempotent replay with an explicit null password.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundResponse"}}},"description":"The configured outbound connection and display-once password.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_CONFIGURED: Voice Outbound Already Configured","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConfigureVoiceProfileOutboundGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Configure Voice profile outbound credential","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound/rotate":{"post":{"description":"Rotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project.","operationId":"rotateVoiceProfileOutboundCredential","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"profileId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialResponse"}}},"description":"The rotated password result and next profile version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/VoiceProfileNotFoundProblem"}}},"description":"VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Rotate Voice outbound credential","tags":["Voice"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp":{"get":{"description":"Reports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getProjectWhatsappPlatform","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPlatformSettings"}}},"description":"The project's WhatsApp line mode.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformServiceUnavailableProblem"}}},"description":"BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectWhatsappPlatformGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get project WhatsApp platform","tags":["Platforms"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account":{"delete":{"description":"Disconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted.","operationId":"disconnectWhatsappBusinessAccount","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The replayed disconnect operation is terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"Account disconnect accepted. Poll Location after Retry-After.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WhatsappWabaNotConnectedProblem"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountConflictProblem"}}},"description":"WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DisconnectWhatsappBusinessAccountGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Disconnect WhatsApp Business account and numbers","tags":["WhatsApp Business"],"x-required-permissions":["platforms:write"]},"get":{"description":"Gets the one WhatsApp Business Account this project has connected, with its number of live senders. Senders are resources and are listed by GET /platforms/resources?ability=whatsapp_business. The account is not a resource and carries no access token. Meta's retained numbers are listed separately by GET /platforms/whatsapp-business/account/phone-numbers. `subscribedAt` is absent until our app is attached to the account's webhooks. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappBusinessAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappBusinessAccount"}}},"description":"The project's connected account.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WhatsappWabaNotConnectedProblem"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessAccountGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp Business account","tags":["WhatsApp Business"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account/phone-numbers":{"get":{"description":"Lists the connected WABA's phone numbers directly from Meta, including numbers whose Photon sender was disconnected. Ownership is photon for a number in this project's current Photon inventory and meta otherwise. Match a Photon SMS number by its E.164 phoneNumber and reuse its existing displayName when reconnecting. A null name is unavailable, not permission to choose a new name. A failed lookup returns an error rather than an empty list. Requires platforms:read on the path project.","operationId":"listWhatsappAccountPhoneNumbers","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersResponse"}}},"description":"The current Meta number inventory for the connected WABA.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WhatsappWabaNotConnectedProblem"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List WhatsApp account phone numbers","tags":["WhatsApp Business"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp-business/account/senders":{"post":{"description":"Registers an active, SMS-capable Photon VoIP line on this project's connected WhatsApp Business Account. The account is resolved server-side; callers never select a WABA. The platform creates or reuses the Meta number, requests and consumes the SMS ownership code internally, verifies it, and registers the sender. displayName is optional; when omitted the project agent profile name is snapshotted before acceptance. The VoIP line remains a separate resource and never receives the whatsapp_business ability.","operationId":"createWhatsappVoipSender","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The sender provision was accepted. Poll the Location after Retry-After until the operation is terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderNotFoundProblem"}}},"description":"WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers; WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning; WHATSAPP_VOIP_SOURCE_RELEASING: WhatsApp VoIP Source Releasing","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; WHATSAPP_DISPLAY_NAME_UNAVAILABLE: WhatsApp Display Name Unavailable; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappVoipSenderGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create a VoIP-backed WhatsApp sender","tags":["WhatsApp Business"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/numbers":{"post":{"description":"Exchanges the authorization code Embedded Signup returned and connects exactly the selected phone number as one `whatsapp_sender`. Send the WABA id and phone-number id emitted by the same popup attempt; both are treated as selectors and verified against Meta before use. A selected number that matches a non-retired, same-project `voip_line` is linked to it; a number absent from Photon inventory stays unbound; a matching non-retired `cosmos_line`, foreign VoIP line or unassigned VoIP line fails the operation before registration. Connecting is free — no plan requirement — but Billing must report the project's organization as ready with a payment method on file. The Idempotency-Key is required and permanent: replaying the same key returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path.","operationId":"connectWhatsappBusiness","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The code was accepted and onboarding was dispatched. GET the Location after the Retry-After interval until the operation is terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectClosingProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ConnectWhatsappBusinessGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Connect WhatsApp Business","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/numbers/{resourceId}/verification-code":{"get":{"description":"Returns the latest six-digit WhatsApp Business ownership code received by SMS for an active Photon VOIP number, but only when its provider timestamp is strictly newer than the required receivedAfter boundary. receivedAfter must be an RFC 3339 timestamp between this request's arrival time and two minutes before it; once it expires, restart Meta's verification flow with a new boundary. A missing newer code is a retryable 404 with Retry-After: 2. Poll after 2, 4, 8, then 10 seconds, applying ±20% jitter and capping later intervals at 10 seconds. Stop when the original boundary is two minutes old. Responses are never cached. Requires the platforms:write permission bound to the project resource in the path.","operationId":"getWhatsappBusinessVerificationCode","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"receivedAfter","required":true,"schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeResponse"}}},"description":"A verification code received strictly after receivedAfter. Treat it as an authentication secret.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; WHATSAPP_VERIFICATION_WINDOW_EXPIRED: WhatsApp Verification Window Expired","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp Business verification code","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp-business/signup-config":{"get":{"description":"Returns what the browser needs to open Meta's Embedded Signup popup: the Facebook Login for Business configuration id, the Graph version to run against, and the scopes it will request. Answered in-process rather than forwarded, so the first step of onboarding survives an outage of the private service. Pass `configId` to `FB.login` as `config_id` with `response_type: 'code'` and `override_default_response_type: true`. Do NOT add a `featureType` — omitting it is what keeps the phone-number screen in the flow, and `only_waba_sharing` produces an account with no number that cannot be provisioned. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappSignupConfig","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigResponse"}}},"description":"The parameters to launch Embedded Signup with.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSignupConfigInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp signup config","tags":["WhatsApp Business"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp/assignments":{"get":{"description":"Lists the project's WhatsApp shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.","operationId":"listWhatsappSharedLineAssignments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"includeReleased","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignmentPage"}}},"description":"A page of WhatsApp shared line assignments.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List WhatsApp shared line assignments","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:read"]},"post":{"description":"Maps an end user's phone number onto one of the project's pooled shared WhatsApp lines, consuming a seat from the project's WhatsApp entitlement. The assigned number is allocated by the server. When an email address is supplied the user is sent an invite asynchronously; the response never reports whether that succeeded. Requires the platforms:write permission bound to the project resource in the path.","operationId":"createWhatsappSharedLineAssignment","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The created WhatsApp shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentConflictProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp/assignments/{assignmentId}":{"delete":{"description":"Releases a WhatsApp shared line assignment, freeing its seat for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.","operationId":"releaseWhatsappSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The released WhatsApp shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignmentNotFoundProblem"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:write"]},"get":{"description":"Reads one WhatsApp shared line assignment. Requires the platforms:read permission bound to the project resource in the path.","operationId":"getWhatsappSharedLineAssignment","parameters":[{"in":"path","name":"assignmentId","required":true,"schema":{"type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedLineAssignment"}}},"description":"The WhatsApp shared line assignment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AssignmentNotFoundProblem"}}},"description":"ASSIGNMENT_NOT_FOUND: Assignment Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWhatsappSharedLineAssignmentGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get WhatsApp shared line assignment","tags":["WhatsApp shared line assignments"],"x-required-permissions":["platforms:read"]}},"/v1/projects/{id}/platforms/whatsapp/dedicated":{"post":{"description":"Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent.","operationId":"provisionWhatsappDedicatedLine","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"402":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/EntitlementRequiredProblem"}}},"description":"ENTITLEMENT_REQUIRED: Entitlement Required","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectClosingProblem"}}},"description":"PROJECT_CLOSING: Project Is Closing","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineServiceUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned\n\nUPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProvisionWhatsappDedicatedLineGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Provision dedicated WhatsApp line","tags":["Dedicated WhatsApp lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{id}/platforms/whatsapp/dedicated/{resourceId}":{"delete":{"description":"Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure.","operationId":"releaseWhatsappDedicatedLine","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The WhatsApp ability and its charge period were removed.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}},"description":"The removal is still running. GET the Location after the Retry-After interval.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"Location":{"description":"Canonical URL of the operation. Resolves immediately, including while the work is still running.","schema":{"format":"uri-reference","type":"string"}},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"description":"Minimum number of seconds to wait before reading the operation again.","schema":{"minimum":0,"type":"integer"}},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundProblem"}}},"description":"RESOURCE_NOT_FOUND: Resource Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitedProblem"}}},"description":"RATE_LIMITED: Too Many Requests","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ReleaseWhatsappDedicatedLineGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Release dedicated WhatsApp line","tags":["Dedicated WhatsApp lines"],"x-required-permissions":["platforms:write"]}},"/v1/projects/{projectId}":{"delete":{"description":"Starts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation.","operationId":"deleteProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The deleted project tombstone.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteProjectGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Delete a project","tags":["Projects"],"x-required-permissions":["project:delete"]},"get":{"description":"Returns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses.","operationId":"getProject","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The requested project.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetProjectGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a project","tags":["Projects"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header.","operationId":"updateProject","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The updated project.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"serviceIdentityBearer":[]}],"summary":"Update a project","tags":["Projects"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile":{"get":{"description":"Returns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar.","operationId":"getAgentProfile","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfile"}}},"description":"The Project's agent profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetAgentProfileGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get an agent profile","tags":["Agent Profile"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header.","operationId":"updateAgentProfile","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfile"}}},"description":"The updated agent profile.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateAgentProfileGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update an agent profile","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile/avatar":{"delete":{"description":"Replaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header.","operationId":"resetAgentProfileAvatar","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfile"}}},"description":"The agent profile with the project's default avatar.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ResetAgentProfileAvatarGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Reset an agent avatar","tags":["Agent Profile"],"x-required-permissions":["project:write"]},"put":{"description":"Commits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile.","operationId":"commitAgentProfileAvatar","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfile"}}},"description":"The agent profile with its committed avatar.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CommitAgentProfileAvatarGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Commit an agent avatar","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/agent-profile/avatar/uploads":{"post":{"description":"Creates a ten-minute, Project-bound presigned S3 POST for a JPEG, PNG, or WebP agent avatar up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAgentProfileAvatar with the returned uploadId. Do not cache or log the upload URL or form fields.","operationId":"createAgentProfileAvatarUpload","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfileAvatarUpload"}}},"description":"A short-lived, project-bound presigned S3 POST.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateAgentProfileAvatarUploadGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create an agent avatar upload","tags":["Agent Profile"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/api-keys":{"get":{"description":"Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation.","operationId":"listProjectApiKeys","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysResponse"}}},"description":"The project's keys that have not been revoked, newest first. Never includes secrets.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListProjectApiKeysForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"List project API keys","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]},"post":{"description":"Creates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header.","operationId":"createProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyResponse"}}},"description":"The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiKeyLimitReachedProblem"}}},"description":"API_KEY_LIMIT_REACHED: API Key Limit Reached","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateProjectApiKeyUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Create a project API key","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]}},"/v1/projects/{projectId}/api-keys/{apiKeyId}":{"delete":{"description":"Revokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header.","operationId":"revokeProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"apiKeyId","required":true,"schema":{"type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectApiKeyResponse"}}},"description":"The revoked key. Repeating the delete returns the same revokedAt.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RevokeProjectApiKeyUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Delete a project API key","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]},"patch":{"description":"Replaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header.","operationId":"updateProjectApiKey","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"apiKeyId","required":true,"schema":{"type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectApiKeyResponse"}}},"description":"The key with its new permission list. Sending the list it already holds returns it unchanged.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyNotFoundProblem"}}},"description":"PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiKeyRevokedProblem"}}},"description":"API_KEY_REVOKED: API Key Revoked","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProjectDeletedProblem"}}},"description":"PROJECT_DELETED: Project Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateProjectApiKeyUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]}],"summary":"Update a project API key's permissions","tags":["API keys"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:manage_api_keys"]}},"/v1/projects/{projectId}/billing":{"get":{"description":"Returns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview.","operationId":"getBillingOverview","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewResponse"}}},"description":"Plan, entitlements, and current-period usage.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOverviewGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"Get the project's billing overview","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/billing/operations/{operationId}":{"get":{"description":"Returns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed.","operationId":"getBillingOperation","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}},{"description":"Operation id returned by a purchase or quantity change.","in":"path","name":"operationId","required":true,"schema":{"pattern":"^pho_bop_.*","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingOperation"}}},"description":"Authoritative recovery snapshot for a billing operation.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/OperationNotFoundProblem"}}},"description":"OPERATION_NOT_FOUND: Operation Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetBillingOperationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"Get a billing operation snapshot","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/billing/plans":{"get":{"description":"Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan.","operationId":"listBillingPlans","parameters":[{"description":"The project being billed.","in":"path","name":"projectId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansResponse"}}},"description":"Billing plans grouped by their public plan-metadata type.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FailedPreconditionProblem"}}},"description":"FAILED_PRECONDITION: Failed Precondition","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansInternalServerErrorProblem"}}},"description":"INVALID_AUTH_CONTEXT: Invalid Authentication Context\n\nINTERNAL_ERROR: Internal Server Error","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListBillingPlansGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read_usage"]}],"summary":"List available billing plans","tags":["Project Billing"],"x-required-permissions":["project:read_usage"]}},"/v1/projects/{projectId}/metrics/backfill":{"get":{"description":"Returns historical metrics update progress. Completion reflects lastVerifiedAt; queries remain available during updates.","operationId":"getMessageMetricsBackfill","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillResponse"}}},"description":"Project-scoped backfill progress.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsBackfillForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Get Metrics historical backfill status","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/metrics/query":{"get":{"description":"Returns the message_events SQL schema, supported queries, and limits for the selected API version.","operationId":"getMessageMetricsSqlSchema","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsSqlSchemaResponse"}}},"description":"The Project-scoped SQL surface of the resolved contracts date.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetMessageMetricsSqlSchemaForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Get messaging and voice metrics SQL schema","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]},"post":{"description":"Runs read-only SQL over the Project's message_events table. Get the SQL schema for supported columns, capabilities, and limits.","operationId":"queryMessageMetrics","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"description":"API schema date. Defaults to the latest served version; resolves to the latest served date on or before this value.","in":"header","name":"x-photon-version","schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClickHouseSqlQueryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsResponse"}}},"description":"Dynamic SQL columns and rows followed by bounded ClickHouse read statistics.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsUnprocessableEntityProblem"}}},"description":"QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryConcurrencyLimitProblem"}}},"description":"QUERY_CONCURRENCY_LIMIT: Query Concurrency Limit","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/QueryMessageMetricsGatewayTimeoutProblem"}}},"description":"UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"Query messaging and voice metrics with SQL","tags":["Messaging & Voice Metrics"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/api-versions":{"get":{"description":"Lists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body.","operationId":"listWebhookApiVersions","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsResponse"}}},"description":"Published webhook payload API versions.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookApiVersionsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook API versions","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/destinations":{"get":{"description":"Returns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets.","operationId":"listWebhookDestinations","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"query","name":"pageSize","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"pageToken","schema":{"maxLength":2048,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationPage"}}},"description":"One page of active webhook destinations.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookDestinationsGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook destinations","tags":["Webhook Destinations"],"x-required-permissions":["project:read"]},"post":{"description":"Creates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header.","operationId":"createWebhookDestination","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationResponse"}}},"description":"The created destination and its signing secret.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDestinationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Create a webhook destination","tags":["Webhook Destinations"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/destinations/{destinationId}":{"delete":{"description":"Deletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update.","operationId":"deleteWebhookDestination","parameters":[{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDestination"}}},"description":"The stable webhook destination tombstone.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationNotFoundProblem"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookDestinationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Delete a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:write"]},"get":{"description":"Returns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created.","operationId":"getWebhookDestination","parameters":[{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDestination"}}},"description":"The requested webhook destination.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationNotFoundProblem"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationDeletedProblem"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookDestinationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:read"]},"patch":{"description":"Updates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header.","operationId":"updateWebhookDestination","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDestination"}}},"description":"The updated webhook destination.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationNotFoundProblem"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationDeletedProblem"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookDestinationGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Update a webhook destination","tags":["Webhook Destinations"],"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/destinations/{destinationId}/secret-rotations":{"post":{"description":"Rotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header.","operationId":"rotateWebhookSigningSecret","parameters":[{"description":"Identifies one logical mutation across retries.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7e]{1,255}$","type":"string"}},{"in":"path","name":"destinationId","required":true,"schema":{"pattern":"^pho_whd_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretResponse"}}},"description":"The new signing secret.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretBadRequestProblem"}}},"description":"IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationNotFoundProblem"}}},"description":"WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/WebhookDestinationDeletedProblem"}}},"description":"WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"413":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeProblem"}}},"description":"PAYLOAD_TOO_LARGE: Payload Too Large","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretUnprocessableEntityProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RotateWebhookSigningSecretGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Rotate a webhook signing secret","tags":["Webhook Destinations"],"x-photon-mcp":{"enabled":false},"x-required-permissions":["project:write"]}},"/v1/projects/{projectId}/webhooks/egress-addresses":{"get":{"description":"Returns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses.","operationId":"listWebhookEgressAddresses","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookEgressAddressesResponse"}}},"description":"The public addresses webhook deliveries originate from in this environment.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEgressAddressesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]},{"oauth2":["project:read"]}],"summary":"List webhook egress addresses","tags":["Webhook Delivery"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/event-types":{"get":{"description":"Lists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body.","operationId":"listWebhookEventTypes","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"query","name":"apiVersion","required":true,"schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesResponse"}}},"description":"Events available in the selected API version.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ListWebhookEventTypesGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"List webhook event types","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}},"/v1/projects/{projectId}/webhooks/event-types/{eventType}/schema":{"get":{"description":"Returns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected.","operationId":"getWebhookEventSchema","parameters":[{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^pho_prj_[0-7][0-9a-hjkmnp-tv-z]{25}$","type":"string"}},{"in":"path","name":"eventType","required":true,"schema":{"pattern":"^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9_-]*)+$","type":"string"}},{"in":"query","name":"apiVersion","required":true,"schema":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}}],"responses":{"200":{"content":{"application/schema+json":{"schema":{"$ref":"#/components/schemas/WebhookEventSchema"}}},"description":"The published reader JSON Schema for the event.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"304":{"description":"The authorized cached representation is current; no response body.","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InvalidArgumentProblem"}}},"description":"INVALID_ARGUMENT: Invalid Argument","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotAuthenticatedProblem"}}},"description":"NOT_AUTHENTICATED: Not Authenticated","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"WWW-Authenticate":{"required":true,"schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaForbiddenProblem"}}},"description":"FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationFailedProblem"}}},"description":"VALIDATION_FAILED: Request Validation Failed","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalErrorProblem"}}},"description":"INTERNAL_ERROR: Internal Server Error","headers":{"Link":{"description":"Optional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Optional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Optional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Optional retry delay or HTTP date.","schema":{"type":"string"}},"X-Request-ID":{"description":"Application request identifier.","schema":{"type":"string"}}}},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamFailureProblem"}}},"description":"UPSTREAM_FAILURE: Upstream Service Failure","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/UpstreamUnavailableProblem"}}},"description":"UPSTREAM_UNAVAILABLE: Upstream Service Unavailable","headers":{"Deprecation":{"description":"RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.","schema":{"pattern":"^@-?[0-9]+$","type":"string"}},"Idempotent-Replayed":{"description":"True when this response was replayed from an earlier attempt.","schema":{"type":"boolean"}},"Link":{"description":"Links related to lifecycle or remediation documentation.\n\nOptional related resources.","schema":{"type":"string"}},"RateLimit":{"description":"Current rate-limit state.\n\nOptional rate limit information.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.","schema":{"type":"string"}},"Retry-After":{"description":"Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.","schema":{"pattern":"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$","type":"string"}},"X-Request-ID":{"description":"Identifier for this HTTP attempt.\n\nApplication request identifier.","schema":{"type":"string"}},"X-Trace-ID":{"description":"Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.","schema":{"pattern":"^(?!0{32}$)[0-9a-f]{32}$","type":"string"}}}},"504":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/GetWebhookEventSchemaGatewayTimeoutProblem"}}},"description":"REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout","headers":{"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"},"Link":{"$ref":"#/components/headers/Link"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"},"Sunset":{"$ref":"#/components/headers/Sunset"},"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"X-Trace-ID":{"$ref":"#/components/headers/X-Trace-ID"}}}},"security":[{"accountServiceKey":[]},{"projectApiKey":[]}],"summary":"Get a webhook event schema","tags":["Webhook Event Catalog"],"x-required-permissions":["project:read"]}}},"servers":[{"url":"https://api.photon.codes"}]} diff --git a/package-lock.json b/package-lock.json index 50d89c8..60488e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1019,7 +1019,7 @@ }, "packages/typescript": { "name": "@photon-ai/api", - "version": "0.1.1", + "version": "0.2.0", "license": "MIT", "dependencies": { "zod": "^4.5.0" diff --git a/packages/python/README.md b/packages/python/README.md index 2b6d9b0..cb339e1 100644 --- a/packages/python/README.md +++ b/packages/python/README.md @@ -3,13 +3,6 @@ Synchronous and asynchronous Python client for the Photon API, generated from the public OpenAPI contract. Requires Python 3.11+ and imports as `photon_api`. -> **Preview release.** This version is generated from the current production -> contract before all of its schemas have stable names. Types the contract -> does not name yet have names derived from their operation (for example -> `ListProjectsResponse200ApplicationJson`) or carry a version prefix such as -> `Photon20260701_`. These type names change in 0.2.0, when the contract -> names them; the rename does not change requests, responses or method names. - ## Installation ```sh diff --git a/packages/python/pyproject.toml b/packages/python/pyproject.toml index 6b9e099..86c4a7b 100644 --- a/packages/python/pyproject.toml +++ b/packages/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "photonhq-api" -version = "0.1.1" +version = "0.2.0" description = "Generated Photon API RPC client" readme = "README.md" requires-python = ">=3.11" diff --git a/packages/python/src/photon_api/generated/models.py b/packages/python/src/photon_api/generated/models.py index 6d66b7a..2be757f 100644 --- a/packages/python/src/photon_api/generated/models.py +++ b/packages/python/src/photon_api/generated/models.py @@ -11,29612 +11,8744 @@ from photon_api._model_base import BaseModel, PrefixItems, RootModel -class AssignSmsLineCampaignRequestApplicationJson(BaseModel): +class Account(BaseModel): model_config = ConfigDict( extra="allow", ) - campaignId: str - expectedVersion: int + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + accountId: str + createdAt: str | None + deletedAt: str | None + email: str + firstName: str | None + lastName: str | None + phoneNumber: str | None + phoneVerifiedAt: str | None + pictureUrl: str + updatedAt: str | None -class Error(BaseModel): +class AccountServiceKey(BaseModel): model_config = ConfigDict( extra="allow", ) - code: str - detail: str + accountId: str + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + expiresAt: str | None + name: str + revokedAt: str | None + serviceKeyId: str -class AssignSmsLineCampaignResponse200ApplicationJson(BaseModel): +class AgentProfile(BaseModel): model_config = ConfigDict( extra="allow", ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str + avatarUrl: str + firstName: str + lastName: str | None + + +class AgentProfileAvatarContentType( + RootModel[Literal["image/jpeg", "image/png", "image/webp"] | str] +): + root: Literal["image/jpeg", "image/png", "image/webp"] | str + +class AgentProfileAvatarUploadFormFields(RootModel[dict[str, str]]): + root: dict[str, str] -class AssignSmsLineCampaignResponse202ApplicationJson(BaseModel): + +class AllWebhookEvents(RootModel[PrefixItems[Literal["*"]]]): + root: PrefixItems[Literal["*"]] + + +class ApiKey(BaseModel): model_config = ConfigDict( extra="allow", ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str + apiKeyId: str + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + createdByAccountId: str + expiresAt: str | None + name: str + permissions: list[str] + permissionsUpdatedAt: str | None projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( + revokedAt: str | None + + +class ApiKeyPermission( + RootModel[ Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", + "events:read", + "events:write", + "platforms:read", + "platforms:write", + "project:read", + "project:write", + ] + | str + ] +): + root: ( + Literal[ + "events:read", + "events:write", + "platforms:read", + "platforms:write", + "project:read", + "project:write", ] | str ) - updatedAt: str -class AssignSmsLineCampaignResponse400ApplicationProblemPlusJson1(BaseModel): +class AssignSmsLineCampaignRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_INVALID_REQUEST"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid SMS campaign request"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-invalid-request"] + campaignId: str + expectedVersion: int -class AssignSmsLineCampaignResponse400ApplicationProblemPlusJson2(BaseModel): +class AssignVoiceLineProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + expectedVersion: int + profileId: str -class AssignSmsLineCampaignResponse400ApplicationProblemPlusJson3(BaseModel): +class Attachment(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + contentType: str + createdAt: str + filename: str | MISSING = MISSING + id: str + metadata: dict[str, Any] | MISSING = MISSING + projectId: str + sizeBytes: int + updatedAt: str -class AssignSmsLineCampaignResponse400ApplicationProblemPlusJson( - RootModel[ - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse400ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse400ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse400ApplicationProblemPlusJson3 - ) +class AttachmentNotReadyRetryAfter(RootModel[Literal["5"]]): + root: Literal["5"] -class AssignSmsLineCampaignResponse403ApplicationProblemPlusJson1(BaseModel): +class AttachmentPage(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + items: list[Attachment] + nextPageToken: str | MISSING = MISSING + """ + Continue with this token, even if items is empty. Omitted when no more pages remain. + """ -class AssignSmsLineCampaignResponse403ApplicationProblemPlusJson2(BaseModel): +class AuthorizedOAuthApplicationRedirectUri(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + default: bool + """ + Whether this is the application's default redirect URI. + """ + uri: str + """ + Registered OAuth callback URL for the application. + """ -class AssignSmsLineCampaignResponse403ApplicationProblemPlusJson3(BaseModel): +class AvailableProjectSlug(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_ORGANIZATION_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Campaign belongs to another organization"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-organization-mismatch"] + available: Literal[True] + slug: str -class AssignSmsLineCampaignResponse404ApplicationProblemPlusJson1(BaseModel): +class BeginInvitationSsoRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Campaign not found"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-found"] + returnTo: str + token: str -class AssignSmsLineCampaignResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class BillingOperationFailureCode( + RootModel[ + Literal[ + "payment_method_required", + "payment_failed", + "not_provisioned", + "invalid_target", + "internal", + ] + | str + ] +): + root: ( + Literal[ + "payment_method_required", + "payment_failed", + "not_provisioned", + "invalid_target", + "internal", + ] + | str ) - code: Literal["SMS_LINE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["SMS line not found"] - type: Literal["https://photon.codes/docs/problems/sms-line-not-found"] + """ + Stable provider-neutral failure category. + """ -class AssignSmsLineCampaignResponse404ApplicationProblemPlusJson( +class BillingOperationFailureDetail( RootModel[ - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse404ApplicationProblemPlusJson2 + Literal[ + "cancellation_scheduled", + "feature_not_sold_by_plan", + "feature_not_found", + "payment_timeout", + "plan_activation_timeout", + "plan_not_found", + "quantity_out_of_range", + "target_rejected", + ] + | str ] ): root: ( - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse404ApplicationProblemPlusJson2 + Literal[ + "cancellation_scheduled", + "feature_not_sold_by_plan", + "feature_not_found", + "payment_timeout", + "plan_activation_timeout", + "plan_not_found", + "quantity_out_of_range", + "target_rejected", + ] + | str ) -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson1(BaseModel): +class BillingOperationKind(RootModel[Literal["change_plan", "adjust_fixed_charge_quantity"] | str]): + root: Literal["change_plan", "adjust_fixed_charge_quantity"] | str + + +class BillingOperationResult(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] + type: Literal["version"] + version: str -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson2(BaseModel): +class BillingPlanEntitlement(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_LINE_UNSUPPORTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["SMS line unsupported"] - type: Literal["https://photon.codes/docs/problems/sms-line-unsupported"] + featureKey: str + value: str -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson3(BaseModel): +class BillingPlanInterval( + RootModel[Literal["weekly", "monthly", "quarterly", "semiannual", "yearly"] | str] +): + root: Literal["weekly", "monthly", "quarterly", "semiannual", "yearly"] | str + + +class CancelSubscriptionRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_NOT_READY"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign not ready"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-ready"] + category: str + """ + Category slug, e.g. analytics or messaging. + """ -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson4(BaseModel): +class CancelSubscriptionResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment version conflict"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-version-conflict"] + cancellationScheduled: bool + """ + False when the category held no active subscription. + """ + cancelsAt: str | None + """ + End of the final paid period, ISO 8601. + """ + category: str + """ + Category slug, e.g. analytics or messaging. + """ + +class CaptchaProvider(RootModel[Literal["turnstile", "hcaptcha"] | str]): + root: Literal["turnstile", "hcaptcha"] | str -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson5(BaseModel): + +class ChangePlanRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_MUTATION_IN_PROGRESS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment mutation in progress"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-mutation-in-progress"] + category: str + """ + Category slug, e.g. analytics or messaging. + """ + planCode: str + """ + Plan to subscribe to, e.g. analytics_pro. + """ -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson6(BaseModel): +class ClickHouseSqlQueryRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_CAPACITY_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign number capacity exhausted"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-capacity-exceeded"] + parameters: dict[str, str] | MISSING = MISSING + sql: str -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson7(BaseModel): +class CommitAccountProfilePictureRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_RECONCILIATION_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign reconciliation required"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-reconciliation-required"] + uploadId: str -class AssignSmsLineCampaignResponse409ApplicationProblemPlusJson( - RootModel[ - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson3 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson4 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson5 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson6 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson7 - ] -): - root: ( - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson3 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson4 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson5 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson6 - | AssignSmsLineCampaignResponse409ApplicationProblemPlusJson7 +class CommitAgentProfileAvatarRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + uploadId: str -class AssignSmsLineCampaignResponse422ApplicationProblemPlusJson(BaseModel): +class ConfirmAccountPhoneVerificationRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] + code: str + phoneNumber: str -class AssignSmsLineCampaignResponse429ApplicationProblemPlusJson(BaseModel): +class ConnectEmailDomainRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + domain: str -class AssignSmsLineCampaignResponse500ApplicationProblemPlusJson1(BaseModel): +class ConnectTelegramBotRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class AssignSmsLineCampaignResponse502ApplicationProblemPlusJson(BaseModel): +class ConnectWhatsappBusinessRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + code: str + phoneNumberId: str + wabaId: str -class AssignSmsLineCampaignResponse503ApplicationProblemPlusJson1(BaseModel): +class CreateAccountServiceKeyRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_CONTEXT_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Campaign context unavailable"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-context-unavailable"] + expiresAt: str | MISSING = Field(MISSING, examples=["2030-01-01T00:00:00Z"]) + name: str -class AssignSmsLineCampaignResponse503ApplicationProblemPlusJson2(BaseModel): +class CreateAccountServiceKeyResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + secret: str + serviceKey: AccountServiceKey -class AssignSmsLineCampaignResponse503ApplicationProblemPlusJson( - RootModel[ - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse503ApplicationProblemPlusJson2 +class CreateAgentProfileAvatarUploadRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + contentType: Literal["image/jpeg", "image/png", "image/webp"] | str -class AssignSmsLineCampaignResponse504ApplicationProblemPlusJson1(BaseModel): +class CreateAppInstallationRequestRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + appId: str + clientAssertion: str + redirectUri: str + state: str -class AssignSmsLineCampaignResponse504ApplicationProblemPlusJson2(BaseModel): +class CreateAppInstallationRequestResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + appId: str + appVersion: str + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + redirectUri: str + requestId: str + state: str -class AssignSmsLineCampaignResponse504ApplicationProblemPlusJson( - RootModel[ - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson1 - | AssignSmsLineCampaignResponse504ApplicationProblemPlusJson2 +class CreateOrganizationPaymentMethodCheckoutResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + checkoutUrl: str + """ + Hosted Stripe page; send the user here. + """ -class AssignVoiceLineProfileRequestApplicationJson(BaseModel): +class CreateOrganizationSetupIntentResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - expectedVersion: int - profileId: str + clientSecret: str + """ + Stripe SetupIntent client secret. + """ + publishableKey: str + """ + Publishable key for the Stripe account backing billing. + """ + + +class CreateOrganizationSsoPortalLinkRequestIntent( + RootModel[Literal["sso", "domain_verification"] | str] +): + root: Literal["sso", "domain_verification"] | str = "sso" -class AssignVoiceLineProfileResponse200ApplicationJson(BaseModel): +class CreateOrganizationSsoPortalLinkResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - profileId: str | MISSING = MISSING - profileVersion: int | MISSING = MISSING - projectId: str - resourceId: str - resourceVersion: int - updatedAt: str + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + url: str -class AssignVoiceLineProfileResponse403ApplicationProblemPlusJson1(BaseModel): +class CreateProjectApiKeyRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + expiresAt: str | MISSING = MISSING + name: str + permissions: list[ + Literal[ + "events:read", + "events:write", + "platforms:read", + "platforms:write", + "project:read", + "project:write", + ] + | str + ] -class AssignVoiceLineProfileResponse403ApplicationProblemPlusJson2(BaseModel): +class CreateProjectApiKeyResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + apiKey: ApiKey + secret: str -class AssignVoiceLineProfileResponse404ApplicationProblemPlusJson1(BaseModel): +class CreateProjectRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] + name: str + slug: str -class AssignVoiceLineProfileResponse404ApplicationProblemPlusJson2(BaseModel): +class CreateWhatsappSharedLineAssignmentRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] + email: str | MISSING = MISSING + firstName: str | MISSING = MISSING + handle: str + lastName: str | MISSING = MISSING -class AssignVoiceLineProfileResponse404ApplicationProblemPlusJson( - RootModel[ - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse404ApplicationProblemPlusJson2 +class CreateWhatsappVoipSenderRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + displayName: str | MISSING = MISSING + voipResourceId: str -class AssignVoiceLineProfileResponse409ApplicationProblemPlusJson1(BaseModel): +class CreatedAppInstallationDelivery(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] + clientId: str + clientSecret: str + installationId: str + status: Literal["created"] -class AssignVoiceLineProfileResponse409ApplicationProblemPlusJson2(BaseModel): +class DedicatedProjectPlatformSettings(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Default Profile Assignment Forbidden"] - type: Literal["https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden"] + mode: Literal["dedicated"] -class AssignVoiceLineProfileResponse409ApplicationProblemPlusJson3(BaseModel): +class DeleteVoiceProfileForceInput(RootModel[Literal["true", "false"] | str]): + root: Literal["true", "false"] | str + + +class DeleteVoiceProfileOutboundResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] + outbound: None + profileVersion: int -class AssignVoiceLineProfileResponse409ApplicationProblemPlusJson( - RootModel[ - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse409ApplicationProblemPlusJson2 - | AssignVoiceLineProfileResponse409ApplicationProblemPlusJson3 - ] -): - root: ( - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse409ApplicationProblemPlusJson2 - | AssignVoiceLineProfileResponse409ApplicationProblemPlusJson3 +class DeviceAuthorizeResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + device_code: str + """ + Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. + """ + expires_in: float + """ + Lifetime of the device code and user code, in seconds. + """ + interval: float + """ + Minimum number of seconds to wait between token polling requests. + """ + user_code: str + """ + Code the user enters at verification_uri to authorize this device. + """ + verification_uri: str + """ + Browser URL where the user enters user_code and authorizes the device. + """ + verification_uri_complete: str + """ + Browser URL with user_code included, ready to open or encode as a QR code. + """ -class Issue(BaseModel): +class DeviceCodeGrantRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: str - location: Literal["body", "cookie", "form", "header", "json", "param", "query"] | str - message: str - path: str + device_code: str + """ + device_code returned by POST /v1/auth/device/code. Required for a device-code grant. + """ + grant_type: Literal["urn:ietf:params:oauth:grant-type:device_code"] + """ + Selects the device authorization grant to poll or exchange a device code. + """ -class AssignVoiceLineProfileResponse422ApplicationProblemPlusJson(BaseModel): +class DeviceTokenBadRequestResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + error: str + """ + OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. + """ + error_description: str | MISSING = MISSING + """ + Optional human-readable explanation of the OAuth error. + """ -class AssignVoiceLineProfileResponse429ApplicationProblemPlusJson(BaseModel): +class DeviceTokenResponseUser(BaseModel): + """ + Profile of the authenticated user. + """ + model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + email: str + """ + Authenticated user's email address. + """ + first_name: str | None + """ + User's first name, or null when not set. + """ + id: str + """ + Authenticated user's identity identifier; distinct from the Photon Account ID. + """ + last_name: str | None + """ + User's last name, or null when not set. + """ -class AssignVoiceLineProfileResponse500ApplicationProblemPlusJson1(BaseModel): +class DisableOrganizationSsoRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + domains: list[str] = [] + expectedVersion: str + + +class DownloadAttachmentResponse(RootModel[Any]): + root: Any + + +class ExistingAppInstallationDeliveryStatus( + RootModel[ + Literal["delivery_consumed", "recovery_required", "revocation_pending", "revoked"] | str + ] +): + root: Literal["delivery_consumed", "recovery_required", "revocation_pending", "revoked"] | str -class AssignVoiceLineProfileResponse502ApplicationProblemPlusJson(BaseModel): +class FixedChargeModel(RootModel[Literal["graduated", "standard", "volume"] | str]): + root: Literal["graduated", "standard", "volume"] | str + + +class FixedChargeTier(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + flatAmount: str | None + fromUnit: int + perUnitAmount: str | None + toUnit: int | None -class AssignVoiceLineProfileResponse503ApplicationProblemPlusJson(BaseModel): +class GetWhatsappBusinessVerificationCodeResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + code: str + receivedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class AssignVoiceLineProfileResponse504ApplicationProblemPlusJson1(BaseModel): +class GetWhatsappSignupConfigResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + configId: str + graphVersion: str + scopes: list[str] + +class ImessageHandle(RootModel[str]): + root: str -class AssignVoiceLineProfileResponse504ApplicationProblemPlusJson2(BaseModel): + +class InvitationEnterpriseLoginRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + invitationToken: str + returnTo: str + + +class InvoiceKind(RootModel[Literal["subscription", "one_off", "credit"] | str]): + root: Literal["subscription", "one_off", "credit"] | str + """ + What produced the invoice. + """ + + +class InvoicePaymentStatus(RootModel[Literal["pending", "succeeded", "failed"] | str]): + root: Literal["pending", "succeeded", "failed"] | str + """ + Provider-neutral payment status. + """ -class AssignVoiceLineProfileResponse504ApplicationProblemPlusJson( +class JsonValue( RootModel[ - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse504ApplicationProblemPlusJson2 + Optional[ + Union[ + str, int, float, bool, list[Optional["JsonValue"]], dict[str, Optional["JsonValue"]] + ] + ] ] ): - root: ( - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson1 - | AssignVoiceLineProfileResponse504ApplicationProblemPlusJson2 - ) + root: Optional[ + Union[str, int, float, bool, list[Optional["JsonValue"]], dict[str, Optional["JsonValue"]]] + ] -class AuthorizationProblemINSUFFICIENTSCOPE403(BaseModel): +class ListAccountServiceKeysResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INSUFFICIENT_SCOPE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Insufficient Scope"] - type: Literal["https://photon.codes/docs/problems/insufficient-scope"] + serviceKeys: list[AccountServiceKey] -class Update(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expectedVersion: int - profileId: str | None - resourceId: str +class ListAuthorizedApplicationsOrder(RootModel[Literal["normal", "desc", "asc"] | str]): + root: Literal["normal", "desc", "asc"] | str + +class ListAuthorizedApplicationsResponseListMetadata(BaseModel): + """ + Pagination cursors to pass as after or before in the next list request. + """ -class BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson(BaseModel): model_config = ConfigDict( extra="allow", ) - updates: list[Update] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + after: str | None + """ + Cursor for the next page, or null when there is no next page. + """ + before: str | None + """ + Cursor for the previous page, or null when there is no previous page. + """ -class Assignment(BaseModel): +class ListNumberAreaCodesResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - profileId: str | MISSING = MISSING - profileVersion: int | MISSING = MISSING - projectId: str - resourceId: str - resourceVersion: int - updatedAt: str + areaCodes: list[str] + countryCode: Literal["US"] -class BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson(BaseModel): +class ListOauthScopesResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - assignments: list[Assignment] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + scopes: list[str] + """ + Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. + """ -class BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson1(BaseModel): +class ListProjectApiKeysResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + apiKeys: list[ApiKey] -class BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class ListVoiceProfilesDefaultInput(RootModel[Literal["true", "false"] | str]): + root: Literal["true", "false"] | str -class BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson( +class MessageMetricsBackfillState( RootModel[ - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson2 + Literal["disabled", "pending", "running", "verifying", "completed", "paused", "failed"] + | str ] ): root: ( - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson2 + Literal["disabled", "pending", "running", "verifying", "completed", "paused", "failed"] + | str ) -class BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson1(BaseModel): +class MessageMetricsDirection(RootModel[Literal["addressed", "received"] | str]): + root: Literal["addressed", "received"] | str + + +class MessageMetricsJsonOneOfPathsDiscriminator(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] + oneOfPaths: list[str] -class BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson2(BaseModel): +class MessageMetricsJsonPathDiscriminator(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] + path: str + values: list[str] -class BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson( +class MessageMetricsJsonPathValue(RootModel[bool | int | float | str]): + root: bool | int | float | str + + +class MessageMetricsJsonResource(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + contractsVersion: str + type: Literal["message"] + + +class MessageMetricsPlatform( RootModel[ - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson2 + Literal["email", "imessage", "sms", "telegram", "voice", "whatsapp", "whatsapp_business"] + | str ] ): root: ( - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson2 + Literal["email", "imessage", "sms", "telegram", "voice", "whatsapp", "whatsapp_business"] + | str ) -class BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson1(BaseModel): +class MessageMetricsQueryColumn(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] + name: str + type: str -class BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson2(BaseModel): +class MessageMetricsQueryStatistics(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Default Profile Assignment Forbidden"] - type: Literal["https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden"] + bytesRead: float + elapsedSeconds: float + rowsRead: float -class BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson3(BaseModel): +class MessageMetricsSqlCapabilities(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson( - RootModel[ - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson2 - | BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson3 - ] -): - root: ( - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson2 - | BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson3 - ) + arrayJoin: bool + ctes: bool + joins: bool + parameters: bool + selectWithoutFrom: bool + subqueries: bool + unions: bool -class BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson(BaseModel): +class MessageMetricsSqlLimits(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + maximumParameterValueBytes: int + maximumParameters: int + maximumSqlBytes: int + maximumTotalParameterBytes: int -class BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson(BaseModel): +class MessageMetricsSqlTableName(RootModel[Literal["message_events"]]): + root: Literal["message_events"] + + +class MeteredUsage(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + amountCents: int + """ + Cost accrued so far. + """ + category: str + """ + Category slug, e.g. analytics or messaging. + """ + categoryDisplayName: str | None | MISSING = MISSING + """ + Display name for the subscription category; absent or null when unconfigured. + """ + currency: str + """ + ISO currency code. + """ + displayName: str + """ + Display name for this usage item. + """ + metricCode: str + """ + Metered thing, e.g. imessage_message. + """ + units: int + """ + Units consumed this period. + """ -class BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson1(BaseModel): +class NotAuthenticatedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["NOT_AUTHENTICATED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + status: Literal[401] + title: Literal["Not Authenticated"] + type: Literal["https://photon.codes/docs/problems/not-authenticated"] -class BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson(BaseModel): +class NumberCountry(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + callingCode: str + countryCode: str + displayName: str -class BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson(BaseModel): +class OperationError(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + code: str + detail: str -class BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson1(BaseModel): +class OperationNotCancellableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["OPERATION_NOT_CANCELLABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + status: Literal[409] + title: Literal["Operation Not Cancellable"] + type: Literal["https://photon.codes/docs/problems/operation-not-cancellable"] -class BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson2(BaseModel): +class OperationNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["OPERATION_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[404] + title: Literal["Operation Not Found"] + type: Literal["https://photon.codes/docs/problems/operation-not-found"] + + +class OperationState( + RootModel[Literal["pending", "running", "succeeded", "failed", "cancelled"] | str] +): + root: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str -class BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson( +class OperationType( RootModel[ - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson2 + Literal[ + "resource.provision", + "resource.release", + "whatsapp.account.disconnect", + "sms.campaign.assign", + "sms.campaign.unassign", + ] + | str ] ): root: ( - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson1 - | BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson2 + Literal[ + "resource.provision", + "resource.release", + "whatsapp.account.disconnect", + "sms.campaign.assign", + "sms.campaign.unassign", + ] + | str ) -class BeginInvitationSsoRequestApplicationJson(BaseModel): +class OrganizationAuthenticationRedirect(BaseModel): model_config = ConfigDict( extra="allow", ) - returnTo: str - token: str + url: str -class BeginInvitationSsoResponse200ApplicationJson(BaseModel): +class OrganizationAuthenticationRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - url: str + returnTo: str -class BeginInvitationSsoResponse400ApplicationProblemPlusJson1(BaseModel): +class OrganizationConnectionNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_RETURN_TO"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ORGANIZATION_CONNECTION_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] + status: Literal[404] + title: Literal["Organization Connection Not Found"] + type: Literal["https://photon.codes/docs/problems/organization-connection-not-found"] -class BeginInvitationSsoResponse400ApplicationProblemPlusJson2(BaseModel): +class OrganizationConnectionSyncStatus( + RootModel[Literal["pending", "syncing", "ready", "error", "blocked"] | str] +): + root: Literal["pending", "syncing", "ready", "error", "blocked"] | str + + +class OrganizationEnterpriseLoginRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + invitationToken: str | MISSING = MISSING + organizationId: str + returnTo: str -class BeginInvitationSsoResponse400ApplicationProblemPlusJson( - RootModel[ - BeginInvitationSsoResponse400ApplicationProblemPlusJson1 - | BeginInvitationSsoResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - BeginInvitationSsoResponse400ApplicationProblemPlusJson1 - | BeginInvitationSsoResponse400ApplicationProblemPlusJson2 +class OrganizationInvoiceSubject(BaseModel): + model_config = ConfigDict( + extra="allow", ) + organizationId: str + type: Literal["organization"] + + +class OrganizationSsoConfigurationConnectionState( + RootModel[Literal["not_configured", "configuring", "ready", "error"] | str] +): + root: Literal["not_configured", "configuring", "ready", "error"] | str -class BeginInvitationSsoResponse404ApplicationProblemPlusJson(BaseModel): +class OrganizationSsoConfigurationPolicySyncStatus( + RootModel[Literal["synced", "manual_required"] | str] +): + root: Literal["synced", "manual_required"] | str + + +class OrganizationSsoConflictProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ORGANIZATION_SSO_CONFLICT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] + status: Literal[409] + title: Literal["Organization SSO Conflict"] + type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] + +class OrganizationSsoDomainState(RootModel[Literal["verified", "pending", "failed"] | str]): + root: Literal["verified", "pending", "failed"] | str -class BeginInvitationSsoResponse409ApplicationProblemPlusJson(BaseModel): + +class OrganizationSsoNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ORGANIZATION_SSO_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] + status: Literal[404] + title: Literal["Organization SSO Not Found"] + type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] -class BeginInvitationSsoResponse412ApplicationProblemPlusJson(BaseModel): +class OrganizationSsoPreconditionFailedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[412] title: Literal["Organization SSO Precondition Failed"] type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] -class BeginInvitationSsoResponse422ApplicationProblemPlusJson(BaseModel): +class OrganizationSsoRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ORGANIZATION_SSO_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + status: Literal[403] + title: Literal["Organization SSO Required"] + type: Literal["https://photon.codes/docs/problems/organization-sso-required"] -class BeginInvitationSsoResponse500ApplicationProblemPlusJson1(BaseModel): +class OrganizationSubscriptionEntitlement(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + featureKey: str + """ + Feature gate key. + """ + value: str + """ + Gate value as a string. + """ -class BeginInvitationSsoResponse502ApplicationProblemPlusJson(BaseModel): +class OrganizationSyncUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ORGANIZATION_SYNC_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[409] + title: Literal["Organization Synchronization Unavailable"] + type: Literal["https://photon.codes/docs/problems/organization-sync-unavailable"] -class BeginInvitationSsoResponse503ApplicationProblemPlusJson(BaseModel): +class PayloadTooLargeProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["PAYLOAD_TOO_LARGE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + status: Literal[413] + title: Literal["Payload Too Large"] + type: Literal["https://photon.codes/docs/problems/payload-too-large"] -class BeginInvitationSsoResponse504ApplicationProblemPlusJson1(BaseModel): +class PaymentMethod(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + brand: str | None + """ + Card network brand, e.g. visa. + """ + expiresMonth: int | None + """ + Card expiration month. + """ + expiresYear: int | None + """ + Four-digit card expiration year. + """ + last4: str | None + """ + Last four card digits. + """ -class BeginInvitationSsoResponse504ApplicationProblemPlusJson2(BaseModel): +class PaymentProviderNotReadyProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["PAYMENT_PROVIDER_NOT_READY"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + status: Literal[503] + title: Literal["Payment Provider Not Ready"] + type: Literal["https://photon.codes/docs/problems/payment-provider-not-ready"] -class BeginInvitationSsoResponse504ApplicationProblemPlusJson( - RootModel[ - BeginInvitationSsoResponse504ApplicationProblemPlusJson1 - | BeginInvitationSsoResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - BeginInvitationSsoResponse504ApplicationProblemPlusJson1 - | BeginInvitationSsoResponse504ApplicationProblemPlusJson2 +class PendingBillingOperation(BaseModel): + model_config = ConfigDict( + extra="allow", ) + failure: None + kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str + operationId: str + """ + Stable handle for this provisioning action. + """ + resolvedAt: None + result: None + status: Literal["pending"] + """ + Accepted and still executing. Poll the operation route. + """ + submittedAt: str | None -class BeginOrganizationAuthenticationRequestApplicationJson(BaseModel): +class PhoneVerificationCaptcha(BaseModel): model_config = ConfigDict( extra="allow", ) - returnTo: str + challengeContext: str + token: str + + +class ProfilePictureContentType(RootModel[Literal["image/jpeg", "image/png", "image/webp"] | str]): + root: Literal["image/jpeg", "image/png", "image/webp"] | str + +class ProfilePictureUploadFormFields(RootModel[dict[str, str]]): + root: dict[str, str] -class BeginOrganizationAuthenticationResponse200ApplicationJson(BaseModel): + +class ProfilePictureUploadRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - url: str + contentType: Literal["image/jpeg", "image/png", "image/webp"] | str -class BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson1(BaseModel): +class ProjectApiKeyResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] + apiKey: ApiKey + + +class ProjectBillingInitialization( + RootModel[Literal["pending", "retry_required", "completed", "unknown"] | str] +): + root: Literal["pending", "retry_required", "completed", "unknown"] | str -class BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson2(BaseModel): +class ProjectClosingProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["PROJECT_CLOSING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + status: Literal[409] + title: Literal["Project Is Closing"] + type: Literal["https://photon.codes/docs/problems/project-closing"] -class BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson1 - | BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson2 - ] +class ProjectClosureDomain( + RootModel[Literal["projects", "billing", "platforms", "call_registry"] | str] ): - root: ( - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson1 - | BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson2 + root: Literal["projects", "billing", "platforms", "call_registry"] | str + + +class ProjectClosureDomainStatus(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + blockers: list[str] + domain: Literal["projects", "billing", "platforms", "call_registry"] | str + ready: bool + + +class ProjectCount(BaseModel): + model_config = ConfigDict( + extra="allow", ) + count: int + +class ProjectCreatedByActorKind(RootModel[Literal["account", "service_identity"] | str]): + root: Literal["account", "service_identity"] | str -class BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson(BaseModel): + +class ProjectDeletedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["PROJECT_DELETED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] + status: Literal[410] + title: Literal["Project Deleted"] + type: Literal["https://photon.codes/docs/problems/project-deleted"] -class BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson(BaseModel): +class ProjectInvoiceSubject(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] + projectId: str + type: Literal["project"] -class BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson(BaseModel): +class ProjectNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["PROJECT_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] + status: Literal[404] + title: Literal["Project Not Found"] + type: Literal["https://photon.codes/docs/problems/project-not-found"] -class BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson(BaseModel): +class ProjectSubscriptionEntitlement(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + featureKey: str + """ + Feature gate key, e.g. imessage_shared_lines.max_user_assignments. + """ + value: str + """ + Gate value as a string. + """ -class BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson1(BaseModel): +class PurchaseSmsNumberRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + areaCode: str | MISSING = MISSING + countryCode: Literal["US"] -class BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson(BaseModel): +class QueryConcurrencyLimitProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["QUERY_CONCURRENCY_LIMIT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[429] + title: Literal["Query Concurrency Limit"] + type: Literal["https://photon.codes/docs/problems/query-concurrency-limit"] -class BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson(BaseModel): +class QueryMessageMetricsResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + columns: list[MessageMetricsQueryColumn] + rows: list[list[Any]] + statistics: MessageMetricsQueryStatistics -class BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson1(BaseModel): +class QueryResourceLimitProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["QUERY_RESOURCE_LIMIT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[422] + title: Literal["Query Resource Limit"] + type: Literal["https://photon.codes/docs/problems/query-resource-limit"] -class BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson2(BaseModel): +class RateLimitedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["RATE_LIMITED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson1 - | BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson1 - | BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson2 - ) + status: Literal[429] + title: Literal["Too Many Requests"] + type: Literal["https://photon.codes/docs/problems/rate-limited"] -class BeginOrganizationClosureAuthenticationRequestApplicationJson(BaseModel): +class RedeemAppInstallationDeliveryRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - returnTo: str + appId: str + clientAssertion: str + code: str -class BeginOrganizationClosureAuthenticationResponse200ApplicationJson(BaseModel): +class RefreshTokenGrantRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - url: str + grant_type: Literal["refresh_token"] + """ + Selects the refresh-token grant to obtain a new token pair. + """ + refresh_token: str + """ + Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. + """ -class BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson1(BaseModel): +class RequestTimeoutProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_RETURN_TO"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["REQUEST_TIMEOUT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] + status: Literal[504] + title: Literal["Request Timeout"] + type: Literal["https://photon.codes/docs/problems/request-timeout"] -class BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson2(BaseModel): +class ResourceMismatchProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["RESOURCE_MISMATCH"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson1 - | BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson1 - | BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson2 - ) + status: Literal[403] + title: Literal["Resource Mismatch"] + type: Literal["https://photon.codes/docs/problems/resource-mismatch"] -class BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson(BaseModel): +class ResourceNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["RESOURCE_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] + title: Literal["Resource Not Found"] + type: Literal["https://photon.codes/docs/problems/resource-not-found"] -class BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson(BaseModel): +class ResourceState(RootModel[Literal["unallocated", "active", "retired"] | str]): + root: Literal["unallocated", "active", "retired"] | str + + +class ResumeSubscriptionRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] + category: str + """ + Category slug, e.g. analytics or messaging. + """ -class BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson(BaseModel): +class ResumeSubscriptionResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] + category: str + """ + Category slug, e.g. analytics or messaging. + """ + resumed: bool + """ + False when the subscription was not scheduled to cancel. + """ -class BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson(BaseModel): +class RetryEnterpriseLoginRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + retryToken: str -class BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson1(BaseModel): +class RevokeAccountServiceKeyResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + serviceKey: AccountServiceKey -class BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson(BaseModel): +class RotateVoiceProfileOutboundCredentialResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + password: str | None + previousPasswordValidUntil: str | None + profileVersion: int -class BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson(BaseModel): +class RotateWebhookSigningSecretRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + overlapSeconds: int = 86400 -class BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson1(BaseModel): +class RotateWebhookSigningSecretResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + previousSecretExpiresAt: str | None + signingSecret: str + + +class SelectableWebhookApiVersionStatus(RootModel[Literal["preview", "latest", "maintain"] | str]): + root: Literal["preview", "latest", "maintain"] | str + + +class SharedLineAssignmentPlatform(RootModel[Literal["imessage", "whatsapp"] | str]): + root: Literal["imessage", "whatsapp"] | str + + +class SharedLineCapExceededProblem(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SHARED_LINE_CAP_EXCEEDED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[409] + title: Literal["Shared Line Cap Exceeded"] + type: Literal["https://photon.codes/docs/problems/shared-line-cap-exceeded"] -class BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson2(BaseModel): +class SharedLinePoolExhaustedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SHARED_LINE_POOL_EXHAUSTED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + status: Literal[503] + title: Literal["Shared Line Pool Exhausted"] + type: Literal["https://photon.codes/docs/problems/shared-line-pool-exhausted"] -class BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson1 - | BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson1 - | BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson2 +class SharedProjectPlatformSettings(BaseModel): + model_config = ConfigDict( + extra="allow", ) + maxUserAssignments: int + mode: Literal["shared"] -class BeginOrganizationSsoAdmissionRequestApplicationJson(BaseModel): +class SipAuthenticationAlgorithm(RootModel[Literal["sha-256", "md5"] | str]): + root: Literal["sha-256", "md5"] | str + + +class SipInboundCredentials(BaseModel): model_config = ConfigDict( extra="allow", ) - returnTo: str + username: str -class BeginOrganizationSsoAdmissionResponse200ApplicationJson(BaseModel): +class SipInboundCredentialsWithPassword(BaseModel): model_config = ConfigDict( extra="allow", ) - url: str + password: str + username: str -class BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson1(BaseModel): +class SipOutboundAuthentication(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] + algorithm: Literal["sha-256", "md5"] | str + previousPasswordValidUntil: str | None + username: str + validFrom: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson2(BaseModel): +class SipOutboundAuthenticationPolicy(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + algorithm: Literal["sha-256", "md5"] | str -class BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson1 - | BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson1 - | BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson2 - ) +class SipTransport(RootModel[Literal["udp", "tcp", "tls"] | str]): + root: Literal["udp", "tcp", "tls"] | str -class BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson(BaseModel): +class SlugTakenProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SLUG_TAKEN"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] + status: Literal[409] + suggestion: str | MISSING = MISSING + title: Literal["Slug Already Taken"] + type: Literal["https://photon.codes/docs/problems/slug-taken"] -class BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson(BaseModel): +class SmsCampaignCapacityExceededProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_CAPACITY_EXCEEDED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] + title: Literal["Campaign number capacity exhausted"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-capacity-exceeded"] -class BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson(BaseModel): +class SmsCampaignContextUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_CONTEXT_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] + status: Literal[503] + title: Literal["Campaign context unavailable"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-context-unavailable"] -class BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson(BaseModel): +class SmsCampaignInvalidRequestProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_INVALID_REQUEST"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + status: Literal[400] + title: Literal["Invalid SMS campaign request"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-invalid-request"] -class BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson1(BaseModel): +class SmsCampaignMutationInProgressProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_MUTATION_IN_PROGRESS"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING + operationId: str + operationUrl: str requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + status: Literal[409] + title: Literal["Assignment mutation in progress"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-mutation-in-progress"] -class BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson(BaseModel): +class SmsCampaignNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[404] + title: Literal["Campaign not found"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-not-found"] -class BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson(BaseModel): +class SmsCampaignNotReadyProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_NOT_READY"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + status: Literal[409] + title: Literal["Campaign not ready"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-not-ready"] -class BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson1(BaseModel): +class SmsCampaignOrganizationMismatchProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_ORGANIZATION_MISMATCH"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[403] + title: Literal["Campaign belongs to another organization"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-organization-mismatch"] -class BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson2(BaseModel): +class SmsCampaignReconciliationRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_RECONCILIATION_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson( - RootModel[ - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson1 - | BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson1 - | BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson2 - ) + status: Literal[409] + title: Literal["Campaign reconciliation required"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-reconciliation-required"] -class CancelOperationResponse200ApplicationJson(BaseModel): +class SmsCampaignVersionConflictProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class CancelOperationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_CAMPAIGN_VERSION_CONFLICT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + status: Literal[409] + title: Literal["Assignment version conflict"] + type: Literal["https://photon.codes/docs/problems/sms-campaign-version-conflict"] -class CancelOperationResponse403ApplicationProblemPlusJson2(BaseModel): +class SmsLineCampaign(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + id: str + organizationId: str -class CancelOperationResponse403ApplicationProblemPlusJson( - RootModel[ - CancelOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CancelOperationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CancelOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CancelOperationResponse403ApplicationProblemPlusJson2 - ) +class SmsLineCampaignEligibility(RootModel[Literal["eligible", "blocked", "unknown"] | str]): + root: Literal["eligible", "blocked", "unknown"] | str -class CancelOperationResponse404ApplicationProblemPlusJson(BaseModel): +class SmsLineNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["OPERATION_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_LINE_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[404] - title: Literal["Operation Not Found"] - type: Literal["https://photon.codes/docs/problems/operation-not-found"] + title: Literal["SMS line not found"] + type: Literal["https://photon.codes/docs/problems/sms-line-not-found"] -class CancelOperationResponse409ApplicationProblemPlusJson(BaseModel): +class SmsLineUnsupportedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["OPERATION_NOT_CANCELLABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SMS_LINE_UNSUPPORTED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[409] - title: Literal["Operation Not Cancellable"] - type: Literal["https://photon.codes/docs/problems/operation-not-cancellable"] - - -class CancelOperationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CancelOperationResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CancelOperationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + title: Literal["SMS line unsupported"] + type: Literal["https://photon.codes/docs/problems/sms-line-unsupported"] -class CancelOperationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class SortOrder(RootModel[Literal["asc", "desc"] | str]): + root: Literal["asc", "desc"] | str -class CancelOperationResponse503ApplicationProblemPlusJson(BaseModel): +class SsoSubscriptionRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["SSO_SUBSCRIPTION_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + status: Literal[412] + title: Literal["SSO Subscription Required"] + type: Literal["https://photon.codes/docs/problems/sso-subscription-required"] -class CancelOperationResponse504ApplicationProblemPlusJson1(BaseModel): +class StartAccountPhoneVerificationRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + captcha: PhoneVerificationCaptcha | MISSING = MISSING + phoneNumber: str -class CancelOperationResponse504ApplicationProblemPlusJson2(BaseModel): +class StartAccountPhoneVerificationResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + channel: Literal["sms"] + expiresAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + resendAvailableAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class CancelOperationResponse504ApplicationProblemPlusJson( +class StartEnterpriseLoginRequest( RootModel[ - CancelOperationResponse504ApplicationProblemPlusJson1 - | CancelOperationResponse504ApplicationProblemPlusJson2 + OrganizationEnterpriseLoginRequest + | InvitationEnterpriseLoginRequest + | RetryEnterpriseLoginRequest ] ): root: ( - CancelOperationResponse504ApplicationProblemPlusJson1 - | CancelOperationResponse504ApplicationProblemPlusJson2 + OrganizationEnterpriseLoginRequest + | InvitationEnterpriseLoginRequest + | RetryEnterpriseLoginRequest ) -class CancelSubscriptionRequestApplicationJson(BaseModel): +class StartEnterpriseLoginResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - category: str + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + url: str + + +class SubscriptionStatus(RootModel[Literal["active", "past_due", "terminated"] | str]): + root: Literal["active", "past_due", "terminated"] | str """ - Category slug, e.g. analytics or messaging. + State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. """ -class CancelSubscriptionResponse200ApplicationJson(BaseModel): +class SucceededBillingOperation(BaseModel): model_config = ConfigDict( extra="allow", ) - cancellationScheduled: bool - """ - False when the category held no active subscription. - """ - cancelsAt: str | None + failure: None + kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str + operationId: str """ - End of the final paid period, ISO 8601. + Stable handle for this provisioning action. """ - category: str + resolvedAt: str | None + result: BillingOperationResult + status: Literal["succeeded"] """ - Category slug, e.g. analytics or messaging. + Terminal. The result is authoritative. """ + submittedAt: str | None -class CancelSubscriptionResponse400ApplicationProblemPlusJson1(BaseModel): +class SupportedPlatform(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + description: str + displayName: str + type: str -class CancelSubscriptionResponse400ApplicationProblemPlusJson2(BaseModel): +class TelegramProjectDeletedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["TELEGRAM_PROJECT_DELETED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + status: Literal[409] + title: Literal["Telegram Project Deleted"] + type: Literal["https://photon.codes/docs/problems/telegram-project-deleted"] -class CancelSubscriptionResponse400ApplicationProblemPlusJson3(BaseModel): +class TelegramProvisionInProgressProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["TELEGRAM_PROVISION_IN_PROGRESS"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING + operationId: str + operationUrl: str requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + status: Literal[409] + title: Literal["Telegram Provision In Progress"] + type: Literal["https://photon.codes/docs/problems/telegram-provision-in-progress"] -class CancelSubscriptionResponse400ApplicationProblemPlusJson( +class TimestampOrderBy(RootModel[Literal["created_at", "updated_at"] | str]): + root: Literal["created_at", "updated_at"] | str + + +class UnassignSmsLineCampaignConflictProblem( RootModel[ - CancelSubscriptionResponse400ApplicationProblemPlusJson1 - | CancelSubscriptionResponse400ApplicationProblemPlusJson2 - | CancelSubscriptionResponse400ApplicationProblemPlusJson3 + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem ] ): root: ( - CancelSubscriptionResponse400ApplicationProblemPlusJson1 - | CancelSubscriptionResponse400ApplicationProblemPlusJson2 - | CancelSubscriptionResponse400ApplicationProblemPlusJson3 + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem ) -class CancelSubscriptionResponse403ApplicationProblemPlusJson1(BaseModel): +class UnassignSmsLineCampaignNotFoundProblem( + RootModel[SmsCampaignNotFoundProblem | SmsLineNotFoundProblem] +): + root: SmsCampaignNotFoundProblem | SmsLineNotFoundProblem + + +class UnavailableProjectSlugReason( + RootModel[Literal["reserved", "retired", "taken", "too_short"] | str] +): + root: Literal["reserved", "retired", "taken", "too_short"] | str + + +class UpdateAccountRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + firstName: str | MISSING = MISSING + lastName: str | None | MISSING = MISSING -class CancelSubscriptionResponse403ApplicationProblemPlusJson2(BaseModel): +class UpdateAgentProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + firstName: str | MISSING = MISSING + lastName: str | None | MISSING = MISSING -class CancelSubscriptionResponse403ApplicationProblemPlusJson( - RootModel[ - CancelSubscriptionResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CancelSubscriptionResponse403ApplicationProblemPlusJson2 - ] +class UpdateOrganizationSsoPolicyPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] ): - root: ( - CancelSubscriptionResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CancelSubscriptionResponse403ApplicationProblemPlusJson2 - ) + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class CancelSubscriptionResponse409ApplicationProblemPlusJson1(BaseModel): +class UpdateOrganizationSsoPolicyRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] + expectedVersion: str + ssoJitEnabled: bool -class CancelSubscriptionResponse409ApplicationProblemPlusJson2(BaseModel): +class UpdateProjectApiKeyRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_REQUEST_IN_PROGRESS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Idempotency Request In Progress"] - type: Literal["https://photon.codes/docs/problems/idempotency-request-in-progress"] + permissions: list[ + Literal[ + "events:read", + "events:write", + "platforms:read", + "platforms:write", + "project:read", + "project:write", + ] + | str + ] -class CancelSubscriptionResponse409ApplicationProblemPlusJson( - RootModel[ - CancelSubscriptionResponse409ApplicationProblemPlusJson1 - | CancelSubscriptionResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - CancelSubscriptionResponse409ApplicationProblemPlusJson1 - | CancelSubscriptionResponse409ApplicationProblemPlusJson2 +class UpdateProjectRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + name: str -class CancelSubscriptionResponse422ApplicationProblemPlusJson1(BaseModel): +class UpdateVoiceProfileInboundRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CancelSubscriptionResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CancelSubscriptionResponse422ApplicationProblemPlusJson( - RootModel[ - CancelSubscriptionResponse422ApplicationProblemPlusJson1 - | CancelSubscriptionResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CancelSubscriptionResponse422ApplicationProblemPlusJson1 - | CancelSubscriptionResponse422ApplicationProblemPlusJson2 - ) + credentials: SipInboundCredentialsWithPassword | None | MISSING = MISSING + destinationUri: str | MISSING = MISSING + expectedVersion: int -class CancelSubscriptionResponse500ApplicationProblemPlusJson1(BaseModel): +class UpdateVoiceProfileOutboundAuthenticationRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + authentication: SipOutboundAuthenticationPolicy + expectedVersion: int -class CancelSubscriptionResponse502ApplicationProblemPlusJson(BaseModel): +class UpstreamFailureProblem(BaseModel): model_config = ConfigDict( extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } code: Literal["UPSTREAM_FAILURE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[502] title: Literal["Upstream Service Failure"] type: Literal["https://photon.codes/docs/problems/upstream-failure"] -class CancelSubscriptionResponse503ApplicationProblemPlusJson1(BaseModel): +class UpstreamTimeoutProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["UPSTREAM_TIMEOUT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Idempotency Unavailable"] - type: Literal["https://photon.codes/docs/problems/idempotency-unavailable"] + status: Literal[504] + title: Literal["Upstream Service Timeout"] + type: Literal["https://photon.codes/docs/problems/upstream-timeout"] -class CancelSubscriptionResponse503ApplicationProblemPlusJson2(BaseModel): +class UpstreamUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } code: Literal["UPSTREAM_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[503] title: Literal["Upstream Service Unavailable"] type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] -class CancelSubscriptionResponse503ApplicationProblemPlusJson( +class UsageChargeFilterValue(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + key: str + values: list[str] + + +class UsageChargeModel( RootModel[ - CancelSubscriptionResponse503ApplicationProblemPlusJson1 - | CancelSubscriptionResponse503ApplicationProblemPlusJson2 + Literal[ + "dynamic", + "graduated", + "graduated_percentage", + "package", + "percentage", + "standard", + "volume", + ] + | str ] ): root: ( - CancelSubscriptionResponse503ApplicationProblemPlusJson1 - | CancelSubscriptionResponse503ApplicationProblemPlusJson2 + Literal[ + "dynamic", + "graduated", + "graduated_percentage", + "package", + "percentage", + "standard", + "volume", + ] + | str ) -class CancelSubscriptionResponse504ApplicationProblemPlusJson1(BaseModel): +class UsageChargeTier(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + flatAmount: str | None + fromUnit: int + perUnitAmount: str | None + rate: str | None + toUnit: int | None + + +class ValidationLocation( + RootModel[Literal["body", "cookie", "form", "header", "json", "param", "query"] | str] +): + root: Literal["body", "cookie", "form", "header", "json", "param", "query"] | str -class CancelSubscriptionResponse504ApplicationProblemPlusJson2(BaseModel): +class VoiceDefaultProfileAssignmentForbiddenProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[409] + title: Literal["Voice Default Profile Assignment Forbidden"] + type: Literal["https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden"] -class CancelSubscriptionResponse504ApplicationProblemPlusJson( - RootModel[ - CancelSubscriptionResponse504ApplicationProblemPlusJson1 - | CancelSubscriptionResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CancelSubscriptionResponse504ApplicationProblemPlusJson1 - | CancelSubscriptionResponse504ApplicationProblemPlusJson2 +class VoiceDefaultProfileDeletionForbiddenProblem(BaseModel): + model_config = ConfigDict( + extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[409] + title: Literal["Voice Default Profile Deletion Forbidden"] + type: Literal["https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden"] -class ChangePlanRequestApplicationJson(BaseModel): +class VoiceDefaultProfileExistsProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - category: str - """ - Category slug, e.g. analytics or messaging. - """ - planCode: str - """ - Plan to subscribe to, e.g. analytics_pro. - """ + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_DEFAULT_PROFILE_EXISTS"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[409] + title: Literal["Voice Default Profile Exists"] + type: Literal["https://photon.codes/docs/problems/voice-default-profile-exists"] -class Result(BaseModel): +class VoiceDefaultProfileRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - type: Literal["version"] - version: str + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_DEFAULT_PROFILE_REQUIRED"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[409] + title: Literal["Voice Default Profile Required"] + type: Literal["https://photon.codes/docs/problems/voice-default-profile-required"] -class ChangePlanResponse200ApplicationJson1(BaseModel): +class VoiceLineProfileAssignment(BaseModel): model_config = ConfigDict( extra="allow", ) - failure: None - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: str | None - result: Result - status: Literal["succeeded"] - """ - Terminal. The result is authoritative. - """ - submittedAt: str | None + profileId: str | MISSING = MISSING + profileVersion: int | MISSING = MISSING + projectId: str + resourceId: str + resourceVersion: int + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class Failure(BaseModel): +class VoiceLineProfileAssignmentUpdate(BaseModel): model_config = ConfigDict( extra="allow", ) - code: ( - Literal[ - "payment_method_required", - "payment_failed", - "not_provisioned", - "invalid_target", - "internal", - ] - | str - ) - """ - Stable provider-neutral failure category. - """ - detail: ( - Literal[ - "cancellation_scheduled", - "feature_not_sold_by_plan", - "feature_not_found", - "payment_timeout", - "plan_activation_timeout", - "plan_not_found", - "quantity_out_of_range", - "target_rejected", - ] - | str - | None - ) - retryable: bool + expectedVersion: int + profileId: str | None + resourceId: str -class ChangePlanResponse200ApplicationJson2(BaseModel): +class VoiceOutboundConfiguredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - failure: Failure - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: str | None - result: None - status: Literal["failed"] - """ - Terminal. Failure contains a stable code and retryability. - """ - submittedAt: str | None + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_OUTBOUND_CONFIGURED"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[409] + title: Literal["Voice Outbound Already Configured"] + type: Literal["https://photon.codes/docs/problems/voice-outbound-configured"] -class ChangePlanResponse200ApplicationJson( - RootModel[ChangePlanResponse200ApplicationJson1 | ChangePlanResponse200ApplicationJson2] -): - root: ChangePlanResponse200ApplicationJson1 | ChangePlanResponse200ApplicationJson2 +class VoiceOutboundCredentialRotationMode(RootModel[Literal["normal", "emergency"] | str]): + root: Literal["normal", "emergency"] | str -class ChangePlanResponse202ApplicationJson(BaseModel): +class VoiceOutboundNotConfiguredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - failure: None - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: None - result: None - status: Literal["pending"] - """ - Accepted and still executing. Poll the operation route. - """ - submittedAt: str | None + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_OUTBOUND_NOT_CONFIGURED"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[409] + title: Literal["Voice Outbound Not Configured"] + type: Literal["https://photon.codes/docs/problems/voice-outbound-not-configured"] -class ChangePlanResponse400ApplicationProblemPlusJson1(BaseModel): +class VoiceOutboundOperationPendingProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + status: Literal[409] + title: Literal["Voice Outbound Operation Pending"] + type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] -class ChangePlanResponse400ApplicationProblemPlusJson2(BaseModel): +class VoiceProfileDirectionConfiguredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_PROFILE_DIRECTION_CONFIGURED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + status: Literal[409] + title: Literal["Voice Profile Direction Configured"] + type: Literal["https://photon.codes/docs/problems/voice-profile-direction-configured"] -class ChangePlanResponse400ApplicationProblemPlusJson3(BaseModel): +class VoiceProfileInUseProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_PROFILE_IN_USE"] + detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + status: Literal[409] + title: Literal["Voice Profile In Use"] + type: Literal["https://photon.codes/docs/problems/voice-profile-in-use"] -class ChangePlanResponse400ApplicationProblemPlusJson( - RootModel[ - ChangePlanResponse400ApplicationProblemPlusJson1 - | ChangePlanResponse400ApplicationProblemPlusJson2 - | ChangePlanResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - ChangePlanResponse400ApplicationProblemPlusJson1 - | ChangePlanResponse400ApplicationProblemPlusJson2 - | ChangePlanResponse400ApplicationProblemPlusJson3 - ) +class VoiceProfileMediaEncryption(RootModel[Literal["auto", "srtp"] | str]): + root: Literal["auto", "srtp"] | str -class ChangePlanResponse403ApplicationProblemPlusJson1(BaseModel): +class VoiceProfileNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_PROFILE_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + status: Literal[404] + title: Literal["Voice Profile Not Found"] + type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] -class ChangePlanResponse403ApplicationProblemPlusJson2(BaseModel): +class VoiceProfileVersionConflictProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + status: Literal[409] + title: Literal["Voice Profile Version Conflict"] + type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] -class ChangePlanResponse403ApplicationProblemPlusJson( - RootModel[ - ChangePlanResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ChangePlanResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ChangePlanResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ChangePlanResponse403ApplicationProblemPlusJson2 +class WebhookApiVersionRetirement(BaseModel): + model_config = ConfigDict( + extra="allow", ) + migrationGuide: str + reason: str -class ChangePlanResponse409ApplicationProblemPlusJson1(BaseModel): +class WebhookDestinationDeletedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FAILED_PRECONDITION"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WEBHOOK_DESTINATION_DELETED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] + status: Literal[410] + title: Literal["Webhook Destination Deleted"] + type: Literal["https://photon.codes/docs/problems/webhook-destination-deleted"] -class ChangePlanResponse409ApplicationProblemPlusJson2(BaseModel): +class WebhookDestinationNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_REQUEST_IN_PROGRESS"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WEBHOOK_DESTINATION_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Idempotency Request In Progress"] - type: Literal["https://photon.codes/docs/problems/idempotency-request-in-progress"] + status: Literal[404] + title: Literal["Webhook Destination Not Found"] + type: Literal["https://photon.codes/docs/problems/webhook-destination-not-found"] -class ChangePlanResponse409ApplicationProblemPlusJson( - RootModel[ - ChangePlanResponse409ApplicationProblemPlusJson1 - | ChangePlanResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - ChangePlanResponse409ApplicationProblemPlusJson1 - | ChangePlanResponse409ApplicationProblemPlusJson2 - ) +class WebhookDestinationStatus(RootModel[Literal["enabled", "disabled"] | str]): + root: Literal["enabled", "disabled"] | str -class ChangePlanResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] +class WebhookEgressAddress(RootModel[str]): + root: str -class ChangePlanResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class WebhookEventSchema(RootModel[dict[str, JsonValue | None]]): + root: dict[str, JsonValue | None] -class ChangePlanResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class WebhookEventTypeAudience(RootModel[Literal["agent", "infrastructure"] | str]): + root: Literal["agent", "infrastructure"] | str -class ChangePlanResponse422ApplicationProblemPlusJson( - RootModel[ - ChangePlanResponse422ApplicationProblemPlusJson1 - | ChangePlanResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ChangePlanResponse422ApplicationProblemPlusJson1 - | ChangePlanResponse422ApplicationProblemPlusJson2 - ) +class WebhookEventTypeName(RootModel[str]): + root: str -class ChangePlanResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] +class WebhookEventWildcard(RootModel[Literal["*"]]): + root: Literal["*"] -class ChangePlanResponse502ApplicationProblemPlusJson(BaseModel): +class WhatsappAccountDisconnectingProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_ACCOUNT_DISCONNECTING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[409] + title: Literal["WhatsApp Business Account Disconnecting"] + type: Literal["https://photon.codes/docs/problems/whatsapp-account-disconnecting"] -class ChangePlanResponse503ApplicationProblemPlusJson1(BaseModel): +class WhatsappAccountProvisioningProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_ACCOUNT_PROVISIONING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Idempotency Unavailable"] - type: Literal["https://photon.codes/docs/problems/idempotency-unavailable"] + status: Literal[409] + title: Literal["WhatsApp Business Account Has Provisioning Numbers"] + type: Literal["https://photon.codes/docs/problems/whatsapp-account-provisioning"] -class ChangePlanResponse503ApplicationProblemPlusJson2(BaseModel): +class WhatsappBusinessAccountAlert(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ChangePlanResponse503ApplicationProblemPlusJson( - RootModel[ - ChangePlanResponse503ApplicationProblemPlusJson1 - | ChangePlanResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ChangePlanResponse503ApplicationProblemPlusJson1 - | ChangePlanResponse503ApplicationProblemPlusJson2 - ) + description: str + entityId: str + entityType: str + observedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + severity: str + status: str + type: str -class ChangePlanResponse504ApplicationProblemPlusJson1(BaseModel): +class WhatsappDisplayNameUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_DISPLAY_NAME_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + status: Literal[422] + title: Literal["WhatsApp Display Name Unavailable"] + type: Literal["https://photon.codes/docs/problems/whatsapp-display-name-unavailable"] -class ChangePlanResponse504ApplicationProblemPlusJson2(BaseModel): +class WhatsappModeDedicatedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_MODE_DEDICATED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[409] + title: Literal["WhatsApp Mode Is Dedicated"] + type: Literal["https://photon.codes/docs/problems/whatsapp-mode-dedicated"] -class ChangePlanResponse504ApplicationProblemPlusJson( +class WhatsappOutboundCapacity( RootModel[ - ChangePlanResponse504ApplicationProblemPlusJson1 - | ChangePlanResponse504ApplicationProblemPlusJson2 + Literal["50", "250", "1000", "2000", "10000", "100000", "UNLIMITED", "UNTIERED", "UNKNOWN"] + | str ] ): root: ( - ChangePlanResponse504ApplicationProblemPlusJson1 - | ChangePlanResponse504ApplicationProblemPlusJson2 + Literal["50", "250", "1000", "2000", "10000", "100000", "UNLIMITED", "UNTIERED", "UNKNOWN"] + | str ) -class CheckProjectSlugAvailabilityResponse200ApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - available: Literal[True] - slug: str +class WhatsappPhoneNumberOwnership(RootModel[Literal["photon", "meta"] | str]): + root: Literal["photon", "meta"] | str -class CheckProjectSlugAvailabilityResponse200ApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - available: Literal[False] - reason: Literal["reserved", "retired", "taken", "too_short"] | str - slug: str - suggestion: str | MISSING = MISSING +class WhatsappRestrictionStatus( + RootModel[Literal["FLAGGED", "DISABLED", "REINSTATED", "UNKNOWN"] | str] +): + root: Literal["FLAGGED", "DISABLED", "REINSTATED", "UNKNOWN"] | str -class CheckProjectSlugAvailabilityResponse200ApplicationJson( - RootModel[ - CheckProjectSlugAvailabilityResponse200ApplicationJson1 - | CheckProjectSlugAvailabilityResponse200ApplicationJson2 - ] -): - root: ( - CheckProjectSlugAvailabilityResponse200ApplicationJson1 - | CheckProjectSlugAvailabilityResponse200ApplicationJson2 - ) +class WhatsappReviewStatus(RootModel[Literal["PENDING", "APPROVED", "REJECTED", "UNKNOWN"] | str]): + root: Literal["PENDING", "APPROVED", "REJECTED", "UNKNOWN"] | str -class CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson(BaseModel): +class WhatsappSenderConnectedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_SENDER_CONNECTED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + status: Literal[409] + title: Literal["WhatsApp Sender Connected"] + type: Literal["https://photon.codes/docs/problems/whatsapp-sender-connected"] -class CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson1(BaseModel): +class WhatsappSenderProvisioningProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_SENDER_PROVISIONING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + status: Literal[409] + title: Literal["WhatsApp Sender Provisioning"] + type: Literal["https://photon.codes/docs/problems/whatsapp-sender-provisioning"] -class CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson2(BaseModel): +class WhatsappVerificationCodeNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_VERIFICATION_CODE_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson( - RootModel[ - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson2 - ) + status: Literal[404] + title: Literal["WhatsApp Verification Code Not Found"] + type: Literal["https://photon.codes/docs/problems/whatsapp-verification-code-not-found"] -class CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson(BaseModel): +class WhatsappVerificationWindowExpiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_VERIFICATION_WINDOW_EXPIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + title: Literal["WhatsApp Verification Window Expired"] + type: Literal["https://photon.codes/docs/problems/whatsapp-verification-window-expired"] -class CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson(BaseModel): +class WhatsappVoipSourceNotEligibleProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[404] + title: Literal["WhatsApp VoIP Source Not Eligible"] + type: Literal["https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible"] -class CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson(BaseModel): +class WhatsappVoipSourceReleasingProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_VOIP_SOURCE_RELEASING"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + status: Literal[409] + title: Literal["WhatsApp VoIP Source Releasing"] + type: Literal["https://photon.codes/docs/problems/whatsapp-voip-source-releasing"] -class CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson1(BaseModel): +class WhatsappWabaNotConnectedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["WHATSAPP_WABA_NOT_CONNECTED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[404] + title: Literal["WhatsApp Business Account Not Connected"] + type: Literal["https://photon.codes/docs/problems/whatsapp-waba-not-connected"] -class CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson2(BaseModel): +class AccountDeletedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ACCOUNT_DELETED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson( - RootModel[ - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson1 - | CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson1 - | CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson2 - ) - - -class ClickHouseSqlQueryRequest(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - parameters: dict[str, str] | MISSING = MISSING - sql: str - - -class CommitAccountProfilePictureRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - uploadId: str + status: Literal[410] + title: Literal["Account Deleted"] + type: Literal["https://photon.codes/docs/problems/account-deleted"] -class CommitAccountProfilePictureResponse200ApplicationJson(BaseModel): +class AccountNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) __annotations__ = { - "__pydantic_extra__": dict[str, Any], + "__pydantic_extra__": dict[str, JsonValue | None], } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None + code: Literal["ACCOUNT_NOT_FOUND"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + requestId: str | MISSING = MISSING + status: Literal[404] + title: Literal["Account Not Found"] + type: Literal["https://photon.codes/docs/problems/account-not-found"] -class CommitAccountProfilePictureResponse400ApplicationProblemPlusJson1(BaseModel): +class AccountOwnsOrganizationsProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ACCOUNT_OWNS_ORGANIZATIONS"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + status: Literal[409] + title: Literal["Account Owns Organizations"] + type: Literal["https://photon.codes/docs/problems/account-owns-organizations"] -class CommitAccountProfilePictureResponse400ApplicationProblemPlusJson2(BaseModel): +class AccountServiceKeyLimitReachedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ACCOUNT_SERVICE_KEY_LIMIT_REACHED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + status: Literal[409] + title: Literal["Account Service Key Limit Reached"] + type: Literal["https://photon.codes/docs/problems/account-service-key-limit-reached"] -class CommitAccountProfilePictureResponse400ApplicationProblemPlusJson3(BaseModel): +class AccountServiceKeyNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ACCOUNT_SERVICE_KEY_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + status: Literal[404] + title: Literal["Account Service Key Not Found"] + type: Literal["https://photon.codes/docs/problems/account-service-key-not-found"] -class CommitAccountProfilePictureResponse400ApplicationProblemPlusJson( - RootModel[ - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse400ApplicationProblemPlusJson2 - | CommitAccountProfilePictureResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse400ApplicationProblemPlusJson2 - | CommitAccountProfilePictureResponse400ApplicationProblemPlusJson3 +class AgentProfileAvatarUpload(BaseModel): + model_config = ConfigDict( + extra="allow", ) + expiresAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + formFields: dict[str, str] + uploadId: str + uploadUrl: str -class CommitAccountProfilePictureResponse403ApplicationProblemPlusJson1(BaseModel): +class ApiKeyLimitReachedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["API_KEY_LIMIT_REACHED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + status: Literal[409] + title: Literal["API Key Limit Reached"] + type: Literal["https://photon.codes/docs/problems/api-key-limit-reached"] -class CommitAccountProfilePictureResponse403ApplicationProblemPlusJson2(BaseModel): +class ApiKeyNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["API_KEY_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CommitAccountProfilePictureResponse403ApplicationProblemPlusJson( - RootModel[ - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CommitAccountProfilePictureResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CommitAccountProfilePictureResponse403ApplicationProblemPlusJson2 - ) + status: Literal[404] + title: Literal["API Key Not Found"] + type: Literal["https://photon.codes/docs/problems/api-key-not-found"] -class CommitAccountProfilePictureResponse404ApplicationProblemPlusJson(BaseModel): +class ApiKeyRevokedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ACCOUNT_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["API_KEY_REVOKED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] + status: Literal[409] + title: Literal["API Key Revoked"] + type: Literal["https://photon.codes/docs/problems/api-key-revoked"] -class CommitAccountProfilePictureResponse410ApplicationProblemPlusJson(BaseModel): +class AppInstallationAssertionInvalidProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ACCOUNT_DELETED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["APP_INSTALLATION_ASSERTION_INVALID"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] + status: Literal[401] + title: Literal["Invalid Installation Client Assertion"] + type: Literal["https://photon.codes/docs/problems/app-installation-assertion-invalid"] -class CommitAccountProfilePictureResponse413ApplicationProblemPlusJson(BaseModel): +class AppInstallationAssertionReplayedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PAYLOAD_TOO_LARGE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["APP_INSTALLATION_ASSERTION_REPLAYED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] + status: Literal[409] + title: Literal["Installation Assertion Already Used"] + type: Literal["https://photon.codes/docs/problems/app-installation-assertion-replayed"] -class CommitAccountProfilePictureResponse422ApplicationProblemPlusJson1(BaseModel): +class AppInstallationConfigChangedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["APP_INSTALLATION_CONFIG_CHANGED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] + status: Literal[409] + title: Literal["Installation App Configuration Changed"] + type: Literal["https://photon.codes/docs/problems/app-installation-config-changed"] -class CommitAccountProfilePictureResponse422ApplicationProblemPlusJson2(BaseModel): +class AppInstallationDeliveryUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["APP_INSTALLATION_DELIVERY_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + status: Literal[409] + title: Literal["Installation Delivery Unavailable"] + type: Literal["https://photon.codes/docs/problems/app-installation-delivery-unavailable"] + + +class AssignSmsLineCampaignConflictProblem( + RootModel[ + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem + ] +): + root: ( + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem + ) + + +class AssignSmsLineCampaignGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class AssignSmsLineCampaignNotFoundProblem( + RootModel[SmsCampaignNotFoundProblem | SmsLineNotFoundProblem] +): + root: SmsCampaignNotFoundProblem | SmsLineNotFoundProblem -class CommitAccountProfilePictureResponse422ApplicationProblemPlusJson( +class AssignSmsLineCampaignServiceUnavailableProblem( + RootModel[SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem] +): + root: SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem + + +class AssignVoiceLineProfileConflictProblem( RootModel[ - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse422ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceDefaultProfileAssignmentForbiddenProblem + | VoiceProfileVersionConflictProblem ] ): root: ( - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse422ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceDefaultProfileAssignmentForbiddenProblem + | VoiceProfileVersionConflictProblem ) -class CommitAccountProfilePictureResponse500ApplicationProblemPlusJson1(BaseModel): +class AssignVoiceLineProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class AssignVoiceLineProfileNotFoundProblem( + RootModel[ResourceNotFoundProblem | VoiceProfileNotFoundProblem] +): + root: ResourceNotFoundProblem | VoiceProfileNotFoundProblem + + +class AssignmentExistsProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ASSIGNMENT_EXISTS"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + status: Literal[409] + title: Literal["Assignment Exists"] + type: Literal["https://photon.codes/docs/problems/assignment-exists"] -class CommitAccountProfilePictureResponse502ApplicationProblemPlusJson(BaseModel): +class AssignmentNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ASSIGNMENT_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[404] + title: Literal["Assignment Not Found"] + type: Literal["https://photon.codes/docs/problems/assignment-not-found"] -class CommitAccountProfilePictureResponse503ApplicationProblemPlusJson(BaseModel): +class AttachmentConflictProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ATTACHMENT_CONFLICT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + status: Literal[409] + title: Literal["Attachment Conflict"] + type: Literal["https://photon.codes/docs/problems/attachment-conflict"] -class CommitAccountProfilePictureResponse504ApplicationProblemPlusJson1(BaseModel): +class AttachmentNotFoundProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ATTACHMENT_NOT_FOUND"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[404] + title: Literal["Attachment Not Found"] + type: Literal["https://photon.codes/docs/problems/attachment-not-found"] -class CommitAccountProfilePictureResponse504ApplicationProblemPlusJson2(BaseModel): +class AttachmentNotReadyProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ATTACHMENT_NOT_READY"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + status: Literal[409] + title: Literal["Attachment Not Ready"] + type: Literal["https://photon.codes/docs/problems/attachment-not-ready"] -class CommitAccountProfilePictureResponse504ApplicationProblemPlusJson( - RootModel[ - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson1 - | CommitAccountProfilePictureResponse504ApplicationProblemPlusJson2 - ) - - -class CommitAgentProfileAvatarRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - uploadId: str - - -class CommitAgentProfileAvatarResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - avatarUrl: str - firstName: str - lastName: str | None - - -class CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson( - RootModel[ - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson2 - | CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson2 - | CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson3 - ) - - -class CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson( - RootModel[ - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson2 - ) - - -class CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson( - RootModel[ - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson2 - ) - - -class CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson( - RootModel[ - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson1 - | CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson2 - ) - - -class Authentication(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - algorithm: Literal["sha-256", "md5"] | str - - -class ConfigureVoiceProfileOutboundRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication - expectedVersion: int - - -class Authentication1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - algorithm: Literal["sha-256", "md5"] | str - previousPasswordValidUntil: str | None - username: str - validFrom: str - - -class Endpoint(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - host: str - port: int - transport: Literal["udp", "tcp", "tls"] | str - - -class Connection(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection - - -class ConfigureVoiceProfileOutboundResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - outbound: Outbound - password: str | None - profileVersion: int - - -class Connection1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection1 - - -class ConfigureVoiceProfileOutboundResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - outbound: Outbound1 - password: str | None - profileVersion: int - - -class ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson( - RootModel[ - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson2 - ) - - -class ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson( - RootModel[ - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson2 - ) - - -class ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] - - -class ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Already Configured"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-configured"] - - -class ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson( - RootModel[ - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson2 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson3 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson4 - ] -): - root: ( - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson2 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson3 - | ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson4 - ) - - -class ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson( - RootModel[ - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson2 - ) - - -class ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson( - RootModel[ - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson1 - | ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson2 - ) - - -class ConfirmAccountPhoneVerificationRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: str - phoneNumber: str - - -class ConfirmAccountPhoneVerificationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - __annotations__ = { - "__pydantic_extra__": dict[str, Any], - } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None - - -class ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson( - RootModel[ - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson2 - ) - - -class ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson( - RootModel[ - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson1 - | ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson1 - | ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson2 - ) - - -class ConnectEmailDomainRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - domain: str - - -class ConnectEmailDomainResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ConnectEmailDomainResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ConnectEmailDomainResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ConnectEmailDomainResponse400ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse400ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectEmailDomainResponse400ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse400ApplicationProblemPlusJson2 - ) - - -class ConnectEmailDomainResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class ConnectEmailDomainResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ConnectEmailDomainResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ConnectEmailDomainResponse403ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectEmailDomainResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectEmailDomainResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectEmailDomainResponse403ApplicationProblemPlusJson2 - ) - - -class ConnectEmailDomainResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ConnectEmailDomainResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["EMAIL_DOMAIN_ALREADY_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Email Domain Already Connected"] - type: Literal["https://photon.codes/docs/problems/email-domain-already-connected"] - - -class ConnectEmailDomainResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["EMAIL_DOMAIN_CAP_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Email Domain Cap Exceeded"] - type: Literal["https://photon.codes/docs/problems/email-domain-cap-exceeded"] - - -class ConnectEmailDomainResponse409ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse409ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse409ApplicationProblemPlusJson2 - | ConnectEmailDomainResponse409ApplicationProblemPlusJson3 - ] -): - root: ( - ConnectEmailDomainResponse409ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse409ApplicationProblemPlusJson2 - | ConnectEmailDomainResponse409ApplicationProblemPlusJson3 - ) - - -class ConnectEmailDomainResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ConnectEmailDomainResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ConnectEmailDomainResponse422ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse422ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectEmailDomainResponse422ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse422ApplicationProblemPlusJson2 - ) - - -class ConnectEmailDomainResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ConnectEmailDomainResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ConnectEmailDomainResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ConnectEmailDomainResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class ConnectEmailDomainResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ConnectEmailDomainResponse503ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse503ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectEmailDomainResponse503ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse503ApplicationProblemPlusJson2 - ) - - -class ConnectEmailDomainResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ConnectEmailDomainResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ConnectEmailDomainResponse504ApplicationProblemPlusJson( - RootModel[ - ConnectEmailDomainResponse504ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectEmailDomainResponse504ApplicationProblemPlusJson1 - | ConnectEmailDomainResponse504ApplicationProblemPlusJson2 - ) - - -class ConnectTelegramBotRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - - -class ConnectTelegramBotResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ConnectTelegramBotResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ConnectTelegramBotResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ConnectTelegramBotResponse400ApplicationProblemPlusJson( - RootModel[ - ConnectTelegramBotResponse400ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectTelegramBotResponse400ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse400ApplicationProblemPlusJson2 - ) - - -class ConnectTelegramBotResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ConnectTelegramBotResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ConnectTelegramBotResponse403ApplicationProblemPlusJson( - RootModel[ - ConnectTelegramBotResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectTelegramBotResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectTelegramBotResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectTelegramBotResponse403ApplicationProblemPlusJson2 - ) - - -class ConnectTelegramBotResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["TELEGRAM_PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Telegram Project Deleted"] - type: Literal["https://photon.codes/docs/problems/telegram-project-deleted"] - - -class ConnectTelegramBotResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ConnectTelegramBotResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["TELEGRAM_PROVISION_IN_PROGRESS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - operationId: str - operationUrl: str - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Telegram Provision In Progress"] - type: Literal["https://photon.codes/docs/problems/telegram-provision-in-progress"] - - -class ConnectTelegramBotResponse409ApplicationProblemPlusJson( - RootModel[ - ConnectTelegramBotResponse409ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse409ApplicationProblemPlusJson2 - | ConnectTelegramBotResponse409ApplicationProblemPlusJson3 - ] -): - root: ( - ConnectTelegramBotResponse409ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse409ApplicationProblemPlusJson2 - | ConnectTelegramBotResponse409ApplicationProblemPlusJson3 - ) - - -class ConnectTelegramBotResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ConnectTelegramBotResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ConnectTelegramBotResponse422ApplicationProblemPlusJson( - RootModel[ - ConnectTelegramBotResponse422ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectTelegramBotResponse422ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse422ApplicationProblemPlusJson2 - ) - - -class ConnectTelegramBotResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ConnectTelegramBotResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ConnectTelegramBotResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ConnectTelegramBotResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ConnectTelegramBotResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ConnectTelegramBotResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ConnectTelegramBotResponse504ApplicationProblemPlusJson( - RootModel[ - ConnectTelegramBotResponse504ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectTelegramBotResponse504ApplicationProblemPlusJson1 - | ConnectTelegramBotResponse504ApplicationProblemPlusJson2 - ) - - -class ConnectWhatsappBusinessRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: str - phoneNumberId: str - wabaId: str - - -class ConnectWhatsappBusinessResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson( - RootModel[ - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson2 - ) - - -class ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson( - RootModel[ - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson2 - ) - - -class ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson( - RootModel[ - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson2 - ) - - -class ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson( - RootModel[ - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson2 - ) - - -class ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson( - RootModel[ - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson1 - | ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson2 - ) - - -class CountProjectsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - count: int - - -class CountProjectsResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CountProjectsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CountProjectsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CountProjectsResponse403ApplicationProblemPlusJson( - RootModel[ - CountProjectsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CountProjectsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CountProjectsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CountProjectsResponse403ApplicationProblemPlusJson2 - ) - - -class CountProjectsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CountProjectsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CountProjectsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CountProjectsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CountProjectsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CountProjectsResponse504ApplicationProblemPlusJson( - RootModel[ - CountProjectsResponse504ApplicationProblemPlusJson1 - | CountProjectsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CountProjectsResponse504ApplicationProblemPlusJson1 - | CountProjectsResponse504ApplicationProblemPlusJson2 - ) - - -class CreateAccountProfilePictureUploadRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - contentType: Literal["image/jpeg", "image/png", "image/webp"] | str - - -class CreateAccountProfilePictureUploadResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expiresAt: str - formFields: dict[str, str] - uploadId: str - uploadUrl: str - - -class CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson( - RootModel[ - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson2 - ) - - -class CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson( - RootModel[ - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson1 - | CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson1 - | CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson2 - ) - - -class CreateAccountServiceKeyRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expiresAt: str | MISSING = Field(MISSING, examples=["2030-01-01T00:00:00Z"]) - name: str - - -class ServiceKey(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - accountId: str - createdAt: str - expiresAt: str | None - name: str - revokedAt: str | None - serviceKeyId: str - - -class CreateAccountServiceKeyResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - secret: str - serviceKey: ServiceKey - - -class CreateAccountServiceKeyResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateAccountServiceKeyResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateAccountServiceKeyResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateAccountServiceKeyResponse400ApplicationProblemPlusJson( - RootModel[ - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse400ApplicationProblemPlusJson2 - | CreateAccountServiceKeyResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse400ApplicationProblemPlusJson2 - | CreateAccountServiceKeyResponse400ApplicationProblemPlusJson3 - ) - - -class CreateAccountServiceKeyResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateAccountServiceKeyResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateAccountServiceKeyResponse403ApplicationProblemPlusJson( - RootModel[ - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAccountServiceKeyResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAccountServiceKeyResponse403ApplicationProblemPlusJson2 - ) - - -class CreateAccountServiceKeyResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class CreateAccountServiceKeyResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_SERVICE_KEY_LIMIT_REACHED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Account Service Key Limit Reached"] - type: Literal["https://photon.codes/docs/problems/account-service-key-limit-reached"] - - -class CreateAccountServiceKeyResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class CreateAccountServiceKeyResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class CreateAccountServiceKeyResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateAccountServiceKeyResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateAccountServiceKeyResponse422ApplicationProblemPlusJson( - RootModel[ - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse422ApplicationProblemPlusJson2 - ) - - -class CreateAccountServiceKeyResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateAccountServiceKeyResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateAccountServiceKeyResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateAccountServiceKeyResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateAccountServiceKeyResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateAccountServiceKeyResponse504ApplicationProblemPlusJson( - RootModel[ - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson1 - | CreateAccountServiceKeyResponse504ApplicationProblemPlusJson2 - ) - - -class CreateAgentProfileAvatarUploadRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - contentType: Literal["image/jpeg", "image/png", "image/webp"] | str - - -class CreateAgentProfileAvatarUploadResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expiresAt: str - formFields: dict[str, str] - uploadId: str - uploadUrl: str - - -class CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson( - RootModel[ - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson2 - ) - - -class CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson( - RootModel[ - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson1 - | CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson1 - | CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson2 - ) - - -class CreateAppInstallationRequestRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - appId: str - clientAssertion: str - redirectUri: str - state: str - - -class CreateAppInstallationRequestResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - appId: str - appVersion: str - createdAt: str - redirectUri: str - requestId: str - state: str - - -class CreateAppInstallationRequestResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateAppInstallationRequestResponse401ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["APP_INSTALLATION_ASSERTION_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[401] - title: Literal["Invalid Installation Client Assertion"] - type: Literal["https://photon.codes/docs/problems/app-installation-assertion-invalid"] - - -class CreateAppInstallationRequestResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["APP_INSTALLATION_ASSERTION_REPLAYED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Installation Assertion Already Used"] - type: Literal["https://photon.codes/docs/problems/app-installation-assertion-replayed"] - - -class CreateAppInstallationRequestResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["APP_INSTALLATION_CONFIG_CHANGED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Installation App Configuration Changed"] - type: Literal["https://photon.codes/docs/problems/app-installation-config-changed"] - - -class CreateAppInstallationRequestResponse409ApplicationProblemPlusJson( - RootModel[ - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson1 - | CreateAppInstallationRequestResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson1 - | CreateAppInstallationRequestResponse409ApplicationProblemPlusJson2 - ) - - -class CreateAppInstallationRequestResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateAppInstallationRequestResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateAppInstallationRequestResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateAppInstallationRequestResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateAppInstallationRequestResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateAppInstallationRequestResponse504ApplicationProblemPlusJson( - RootModel[ - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson1 - | CreateAppInstallationRequestResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson1 - | CreateAppInstallationRequestResponse504ApplicationProblemPlusJson2 - ) - - -class CreateDefaultVoiceProfileRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING - protocol: Literal["sip"] - - -class Credentials(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - username: str - - -class Inbound(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection2 - - -class Configuration(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound | None - outbound: Outbound2 | None - - -class CreateDefaultVoiceProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class Inbound1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection3 - - -class Configuration1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound1 | None - outbound: Outbound3 | None - - -class CreateDefaultVoiceProfileResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration1 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson( - RootModel[ - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 - ) - - -class CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_DEFAULT_PROFILE_EXISTS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Default Profile Exists"] - type: Literal["https://photon.codes/docs/problems/voice-default-profile-exists"] - - -class CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson( - RootModel[ - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1 - | CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1 - | CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2 - ) - - -class CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson( - RootModel[ - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - checkoutUrl: str - """ - Hosted Stripe page; send the user here. - """ - - -class CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson2 - | CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson2 - | CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson3 - ) - - -class CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYMENT_PROVIDER_NOT_READY"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Payment Provider Not Ready"] - type: Literal["https://photon.codes/docs/problems/payment-provider-not-ready"] - - -class CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson1 - | CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationSetupIntentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - clientSecret: str - """ - Stripe SetupIntent client secret. - """ - publishableKey: str - """ - Publishable key for the Stripe account backing billing. - """ - - -class CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson2 - | CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson2 - | CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson3 - ) - - -class CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson1 - | CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationSsoPortalLinkRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - intent: Literal["sso", "domain_verification"] | str = "sso" - returnTo: str - - -class CreateOrganizationSsoPortalLinkResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - url: str - - -class CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] - - -class CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson1 - | CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson1 - | CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson2 - ) - - -class CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] - - -class CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] - - -class CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] - - -class CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson( - RootModel[ - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson1 - | CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson1 - | CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson2 - ) - - -class CreateProjectApiKeyRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expiresAt: str | MISSING = MISSING - name: str - permissions: list[ - Literal[ - "events:read", - "events:write", - "platforms:read", - "platforms:write", - "project:read", - "project:write", - ] - | str - ] - - -class ApiKey(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiKeyId: str - createdAt: str - createdByAccountId: str - expiresAt: str | None - name: str - permissions: list[str] - permissionsUpdatedAt: str | None - projectId: str - revokedAt: str | None - - -class CreateProjectApiKeyResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiKey: ApiKey - secret: str - - -class CreateProjectApiKeyResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateProjectApiKeyResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateProjectApiKeyResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateProjectApiKeyResponse400ApplicationProblemPlusJson( - RootModel[ - CreateProjectApiKeyResponse400ApplicationProblemPlusJson1 - | CreateProjectApiKeyResponse400ApplicationProblemPlusJson2 - | CreateProjectApiKeyResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CreateProjectApiKeyResponse400ApplicationProblemPlusJson1 - | CreateProjectApiKeyResponse400ApplicationProblemPlusJson2 - | CreateProjectApiKeyResponse400ApplicationProblemPlusJson3 - ) - - -class CreateProjectApiKeyResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateProjectApiKeyResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateProjectApiKeyResponse403ApplicationProblemPlusJson( - RootModel[ - CreateProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateProjectApiKeyResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateProjectApiKeyResponse403ApplicationProblemPlusJson2 - ) - - -class CreateProjectApiKeyResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class CreateProjectApiKeyResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["API_KEY_LIMIT_REACHED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["API Key Limit Reached"] - type: Literal["https://photon.codes/docs/problems/api-key-limit-reached"] - - -class CreateProjectApiKeyResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class CreateProjectApiKeyResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class CreateProjectApiKeyResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateProjectApiKeyResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateProjectApiKeyResponse422ApplicationProblemPlusJson( - RootModel[ - CreateProjectApiKeyResponse422ApplicationProblemPlusJson1 - | CreateProjectApiKeyResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateProjectApiKeyResponse422ApplicationProblemPlusJson1 - | CreateProjectApiKeyResponse422ApplicationProblemPlusJson2 - ) - - -class CreateProjectApiKeyResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateProjectApiKeyResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateProjectRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - name: str - slug: str - - -class AgentProfile(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - avatarUrl: str - firstName: str - lastName: str | None - - -class CreateProjectResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - agentProfile: AgentProfile - billingInitialization: ( - Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING - ) = MISSING - createdAt: str - createdByAccountId: str | None - createdByActorId: str | None - createdByActorKind: Literal["account", "service_identity"] | str | None - deletedAt: str | None - name: str - organizationId: str - projectId: str - slug: str - updatedAt: str - - -class CreateProjectResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateProjectResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateProjectResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateProjectResponse400ApplicationProblemPlusJson( - RootModel[ - CreateProjectResponse400ApplicationProblemPlusJson1 - | CreateProjectResponse400ApplicationProblemPlusJson2 - | CreateProjectResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - CreateProjectResponse400ApplicationProblemPlusJson1 - | CreateProjectResponse400ApplicationProblemPlusJson2 - | CreateProjectResponse400ApplicationProblemPlusJson3 - ) - - -class CreateProjectResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateProjectResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateProjectResponse403ApplicationProblemPlusJson( - RootModel[ - CreateProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateProjectResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateProjectResponse403ApplicationProblemPlusJson2 - ) - - -class CreateProjectResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SLUG_TAKEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - suggestion: str | MISSING = MISSING - title: Literal["Slug Already Taken"] - type: Literal["https://photon.codes/docs/problems/slug-taken"] - - -class CreateProjectResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class CreateProjectResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateProjectResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateProjectResponse422ApplicationProblemPlusJson( - RootModel[ - CreateProjectResponse422ApplicationProblemPlusJson1 - | CreateProjectResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateProjectResponse422ApplicationProblemPlusJson1 - | CreateProjectResponse422ApplicationProblemPlusJson2 - ) - - -class CreateProjectResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateProjectResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateProjectResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateProjectResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateProjectResponse504ApplicationProblemPlusJson( - RootModel[ - CreateProjectResponse504ApplicationProblemPlusJson1 - | CreateProjectResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateProjectResponse504ApplicationProblemPlusJson1 - | CreateProjectResponse504ApplicationProblemPlusJson2 - ) - - -class CreateSharedLineAssignmentRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - - -class CreateSharedLineAssignmentResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson2 - ) - - -class CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IMESSAGE_MODE_DEDICATED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["iMessage Mode Is Dedicated"] - type: Literal["https://photon.codes/docs/problems/imessage-mode-dedicated"] - - -class CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SHARED_LINE_CAP_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Shared Line Cap Exceeded"] - type: Literal["https://photon.codes/docs/problems/shared-line-cap-exceeded"] - - -class CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_EXISTS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment Exists"] - type: Literal["https://photon.codes/docs/problems/assignment-exists"] - - -class CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson2 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson3 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson4 - ] -): - root: ( - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson2 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson3 - | CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson4 - ) - - -class CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson2 - ) - - -class CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SHARED_LINE_POOL_EXHAUSTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Shared Line Pool Exhausted"] - type: Literal["https://photon.codes/docs/problems/shared-line-pool-exhausted"] - - -class CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson2 - | CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson3 - ] -): - root: ( - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson2 - | CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson3 - ) - - -class CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class CreateVoiceProfileRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING - name: str - protocol: Literal["sip"] - - -class Inbound2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection4 - - -class Configuration2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound2 | None - outbound: Outbound4 | None - - -class CreateVoiceProfileResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration2 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class CreateVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateVoiceProfileResponse403ApplicationProblemPlusJson( - RootModel[ - CreateVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateVoiceProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateVoiceProfileResponse403ApplicationProblemPlusJson2 - ) - - -class CreateVoiceProfileResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class CreateVoiceProfileResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_DEFAULT_PROFILE_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Default Profile Required"] - type: Literal["https://photon.codes/docs/problems/voice-default-profile-required"] - - -class CreateVoiceProfileResponse409ApplicationProblemPlusJson( - RootModel[ - CreateVoiceProfileResponse409ApplicationProblemPlusJson1 - | CreateVoiceProfileResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - CreateVoiceProfileResponse409ApplicationProblemPlusJson1 - | CreateVoiceProfileResponse409ApplicationProblemPlusJson2 - ) - - -class CreateVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CreateVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateVoiceProfileResponse504ApplicationProblemPlusJson( - RootModel[ - CreateVoiceProfileResponse504ApplicationProblemPlusJson1 - | CreateVoiceProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateVoiceProfileResponse504ApplicationProblemPlusJson1 - | CreateVoiceProfileResponse504ApplicationProblemPlusJson2 - ) - - -class CreateWebhookDestinationRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - description: str | MISSING = MISSING - enabledEvents: PrefixItems[Literal["*"]] | list[str] - name: str - status: Literal["enabled", "disabled"] | str = "enabled" - url: str - """ - HTTPS URL without credentials or a fragment. - """ - - -class Destination(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - createdAt: str - deletedAt: str | None - description: str | None - destinationId: str - enabledEvents: PrefixItems[Literal["*"]] | list[str] - name: str - projectId: str - status: Literal["enabled", "disabled"] | str - updatedAt: str - url: str - - -class CreateWebhookDestinationResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - destination: Destination - signingSecret: str - - -class CreateWebhookDestinationResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class CreateWebhookDestinationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateWebhookDestinationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateWebhookDestinationResponse403ApplicationProblemPlusJson( - RootModel[ - CreateWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWebhookDestinationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWebhookDestinationResponse403ApplicationProblemPlusJson2 - ) - - -class CreateWebhookDestinationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateWebhookDestinationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateWebhookDestinationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateWebhookDestinationResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateWhatsappSharedLineAssignmentRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - - -class CreateWhatsappSharedLineAssignmentResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_MODE_DEDICATED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Mode Is Dedicated"] - type: Literal["https://photon.codes/docs/problems/whatsapp-mode-dedicated"] - - -class CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SHARED_LINE_CAP_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Shared Line Cap Exceeded"] - type: Literal["https://photon.codes/docs/problems/shared-line-cap-exceeded"] - - -class CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_EXISTS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment Exists"] - type: Literal["https://photon.codes/docs/problems/assignment-exists"] - - -class CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson2 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson3 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson4 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson2 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson3 - | CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson4 - ) - - -class CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SHARED_LINE_POOL_EXHAUSTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Shared Line Pool Exhausted"] - type: Literal["https://photon.codes/docs/problems/shared-line-pool-exhausted"] - - -class CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson2 - | CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson3 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson2 - | CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson3 - ) - - -class CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappVoipSenderRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - displayName: str | MISSING = MISSING - voipResourceId: str - - -class CreateWhatsappVoipSenderResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_WABA_NOT_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp Business Account Not Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-waba-not-connected"] - - -class CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp VoIP Source Not Eligible"] - type: Literal["https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible"] - - -class CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_ACCOUNT_DISCONNECTING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Business Account Disconnecting"] - type: Literal["https://photon.codes/docs/problems/whatsapp-account-disconnecting"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_ACCOUNT_PROVISIONING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Business Account Has Provisioning Numbers"] - type: Literal["https://photon.codes/docs/problems/whatsapp-account-provisioning"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_SENDER_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Sender Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-sender-connected"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_SENDER_PROVISIONING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Sender Provisioning"] - type: Literal["https://photon.codes/docs/problems/whatsapp-sender-provisioning"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_VOIP_SOURCE_RELEASING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp VoIP Source Releasing"] - type: Literal["https://photon.codes/docs/problems/whatsapp-voip-source-releasing"] - - -class CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson2 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson3 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson4 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson5 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson6 - ] -): - root: ( - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson2 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson3 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson4 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson5 - | CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson6 - ) - - -class CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_DISPLAY_NAME_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["WhatsApp Display Name Unavailable"] - type: Literal["https://photon.codes/docs/problems/whatsapp-display-name-unavailable"] - - -class CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson2 - | CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson3 - ] -): - root: ( - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson2 - | CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson3 - ) - - -class CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson2 - ) - - -class CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson( - RootModel[ - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson1 - | CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson2 - ) - - -class DeleteAccountResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - __annotations__ = { - "__pydantic_extra__": dict[str, Any], - } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None - - -class DeleteAccountResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteAccountResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteAccountResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteAccountResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteAccountResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteAccountResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class DeleteAccountResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_OWNS_ORGANIZATIONS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Account Owns Organizations"] - type: Literal["https://photon.codes/docs/problems/account-owns-organizations"] - - -class DeleteAccountResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DeleteAccountResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteAccountResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteAccountResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeleteAccountResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DeleteAccountResponse504ApplicationProblemPlusJson( - RootModel[ - DeleteAccountResponse504ApplicationProblemPlusJson1 - | DeleteAccountResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteAccountResponse504ApplicationProblemPlusJson1 - | DeleteAccountResponse504ApplicationProblemPlusJson2 - ) - - -class DeleteProjectResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - agentProfile: AgentProfile - billingInitialization: ( - Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING - ) = MISSING - createdAt: str - createdByAccountId: str | None - createdByActorId: str | None - createdByActorKind: Literal["account", "service_identity"] | str | None - deletedAt: str | None - name: str - organizationId: str - projectId: str - slug: str - updatedAt: str - - -class DeleteProjectResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class DeleteProjectResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class DeleteProjectResponse400ApplicationProblemPlusJson( - RootModel[ - DeleteProjectResponse400ApplicationProblemPlusJson1 - | DeleteProjectResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteProjectResponse400ApplicationProblemPlusJson1 - | DeleteProjectResponse400ApplicationProblemPlusJson2 - ) - - -class DeleteProjectResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteProjectResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteProjectResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteProjectResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteProjectResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteProjectResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class DeleteProjectResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class DeleteProjectResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DeleteProjectResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class DeleteProjectResponse422ApplicationProblemPlusJson( - RootModel[ - DeleteProjectResponse422ApplicationProblemPlusJson1 - | DeleteProjectResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteProjectResponse422ApplicationProblemPlusJson1 - | DeleteProjectResponse422ApplicationProblemPlusJson2 - ) - - -class DeleteProjectResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteProjectResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteProjectResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeleteProjectResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DeleteProjectResponse504ApplicationProblemPlusJson( - RootModel[ - DeleteProjectResponse504ApplicationProblemPlusJson1 - | DeleteProjectResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteProjectResponse504ApplicationProblemPlusJson1 - | DeleteProjectResponse504ApplicationProblemPlusJson2 - ) - - -class Inbound3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class DeleteVoiceProfileInboundResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound3 | None - profileVersion: int - - -class DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] - - -class DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileOutboundResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - outbound: None - profileVersion: int - - -class DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_NOT_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Not Configured"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-not-configured"] - - -class DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteVoiceProfileResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteVoiceProfileResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class DeleteVoiceProfileResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_IN_USE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile In Use"] - type: Literal["https://photon.codes/docs/problems/voice-profile-in-use"] - - -class DeleteVoiceProfileResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class DeleteVoiceProfileResponse409ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileResponse409ApplicationProblemPlusJson1 - | DeleteVoiceProfileResponse409ApplicationProblemPlusJson2 - ) - - -class DeleteVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DeleteVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class DeleteVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DeleteVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DeleteVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeleteVoiceProfileResponse504ApplicationProblemPlusJson( - RootModel[ - DeleteVoiceProfileResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteVoiceProfileResponse504ApplicationProblemPlusJson1 - | DeleteVoiceProfileResponse504ApplicationProblemPlusJson2 - ) - - -class DeleteWebhookDestinationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - createdAt: str - deletedAt: str | None - description: str | None - destinationId: str - enabledEvents: PrefixItems[Literal["*"]] | list[str] - name: str - projectId: str - status: Literal["enabled", "disabled"] | str - updatedAt: str - url: str - - -class DeleteWebhookDestinationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DeleteWebhookDestinationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DeleteWebhookDestinationResponse403ApplicationProblemPlusJson( - RootModel[ - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteWebhookDestinationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DeleteWebhookDestinationResponse403ApplicationProblemPlusJson2 - ) - - -class DeleteWebhookDestinationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Webhook Destination Not Found"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-not-found"] - - -class DeleteWebhookDestinationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DeleteWebhookDestinationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DeleteWebhookDestinationResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DeviceAuthorizeResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - device_code: str - """ - Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. - """ - expires_in: float - """ - Lifetime of the device code and user code, in seconds. - """ - interval: float - """ - Minimum number of seconds to wait between token polling requests. - """ - user_code: str - """ - Code the user enters at verification_uri to authorize this device. - """ - verification_uri: str - """ - Browser URL where the user enters user_code and authorizes the device. - """ - verification_uri_complete: str - """ - Browser URL with user_code included, ready to open or encode as a QR code. - """ - - -class DeviceTokenRequestApplicationForm1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - device_code: str - """ - device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - """ - grant_type: Literal["urn:ietf:params:oauth:grant-type:device_code"] - """ - Selects the device authorization grant to poll or exchange a device code. - """ - - -class DeviceTokenRequestApplicationForm2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - grant_type: Literal["refresh_token"] - """ - Selects the refresh-token grant to obtain a new token pair. - """ - refresh_token: str - """ - Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - """ - - -class DeviceTokenRequestApplicationForm( - RootModel[DeviceTokenRequestApplicationForm1 | DeviceTokenRequestApplicationForm2] -): - root: DeviceTokenRequestApplicationForm1 | DeviceTokenRequestApplicationForm2 - - -class DeviceTokenRequestApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - device_code: str - """ - device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - """ - grant_type: Literal["urn:ietf:params:oauth:grant-type:device_code"] - """ - Selects the device authorization grant to poll or exchange a device code. - """ - - -class DeviceTokenRequestApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - grant_type: Literal["refresh_token"] - """ - Selects the refresh-token grant to obtain a new token pair. - """ - refresh_token: str - """ - Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - """ - - -class DeviceTokenRequestApplicationJson( - RootModel[DeviceTokenRequestApplicationJson1 | DeviceTokenRequestApplicationJson2] -): - root: DeviceTokenRequestApplicationJson1 | DeviceTokenRequestApplicationJson2 - - -class User(BaseModel): - """ - Profile of the authenticated user. - """ - - model_config = ConfigDict( - extra="allow", - ) - email: str - """ - Authenticated user's email address. - """ - first_name: str | None - """ - User's first name, or null when not set. - """ - id: str - """ - Authenticated user's identity identifier; distinct from the Photon Account ID. - """ - last_name: str | None - """ - User's last name, or null when not set. - """ - - -class DeviceTokenResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - access_token: str - """ - Bearer access token for authenticated Photon API requests. - """ - authentication_method: str | MISSING = MISSING - """ - Authentication method used for the device login, when returned. Omitted for refresh grants. - """ - expires_in: float - """ - Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. - """ - refresh_token: str - """ - Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. - """ - user: User - """ - Profile of the authenticated user. - """ - - -class DeviceTokenResponse400ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - error: str - """ - OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. - """ - error_description: str | MISSING = MISSING - """ - Optional human-readable explanation of the OAuth error. - """ - - -class DisconnectWhatsappBusinessAccountResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class DisconnectWhatsappBusinessAccountResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson( - RootModel[ - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson2 - ) - - -class DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson( - RootModel[ - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2 - ) - - -class DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_WABA_NOT_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp Business Account Not Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-waba-not-connected"] - - -class DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_ACCOUNT_DISCONNECTING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Business Account Disconnecting"] - type: Literal["https://photon.codes/docs/problems/whatsapp-account-disconnecting"] - - -class DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_ACCOUNT_PROVISIONING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Business Account Has Provisioning Numbers"] - type: Literal["https://photon.codes/docs/problems/whatsapp-account-provisioning"] - - -class DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson( - RootModel[ - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson2 - ) - - -class DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson( - RootModel[ - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson2 - ) - - -class DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson( - RootModel[ - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1 - | DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2 - ) - - -class DownloadAttachmentResponse200ApplicationOctetStream(RootModel[Any]): - root: Any - - -class DownloadAttachmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class DownloadAttachmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class DownloadAttachmentResponse403ApplicationProblemPlusJson( - RootModel[ - DownloadAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DownloadAttachmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - DownloadAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | DownloadAttachmentResponse403ApplicationProblemPlusJson2 - ) - - -class DownloadAttachmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ATTACHMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Attachment Not Found"] - type: Literal["https://photon.codes/docs/problems/attachment-not-found"] - - -class DownloadAttachmentResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ATTACHMENT_NOT_READY"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Attachment Not Ready"] - type: Literal["https://photon.codes/docs/problems/attachment-not-ready"] - - -class DownloadAttachmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class DownloadAttachmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class DownloadAttachmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class DownloadAttachmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class DownloadAttachmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class DownloadAttachmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class DownloadAttachmentResponse504ApplicationProblemPlusJson( - RootModel[ - DownloadAttachmentResponse504ApplicationProblemPlusJson1 - | DownloadAttachmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - DownloadAttachmentResponse504ApplicationProblemPlusJson1 - | DownloadAttachmentResponse504ApplicationProblemPlusJson2 - ) - - -class GetAccountResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - __annotations__ = { - "__pydantic_extra__": dict[str, Any], - } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None - - -class GetAccountResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetAccountResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetAccountResponse403ApplicationProblemPlusJson( - RootModel[ - GetAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAccountResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAccountResponse403ApplicationProblemPlusJson2 - ) - - -class GetAccountResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class GetAccountResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class GetAccountResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetAccountResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetAccountResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetAccountResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetAccountResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetAccountResponse504ApplicationProblemPlusJson( - RootModel[ - GetAccountResponse504ApplicationProblemPlusJson1 - | GetAccountResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetAccountResponse504ApplicationProblemPlusJson1 - | GetAccountResponse504ApplicationProblemPlusJson2 - ) - - -class GetAgentProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - avatarUrl: str - firstName: str - lastName: str | None - - -class GetAgentProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetAgentProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetAgentProfileResponse403ApplicationProblemPlusJson( - RootModel[ - GetAgentProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAgentProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetAgentProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAgentProfileResponse403ApplicationProblemPlusJson2 - ) - - -class GetAgentProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class GetAgentProfileResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class GetAgentProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetAgentProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetAgentProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetAgentProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetAgentProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetAgentProfileResponse504ApplicationProblemPlusJson( - RootModel[ - GetAgentProfileResponse504ApplicationProblemPlusJson1 - | GetAgentProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetAgentProfileResponse504ApplicationProblemPlusJson1 - | GetAgentProfileResponse504ApplicationProblemPlusJson2 - ) - - -class GetAttachmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - contentType: str - createdAt: str - filename: str | MISSING = MISSING - id: str - metadata: dict[str, Any] | MISSING = MISSING - projectId: str - sizeBytes: int - updatedAt: str - - -class GetAttachmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetAttachmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetAttachmentResponse403ApplicationProblemPlusJson( - RootModel[ - GetAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAttachmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetAttachmentResponse403ApplicationProblemPlusJson2 - ) - - -class GetAttachmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ATTACHMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Attachment Not Found"] - type: Literal["https://photon.codes/docs/problems/attachment-not-found"] - - -class GetAttachmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetAttachmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetAttachmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetAttachmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetAttachmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetAttachmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetAttachmentResponse504ApplicationProblemPlusJson( - RootModel[ - GetAttachmentResponse504ApplicationProblemPlusJson1 - | GetAttachmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetAttachmentResponse504ApplicationProblemPlusJson1 - | GetAttachmentResponse504ApplicationProblemPlusJson2 - ) - - -class GetBillingOperationResponse200ApplicationJson1(BaseModel): - """ - Authoritative provisioning state. Poll the operation route while pending. - """ - - model_config = ConfigDict( - extra="allow", - ) - failure: None - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: None - result: None - status: Literal["pending"] - """ - Accepted and still executing. Poll the operation route. - """ - submittedAt: str | None - - -class GetBillingOperationResponse200ApplicationJson2(BaseModel): - """ - Authoritative provisioning state. Poll the operation route while pending. - """ - - model_config = ConfigDict( - extra="allow", - ) - failure: None - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: str | None - result: Result - status: Literal["succeeded"] - """ - Terminal. The result is authoritative. - """ - submittedAt: str | None - - -class GetBillingOperationResponse200ApplicationJson3(BaseModel): - """ - Authoritative provisioning state. Poll the operation route while pending. - """ - - model_config = ConfigDict( - extra="allow", - ) - failure: Failure - kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str - operationId: str - """ - Stable handle for this provisioning action. - """ - resolvedAt: str | None - result: None - status: Literal["failed"] - """ - Terminal. Failure contains a stable code and retryability. - """ - submittedAt: str | None - - -class GetBillingOperationResponse200ApplicationJson( - RootModel[ - GetBillingOperationResponse200ApplicationJson1 - | GetBillingOperationResponse200ApplicationJson2 - | GetBillingOperationResponse200ApplicationJson3 - ] -): - root: ( - GetBillingOperationResponse200ApplicationJson1 - | GetBillingOperationResponse200ApplicationJson2 - | GetBillingOperationResponse200ApplicationJson3 - ) - """ - Authoritative provisioning state. Poll the operation route while pending. - """ - - -class GetBillingOperationResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetBillingOperationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetBillingOperationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetBillingOperationResponse403ApplicationProblemPlusJson( - RootModel[ - GetBillingOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetBillingOperationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetBillingOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetBillingOperationResponse403ApplicationProblemPlusJson2 - ) - - -class GetBillingOperationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["OPERATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Operation Not Found"] - type: Literal["https://photon.codes/docs/problems/operation-not-found"] - - -class GetBillingOperationResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class GetBillingOperationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetBillingOperationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetBillingOperationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetBillingOperationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetBillingOperationResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetBillingOperationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetBillingOperationResponse504ApplicationProblemPlusJson( - RootModel[ - GetBillingOperationResponse504ApplicationProblemPlusJson1 - | GetBillingOperationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetBillingOperationResponse504ApplicationProblemPlusJson1 - | GetBillingOperationResponse504ApplicationProblemPlusJson2 - ) - - -class Entitlement(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - featureKey: str - """ - Feature gate key, e.g. imessage_shared_lines.max_user_assignments. - """ - value: str - """ - Gate value as a string. - """ - - -class Tier(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - flatAmount: str | None - fromUnit: int - perUnitAmount: str | None - toUnit: int | None - - -class Pricing(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amount: str | None - tiers: list[Tier] - - -class FixedCharge(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - chargeModel: Literal["graduated", "standard", "volume"] | str - displayName: str - fixedChargeCode: str - payInAdvance: bool - pricing: Pricing - prorated: bool - quantity: int - - -class Subscription(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancelsAt: str | None - """ - When the subscription will end instead of renewing, ISO 8601. - """ - category: str - """ - Category slug, e.g. analytics or messaging. - """ - categoryDisplayName: str | None | MISSING = MISSING - """ - Display name for the subscription category; absent or null when unconfigured. - """ - currentPeriodEnd: str | None - """ - End of the current billing period, ISO 8601. - """ - entitlements: list[Entitlement] - """ - Feature gates granted by this category's plan. - """ - fixedCharges: list[FixedCharge] - """ - Fixed charges defined by this category's current plan. Quantity is the plan default. - """ - planCode: str - """ - This category's plan; display only. - """ - status: Literal["active", "past_due", "terminated"] | str - """ - State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - """ - - -class UsageItem(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amountCents: int - """ - Cost accrued so far. - """ - category: str - """ - Category slug, e.g. analytics or messaging. - """ - categoryDisplayName: str | None | MISSING = MISSING - """ - Display name for the subscription category; absent or null when unconfigured. - """ - currency: str - """ - ISO currency code. - """ - displayName: str - """ - Display name for this usage item. - """ - metricCode: str - """ - Metered thing, e.g. imessage_message. - """ - units: int - """ - Units consumed this period. - """ - - -class GetBillingOverviewResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - entitlementsVersion: int - """ - Bumps on every entitlement change in any category. - """ - subscriptions: list[Subscription] - """ - One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. - """ - usage: list[UsageItem] - """ - Current-period metered usage, priced. - """ - - -class GetBillingOverviewResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetBillingOverviewResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetBillingOverviewResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetBillingOverviewResponse403ApplicationProblemPlusJson( - RootModel[ - GetBillingOverviewResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetBillingOverviewResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetBillingOverviewResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetBillingOverviewResponse403ApplicationProblemPlusJson2 - ) - - -class GetBillingOverviewResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class GetBillingOverviewResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetBillingOverviewResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetBillingOverviewResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetBillingOverviewResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetBillingOverviewResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetBillingOverviewResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetBillingOverviewResponse504ApplicationProblemPlusJson( - RootModel[ - GetBillingOverviewResponse504ApplicationProblemPlusJson1 - | GetBillingOverviewResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetBillingOverviewResponse504ApplicationProblemPlusJson1 - | GetBillingOverviewResponse504ApplicationProblemPlusJson2 - ) - - -class Inbound4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection5 - - -class Configuration3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound4 | None - outbound: Outbound5 | None - - -class GetDefaultVoiceProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration3 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson( - RootModel[ - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 - ) - - -class GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson( - RootModel[ - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 - ) - - -class GetMessageMetricsBackfillResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - failedWrites: int - lastVerifiedAt: str | None - processedWrites: int - state: ( - Literal["disabled", "pending", "running", "verifying", "completed", "paused", "failed"] - | str - ) - version: str - - -class GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson( - RootModel[ - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson2 - ) - - -class GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class Capabilities(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - arrayJoin: bool - ctes: bool - joins: bool - parameters: bool - selectWithoutFrom: bool - subqueries: bool - unions: bool - - -class Limits(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - maximumParameterValueBytes: int - maximumParameters: int - maximumSqlBytes: int - maximumTotalParameterBytes: int - - -class CommonPath(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - additionalProperties: Literal[True] | MISSING = MISSING - contentTypes: list[str] | MISSING = MISSING - directions: list[Literal["addressed", "received"] | str] | MISSING = MISSING - expression: str - itemTypes: list[str] | MISSING = MISSING - path: str - required: bool - type: str - values: list[bool | int | float | str] | MISSING = MISSING - - -class Discriminators(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - path: str - values: list[str] - - -class Discriminators1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - oneOfPaths: list[str] - - -class Path(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - additionalProperties: Literal[True] | MISSING = MISSING - contentTypes: list[str] | MISSING = MISSING - directions: list[Literal["addressed", "received"] | str] | MISSING = MISSING - expression: str - itemTypes: list[str] | MISSING = MISSING - path: str - required: bool - type: str - values: list[bool | int | float | str] | MISSING = MISSING - - -class Platform(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - name: ( - Literal["email", "imessage", "sms", "telegram", "voice", "whatsapp", "whatsapp_business"] - | str - ) - paths: list[Path] - - -class Resource(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - contractsVersion: str - type: Literal["message"] - - -class Json(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - commonPaths: list[CommonPath] - discriminators: list[Discriminators | Discriminators1] - platforms: list[Platform] - resource: Resource - - -class Column(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - description: str - json_: Json | MISSING = Field(MISSING, alias="json") - name: str - type: str - - -class Table(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - columns: list[Column] - currentState: str - description: str - name: Literal["message_events"] - - -class GetMessageMetricsSqlSchemaResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - capabilities: Capabilities - dialect: str - limits: Limits - projectScoped: Literal[True] - tables: list[Table] - version: str - - -class GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson( - RootModel[ - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson2 - ) - - -class Operation(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class Resource1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - abilities: list[str] - createdAt: str - detail: dict[str, Any] - projectId: str - resourceId: str - retiredAt: str | MISSING = MISSING - state: Literal["unallocated", "active", "retired"] | str - type: str - updatedAt: str - - -class GetOperationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - operation: Operation - resource: Resource1 | MISSING = MISSING - - -class GetOperationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetOperationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetOperationResponse403ApplicationProblemPlusJson( - RootModel[ - GetOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOperationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetOperationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOperationResponse403ApplicationProblemPlusJson2 - ) - - -class GetOperationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["OPERATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Operation Not Found"] - type: Literal["https://photon.codes/docs/problems/operation-not-found"] - - -class GetOperationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetOperationResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetOperationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetOperationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetOperationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetOperationResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetOperationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetOperationResponse504ApplicationProblemPlusJson( - RootModel[ - GetOperationResponse504ApplicationProblemPlusJson1 - | GetOperationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetOperationResponse504ApplicationProblemPlusJson1 - | GetOperationResponse504ApplicationProblemPlusJson2 - ) - - -class Entitlement1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - featureKey: str - """ - Feature gate key. - """ - value: str - """ - Gate value as a string. - """ - - -class Pricing1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amount: str | None - tiers: list[Tier] - - -class FixedCharge1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - chargeModel: Literal["graduated", "standard", "volume"] | str - displayName: str - fixedChargeCode: str - payInAdvance: bool - pricing: Pricing1 - prorated: bool - quantity: int - - -class Subscription1(BaseModel): - """ - The organization-owned subscription, or null when billing was never opened or has ended. - """ - - model_config = ConfigDict( - extra="allow", - ) - cancelsAt: str | None - """ - When the subscription will end, ISO 8601. - """ - currentPeriodEnd: str | None - """ - End of the current billing period, ISO 8601. - """ - entitlements: list[Entitlement1] - fixedCharges: list[FixedCharge1] - """ - Fixed charges defined by the organization's current plan. Quantity is the plan default. - """ - planCode: str - """ - The organization's plan; display only. - """ - status: Literal["active", "past_due", "terminated"] | str - """ - State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - """ - - -class GetOrganizationBillingOverviewResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - entitlementsVersion: int - """ - Bumps on every entitlement change for the organization. - """ - subscription: Subscription1 | None - """ - The organization-owned subscription, or null when billing was never opened or has ended. - """ - - -class GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson( - RootModel[ - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson2 - ) - - -class GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson( - RootModel[ - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson1 - | GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson1 - | GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson2 - ) - - -class Membership(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - errorCode: str | None - retryAt: str | None - status: Literal["pending", "syncing", "ready", "error", "blocked"] | str - - -class Organization(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - errorCode: str | None - status: Literal["pending", "syncing", "ready", "error", "blocked"] | str - - -class GetOrganizationConnectionStatusResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - membership: Membership - organization: Organization - organizationId: str - synchronized: bool - - -class GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_CONNECTION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization Connection Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-connection-not-found"] - - -class GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SYNC_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization Synchronization Unavailable"] - type: Literal["https://photon.codes/docs/problems/organization-sync-unavailable"] - - -class GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson( - RootModel[ - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson1 - | GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson1 - | GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson2 - ) - - -class PaymentMethod(BaseModel): - """ - Metadata for the default card, or null. - """ - - model_config = ConfigDict( - extra="allow", - ) - brand: str | None - """ - Card network brand, e.g. visa. - """ - expiresMonth: int | None - """ - Card expiration month. - """ - expiresYear: int | None - """ - Four-digit card expiration year. - """ - last4: str | None - """ - Last four card digits. - """ - - -class GetOrganizationPaymentMethodResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cardOnFile: bool - """ - True once a card is captured for the payer. - """ - paymentMethod: PaymentMethod | None - """ - Metadata for the default card, or null. - """ - - -class GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson( - RootModel[ - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson2 - ) - - -class GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson( - RootModel[ - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson1 - | GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson1 - | GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson2 - ) - - -class Domain(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - domain: str - state: Literal["verified", "pending", "failed"] | str - - -class GetOrganizationSsoConfigurationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - connectionChangedAt: str | None - connectionGeneration: str - connectionState: Literal["not_configured", "configuring", "ready", "error"] | str - connectionType: str | MISSING = MISSING - desiredSsoEnforced: bool - domains: list[Domain] | MISSING = MISSING - organizationId: str - policySyncStatus: Literal["synced", "manual_required"] | str - providerAvailable: bool | MISSING = MISSING - ssoEnforced: bool - ssoJitEnabled: bool - version: str - - -class GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] - - -class GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson( - RootModel[ - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson1 - | GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson1 - | GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson2 - ) - - -class GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] - - -class GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] - - -class GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] - - -class GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson( - RootModel[ - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson1 - | GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson1 - | GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson2 - ) - - -class Domain1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - blockers: list[str] - domain: Literal["projects", "billing", "platforms", "call_registry"] | str - ready: bool - - -class GetProjectClosureStatusResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - deletionOperationId: str | None - domains: list[Domain1] - organizationId: str - projectId: str - ready: bool - - -class GetProjectClosureStatusResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetProjectClosureStatusResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetProjectClosureStatusResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetProjectClosureStatusResponse403ApplicationProblemPlusJson( - RootModel[ - GetProjectClosureStatusResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectClosureStatusResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectClosureStatusResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectClosureStatusResponse403ApplicationProblemPlusJson2 - ) - - -class GetProjectClosureStatusResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class GetProjectClosureStatusResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetProjectClosureStatusResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetProjectClosureStatusResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetProjectClosureStatusResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetProjectClosureStatusResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetProjectClosureStatusResponse504ApplicationProblemPlusJson( - RootModel[ - GetProjectClosureStatusResponse504ApplicationProblemPlusJson1 - | GetProjectClosureStatusResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectClosureStatusResponse504ApplicationProblemPlusJson1 - | GetProjectClosureStatusResponse504ApplicationProblemPlusJson2 - ) - - -class GetProjectImessagePlatformResponse200ApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - maxUserAssignments: int - mode: Literal["shared"] - - -class GetProjectImessagePlatformResponse200ApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - mode: Literal["dedicated"] - - -class GetProjectImessagePlatformResponse200ApplicationJson( - RootModel[ - GetProjectImessagePlatformResponse200ApplicationJson1 - | GetProjectImessagePlatformResponse200ApplicationJson2 - ] -): - root: ( - GetProjectImessagePlatformResponse200ApplicationJson1 - | GetProjectImessagePlatformResponse200ApplicationJson2 - ) - - -class GetProjectImessagePlatformResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetProjectImessagePlatformResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetProjectImessagePlatformResponse403ApplicationProblemPlusJson( - RootModel[ - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectImessagePlatformResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectImessagePlatformResponse403ApplicationProblemPlusJson2 - ) - - -class GetProjectImessagePlatformResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetProjectImessagePlatformResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetProjectImessagePlatformResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetProjectImessagePlatformResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class GetProjectImessagePlatformResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetProjectImessagePlatformResponse503ApplicationProblemPlusJson( - RootModel[ - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson1 - | GetProjectImessagePlatformResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson1 - | GetProjectImessagePlatformResponse503ApplicationProblemPlusJson2 - ) - - -class GetProjectImessagePlatformResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetProjectImessagePlatformResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetProjectImessagePlatformResponse504ApplicationProblemPlusJson( - RootModel[ - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson1 - | GetProjectImessagePlatformResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson1 - | GetProjectImessagePlatformResponse504ApplicationProblemPlusJson2 - ) - - -class GetProjectResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - agentProfile: AgentProfile - billingInitialization: ( - Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING - ) = MISSING - createdAt: str - createdByAccountId: str | None - createdByActorId: str | None - createdByActorKind: Literal["account", "service_identity"] | str | None - deletedAt: str | None - name: str - organizationId: str - projectId: str - slug: str - updatedAt: str - - -class GetProjectResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetProjectResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetProjectResponse403ApplicationProblemPlusJson( - RootModel[ - GetProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectResponse403ApplicationProblemPlusJson2 - ) - - -class GetProjectResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class GetProjectResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class GetProjectResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetProjectResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetProjectResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetProjectResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetProjectResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetProjectResponse504ApplicationProblemPlusJson( - RootModel[ - GetProjectResponse504ApplicationProblemPlusJson1 - | GetProjectResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectResponse504ApplicationProblemPlusJson1 - | GetProjectResponse504ApplicationProblemPlusJson2 - ) - - -class GetProjectWhatsappPlatformResponse200ApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - maxUserAssignments: int - mode: Literal["shared"] - - -class GetProjectWhatsappPlatformResponse200ApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - mode: Literal["dedicated"] - - -class GetProjectWhatsappPlatformResponse200ApplicationJson( - RootModel[ - GetProjectWhatsappPlatformResponse200ApplicationJson1 - | GetProjectWhatsappPlatformResponse200ApplicationJson2 - ] -): - root: ( - GetProjectWhatsappPlatformResponse200ApplicationJson1 - | GetProjectWhatsappPlatformResponse200ApplicationJson2 - ) - - -class GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson( - RootModel[ - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson2 - ) - - -class GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson( - RootModel[ - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson1 - | GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson1 - | GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson2 - ) - - -class GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson( - RootModel[ - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson1 - | GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson1 - | GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson2 - ) - - -class GetResourceResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - abilities: list[str] - createdAt: str - detail: dict[str, Any] - projectId: str - resourceId: str - retiredAt: str | MISSING = MISSING - state: Literal["unallocated", "active", "retired"] | str - type: str - updatedAt: str - - -class GetResourceResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetResourceResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetResourceResponse403ApplicationProblemPlusJson( - RootModel[ - GetResourceResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetResourceResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetResourceResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetResourceResponse403ApplicationProblemPlusJson2 - ) - - -class GetResourceResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class GetResourceResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetResourceResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetResourceResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetResourceResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetResourceResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetResourceResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetResourceResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetResourceResponse504ApplicationProblemPlusJson( - RootModel[ - GetResourceResponse504ApplicationProblemPlusJson1 - | GetResourceResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetResourceResponse504ApplicationProblemPlusJson1 - | GetResourceResponse504ApplicationProblemPlusJson2 - ) - - -class GetSharedLineAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class GetSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class GetSharedLineAssignmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Assignment Not Found"] - type: Literal["https://photon.codes/docs/problems/assignment-not-found"] - - -class GetSharedLineAssignmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetSharedLineAssignmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | GetSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | GetSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class Campaign(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - id: str - organizationId: str - - -class GetSmsLineCampaignAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - campaign: Campaign | None - campaignObservedAt: str | None - eligibility: Literal["eligible", "blocked", "unknown"] | str - observedAt: str | None - operationId: str | None - providerAssignmentStatus: str | None - reasonCode: str | None - requestedCampaignId: str | None - resourceId: str - version: int - - -class GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_INVALID_REQUEST"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid SMS campaign request"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-invalid-request"] - - -class GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_ORGANIZATION_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Campaign belongs to another organization"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-organization-mismatch"] - - -class GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson2 - | GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson3 - ] -): - root: ( - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson2 - | GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson3 - ) - - -class GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Campaign not found"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-found"] - - -class GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_LINE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["SMS line not found"] - type: Literal["https://photon.codes/docs/problems/sms-line-not-found"] - - -class GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson( - RootModel[ - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson2 - ) - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_LINE_UNSUPPORTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["SMS line unsupported"] - type: Literal["https://photon.codes/docs/problems/sms-line-unsupported"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_NOT_READY"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign not ready"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-ready"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment version conflict"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-version-conflict"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_MUTATION_IN_PROGRESS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment mutation in progress"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-mutation-in-progress"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_CAPACITY_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign number capacity exhausted"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-capacity-exceeded"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_RECONCILIATION_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign reconciliation required"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-reconciliation-required"] - - -class GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson( - RootModel[ - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson2 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson3 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson4 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson5 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson6 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson7 - ] -): - root: ( - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson2 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson3 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson4 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson5 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson6 - | GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson7 - ) - - -class GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["SMS_CAMPAIGN_CONTEXT_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Campaign context unavailable"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-context-unavailable"] - - -class GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson( - RootModel[ - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson2 - ) - - -class GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson1 - | GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class GetVoiceLineProfileAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - profileId: str | MISSING = MISSING - profileVersion: int | MISSING = MISSING - projectId: str - resourceId: str - resourceVersion: int - updatedAt: str - - -class GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson1 - | GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson1 - | GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class Inbound5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection6 - - -class Configuration4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound5 | None - outbound: Outbound6 | None - - -class GetVoiceProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration4 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class GetVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetVoiceProfileResponse403ApplicationProblemPlusJson( - RootModel[ - GetVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetVoiceProfileResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetVoiceProfileResponse403ApplicationProblemPlusJson2 - ) - - -class GetVoiceProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class GetVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetVoiceProfileResponse504ApplicationProblemPlusJson( - RootModel[ - GetVoiceProfileResponse504ApplicationProblemPlusJson1 - | GetVoiceProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetVoiceProfileResponse504ApplicationProblemPlusJson1 - | GetVoiceProfileResponse504ApplicationProblemPlusJson2 - ) - - -class GetWebhookDestinationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - createdAt: str - deletedAt: str | None - description: str | None - destinationId: str - enabledEvents: PrefixItems[Literal["*"]] | list[str] - name: str - projectId: str - status: Literal["enabled", "disabled"] | str - updatedAt: str - url: str - - -class GetWebhookDestinationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWebhookDestinationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWebhookDestinationResponse403ApplicationProblemPlusJson( - RootModel[ - GetWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWebhookDestinationResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWebhookDestinationResponse403ApplicationProblemPlusJson2 - ) - - -class GetWebhookDestinationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Webhook Destination Not Found"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-not-found"] - - -class GetWebhookDestinationResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Webhook Destination Deleted"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-deleted"] - - -class GetWebhookDestinationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetWebhookDestinationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetWebhookDestinationResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetWebhookEventSchemaResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class GetWebhookEventSchemaResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWebhookEventSchemaResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWebhookEventSchemaResponse403ApplicationProblemPlusJson( - RootModel[ - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWebhookEventSchemaResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWebhookEventSchemaResponse403ApplicationProblemPlusJson2 - ) - - -class GetWebhookEventSchemaResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetWebhookEventSchemaResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetWebhookEventSchemaResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class Alert(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - description: str - entityId: str - entityType: str - observedAt: str - severity: str - status: str - type: str - - -class Restriction(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - observedAt: str - status: Literal["FLAGGED", "DISABLED", "REINSTATED", "UNKNOWN"] | str - - -class GetWhatsappBusinessAccountResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - accountName: str | None - alerts: list[Alert] - businessId: str - businessName: str | None - connectedAt: str - maxPhoneNumbersPerBusiness: int | MISSING = MISSING - outboundCapacity: ( - Literal["50", "250", "1000", "2000", "10000", "100000", "UNLIMITED", "UNTIERED", "UNKNOWN"] - | str - ) - restriction: Restriction | None - reviewStatus: Literal["PENDING", "APPROVED", "REJECTED", "UNKNOWN"] | str - senderCount: int - subscribedAt: str | MISSING = MISSING - wabaId: str - - -class GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson2 - ) - - -class GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_WABA_NOT_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp Business Account Not Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-waba-not-connected"] - - -class GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1 - | GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson1 - | GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson2 - ) - - -class GetWhatsappBusinessVerificationCodeResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: str - receivedAt: str - - -class GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson2 - ) - - -class GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_VERIFICATION_CODE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp Verification Code Not Found"] - type: Literal["https://photon.codes/docs/problems/whatsapp-verification-code-not-found"] - - -class GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson2 - ) - - -class GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_VERIFICATION_WINDOW_EXPIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["WhatsApp Verification Window Expired"] - type: Literal["https://photon.codes/docs/problems/whatsapp-verification-window-expired"] - - -class GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson2 - ) - - -class GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson( - RootModel[ - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson1 - | GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson2 - ) - - -class GetWhatsappSharedLineAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Assignment Not Found"] - type: Literal["https://photon.codes/docs/problems/assignment-not-found"] - - -class GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class GetWhatsappSignupConfigResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configId: str - graphVersion: str - scopes: list[str] - - -class GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson( - RootModel[ - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson2 - ) - - -class GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListAccountServiceKeysResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - serviceKeys: list[ServiceKey] - - -class ListAccountServiceKeysResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListAccountServiceKeysResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListAccountServiceKeysResponse403ApplicationProblemPlusJson( - RootModel[ - ListAccountServiceKeysResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListAccountServiceKeysResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListAccountServiceKeysResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListAccountServiceKeysResponse403ApplicationProblemPlusJson2 - ) - - -class ListAccountServiceKeysResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class ListAccountServiceKeysResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class ListAccountServiceKeysResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListAccountServiceKeysResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListAccountServiceKeysResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListAccountServiceKeysResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListAccountServiceKeysResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListAccountServiceKeysResponse504ApplicationProblemPlusJson( - RootModel[ - ListAccountServiceKeysResponse504ApplicationProblemPlusJson1 - | ListAccountServiceKeysResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListAccountServiceKeysResponse504ApplicationProblemPlusJson1 - | ListAccountServiceKeysResponse504ApplicationProblemPlusJson2 - ) - - -class Item(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - contentType: str - createdAt: str - filename: str | MISSING = MISSING - id: str - metadata: dict[str, Any] | MISSING = MISSING - projectId: str - sizeBytes: int - updatedAt: str - - -class ListAttachmentsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - items: list[Item] - nextPageToken: str | MISSING = MISSING - """ - Continue with this token, even if items is empty. Omitted when no more pages remain. - """ - - -class ListAttachmentsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListAttachmentsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListAttachmentsResponse403ApplicationProblemPlusJson( - RootModel[ - ListAttachmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListAttachmentsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListAttachmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListAttachmentsResponse403ApplicationProblemPlusJson2 - ) - - -class ListAttachmentsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListAttachmentsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListAttachmentsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListAttachmentsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListAttachmentsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListAttachmentsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListAttachmentsResponse504ApplicationProblemPlusJson( - RootModel[ - ListAttachmentsResponse504ApplicationProblemPlusJson1 - | ListAttachmentsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListAttachmentsResponse504ApplicationProblemPlusJson1 - | ListAttachmentsResponse504ApplicationProblemPlusJson2 - ) - - -class RedirectUri(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - default: bool - """ - Whether this is the application's default redirect URI. - """ - uri: str - """ - Registered OAuth callback URL for the application. - """ - - -class Application(BaseModel): - """ - The OAuth application authorized by the authenticated user. - """ - - model_config = ConfigDict( - extra="allow", - ) - applicationType: str - """ - OAuth application type reported by the authorization server. - """ - clientId: str - """ - OAuth client identifier used by the application in authorization requests. - """ - createdAt: str - """ - UTC timestamp when the application was created, in RFC 3339 format. - """ - description: str | None - """ - Application description, or null when no description is set. - """ - id: str - """ - Application identifier to pass as applicationId when revoking this application's grant. - """ - isFirstParty: bool - """ - Whether the application is classified as first-party by the authorization server. - """ - name: str - """ - Display name of the authorized application. - """ - redirectUris: list[RedirectUri] - """ - Registered OAuth callback URLs for the application. - """ - scopes: list[str] - """ - OAuth scope slugs configured for the application; grantedScopes records what the user authorized. - """ - updatedAt: str - """ - UTC timestamp when the application was last updated, in RFC 3339 format. - """ - usesPkce: bool - """ - Whether the application uses Proof Key for Code Exchange (PKCE). - """ - - -class AuthorizedApplication(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - application: Application - """ - The OAuth application authorized by the authenticated user. - """ - authorizationId: str - """ - Identifier of the user's authorization grant for this application. - """ - grantedScopes: list[str] - """ - OAuth scope slugs the user has granted to this application. - """ - oauthResource: str | None - """ - OAuth resource associated with the grant, or null when no resource is specified. - """ - - -class ListMetadata(BaseModel): - """ - Pagination cursors to pass as after or before in the next list request. - """ - - model_config = ConfigDict( - extra="allow", - ) - after: str | None - """ - Cursor for the next page, or null when there is no next page. - """ - before: str | None - """ - Cursor for the previous page, or null when there is no previous page. - """ - - -class ListAuthorizedApplicationsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authorizedApplications: list[AuthorizedApplication] - """ - One page of applications authorized by the authenticated user. - """ - listMetadata: ListMetadata - """ - Pagination cursors to pass as after or before in the next list request. - """ - - -class ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson( - RootModel[ - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson1 - | ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson1 - | ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson2 - ) - - -class Entitlement2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - featureKey: str - value: str - - -class Pricing2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amount: str | None - tiers: list[Tier] - - -class FixedCharge2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - chargeModel: Literal["graduated", "standard", "volume"] | str - displayName: str - fixedChargeCode: str - payInAdvance: bool - pricing: Pricing2 - prorated: bool - quantity: int - - -class Tier3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - flatAmount: str | None - fromUnit: int - perUnitAmount: str | None - rate: str | None - toUnit: int | None - - -class Pricing3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amount: str | None - fixedAmount: str | None - freeUnits: int | None - freeUnitsPerEvents: int | None - freeUnitsPerTotalAggregation: str | None - packageSize: int | None - perTransactionMaxAmount: str | None - perTransactionMinAmount: str | None - pricingGroupKeys: list[str] - rate: str | None - tiers: list[Tier3] - - -class Value(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - key: str - values: list[str] - - -class Filter(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - displayName: str | None - pricing: Pricing3 - values: list[Value] - - -class Pricing4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - amount: str | None - fixedAmount: str | None - freeUnits: int | None - freeUnitsPerEvents: int | None - freeUnitsPerTotalAggregation: str | None - packageSize: int | None - perTransactionMaxAmount: str | None - perTransactionMinAmount: str | None - pricingGroupKeys: list[str] - rate: str | None - tiers: list[Tier3] - - -class UsageCharge(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - chargeCode: str | None - chargeModel: ( - Literal[ - "dynamic", - "graduated", - "graduated_percentage", - "package", - "percentage", - "standard", - "volume", - ] - | str - ) - displayName: str | None - filters: list[Filter] - invoiceable: bool - metricCode: str - minimumAmountCents: int - payInAdvance: bool - pricing: Pricing4 - prorated: bool - - -class Plan(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - baseAmountCents: int - """ - Recurring base price in whole cents. - """ - categoryDisplayName: str | None | MISSING = MISSING - """ - Display name for the subscription category; absent or null when unconfigured. - """ - currency: str - """ - ISO currency code. - """ - description: str | None - entitlements: list[Entitlement2] - fixedCharges: list[FixedCharge2] - interval: Literal["weekly", "monthly", "quarterly", "semiannual", "yearly"] | str - name: str - payInAdvance: bool - planCode: str - usageCharges: list[UsageCharge] - - -class ListBillingPlansResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - plans: dict[str, list[Plan]] - """ - Plans grouped by valid metadata type and explicitly published with visible="true". - """ - - -class ListBillingPlansResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListBillingPlansResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListBillingPlansResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListBillingPlansResponse403ApplicationProblemPlusJson( - RootModel[ - ListBillingPlansResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListBillingPlansResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListBillingPlansResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListBillingPlansResponse403ApplicationProblemPlusJson2 - ) - - -class ListBillingPlansResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class ListBillingPlansResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListBillingPlansResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListBillingPlansResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListBillingPlansResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListBillingPlansResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListBillingPlansResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListBillingPlansResponse504ApplicationProblemPlusJson( - RootModel[ - ListBillingPlansResponse504ApplicationProblemPlusJson1 - | ListBillingPlansResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListBillingPlansResponse504ApplicationProblemPlusJson1 - | ListBillingPlansResponse504ApplicationProblemPlusJson2 - ) - - -class Subjects(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - projectId: str - type: Literal["project"] - - -class Subjects1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - organizationId: str - type: Literal["organization"] - - -class Invoice(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - currency: str - """ - ISO currency code. - """ - invoiceId: str - """ - Invoice id. - """ - issuedAt: str | None - """ - Issue date, ISO 8601. - """ - kind: Literal["subscription", "one_off", "credit"] | str - """ - What produced the invoice. - """ - number: str - """ - Human invoice number. - """ - paymentStatus: Literal["pending", "succeeded", "failed"] | str - """ - Provider-neutral payment status. - """ - pdfUrl: str | None - """ - Downloadable PDF link. - """ - subjects: list[Subjects | Subjects1] - """ - Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. - """ - totalCents: int - """ - Invoice total in cents. - """ - - -class ListInvoicesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - invoices: list[Invoice] - - -class ListInvoicesResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListInvoicesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListInvoicesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListInvoicesResponse403ApplicationProblemPlusJson( - RootModel[ - ListInvoicesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListInvoicesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListInvoicesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListInvoicesResponse403ApplicationProblemPlusJson2 - ) - - -class ListInvoicesResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class ListInvoicesResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListInvoicesResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListInvoicesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListInvoicesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListInvoicesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListInvoicesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListInvoicesResponse504ApplicationProblemPlusJson( - RootModel[ - ListInvoicesResponse504ApplicationProblemPlusJson1 - | ListInvoicesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListInvoicesResponse504ApplicationProblemPlusJson1 - | ListInvoicesResponse504ApplicationProblemPlusJson2 - ) - - -class ListNumberAreaCodesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - areaCodes: list[str] - countryCode: Literal["US"] - - -class ListNumberAreaCodesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListNumberAreaCodesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListNumberAreaCodesResponse403ApplicationProblemPlusJson( - RootModel[ - ListNumberAreaCodesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListNumberAreaCodesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListNumberAreaCodesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListNumberAreaCodesResponse403ApplicationProblemPlusJson2 - ) - - -class ListNumberAreaCodesResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListNumberAreaCodesResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListNumberAreaCodesResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListNumberAreaCodesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListNumberAreaCodesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListNumberAreaCodesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListNumberAreaCodesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListNumberAreaCodesResponse504ApplicationProblemPlusJson( - RootModel[ - ListNumberAreaCodesResponse504ApplicationProblemPlusJson1 - | ListNumberAreaCodesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListNumberAreaCodesResponse504ApplicationProblemPlusJson1 - | ListNumberAreaCodesResponse504ApplicationProblemPlusJson2 - ) - - -class Country(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - callingCode: str - countryCode: str - displayName: str - - -class ListNumberCountriesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - countries: list[Country] - - -class ListNumberCountriesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListNumberCountriesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListNumberCountriesResponse403ApplicationProblemPlusJson( - RootModel[ - ListNumberCountriesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListNumberCountriesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListNumberCountriesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListNumberCountriesResponse403ApplicationProblemPlusJson2 - ) - - -class ListNumberCountriesResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListNumberCountriesResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListNumberCountriesResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListNumberCountriesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListNumberCountriesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListNumberCountriesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListNumberCountriesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListNumberCountriesResponse504ApplicationProblemPlusJson( - RootModel[ - ListNumberCountriesResponse504ApplicationProblemPlusJson1 - | ListNumberCountriesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListNumberCountriesResponse504ApplicationProblemPlusJson1 - | ListNumberCountriesResponse504ApplicationProblemPlusJson2 - ) - - -class ListOauthScopesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - scopes: list[str] - """ - Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. - """ - - -class ListOauthScopesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListOauthScopesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListOauthScopesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListOauthScopesResponse504ApplicationProblemPlusJson( - RootModel[ - ListOauthScopesResponse504ApplicationProblemPlusJson1 - | ListOauthScopesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListOauthScopesResponse504ApplicationProblemPlusJson1 - | ListOauthScopesResponse504ApplicationProblemPlusJson2 - ) - - -class Operation1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ListOperationsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - nextPageToken: str | MISSING = MISSING - operations: list[Operation1] - - -class ListOperationsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListOperationsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListOperationsResponse403ApplicationProblemPlusJson( - RootModel[ - ListOperationsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListOperationsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListOperationsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListOperationsResponse403ApplicationProblemPlusJson2 - ) - - -class ListOperationsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListOperationsResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListOperationsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListOperationsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListOperationsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListOperationsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListOperationsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListOperationsResponse504ApplicationProblemPlusJson( - RootModel[ - ListOperationsResponse504ApplicationProblemPlusJson1 - | ListOperationsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListOperationsResponse504ApplicationProblemPlusJson1 - | ListOperationsResponse504ApplicationProblemPlusJson2 - ) - - -class ListProjectApiKeysResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiKeys: list[ApiKey] - - -class ListProjectApiKeysResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListProjectApiKeysResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListProjectApiKeysResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListProjectApiKeysResponse403ApplicationProblemPlusJson( - RootModel[ - ListProjectApiKeysResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectApiKeysResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListProjectApiKeysResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectApiKeysResponse403ApplicationProblemPlusJson2 - ) - - -class ListProjectApiKeysResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class ListProjectApiKeysResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class ListProjectApiKeysResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListProjectApiKeysResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListProjectApiKeysResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class Platform1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - description: str - displayName: str - type: str - - -class ListProjectPlatformsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - platforms: list[Platform1] - - -class ListProjectPlatformsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListProjectPlatformsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListProjectPlatformsResponse403ApplicationProblemPlusJson( - RootModel[ - ListProjectPlatformsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectPlatformsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListProjectPlatformsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectPlatformsResponse403ApplicationProblemPlusJson2 - ) - - -class ListProjectPlatformsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListProjectPlatformsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListProjectPlatformsResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class Project(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - agentProfile: AgentProfile - billingInitialization: ( - Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING - ) = MISSING - createdAt: str - createdByAccountId: str | None - createdByActorId: str | None - createdByActorKind: Literal["account", "service_identity"] | str | None - deletedAt: str | None - name: str - organizationId: str - projectId: str - slug: str - updatedAt: str - - -class ListProjectsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - nextPageToken: str | MISSING = MISSING - projects: list[Project] - - -class ListProjectsResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListProjectsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListProjectsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListProjectsResponse403ApplicationProblemPlusJson( - RootModel[ - ListProjectsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListProjectsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListProjectsResponse403ApplicationProblemPlusJson2 - ) - - -class ListProjectsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListProjectsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListProjectsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListProjectsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListProjectsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListProjectsResponse504ApplicationProblemPlusJson( - RootModel[ - ListProjectsResponse504ApplicationProblemPlusJson1 - | ListProjectsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListProjectsResponse504ApplicationProblemPlusJson1 - | ListProjectsResponse504ApplicationProblemPlusJson2 - ) - - -class ListResourcesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - nextPageToken: str | MISSING = MISSING - resources: list[Resource1] - - -class ListResourcesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListResourcesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListResourcesResponse403ApplicationProblemPlusJson( - RootModel[ - ListResourcesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListResourcesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListResourcesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListResourcesResponse403ApplicationProblemPlusJson2 - ) - - -class ListResourcesResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListResourcesResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListResourcesResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListResourcesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListResourcesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListResourcesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListResourcesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListResourcesResponse504ApplicationProblemPlusJson( - RootModel[ - ListResourcesResponse504ApplicationProblemPlusJson1 - | ListResourcesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListResourcesResponse504ApplicationProblemPlusJson1 - | ListResourcesResponse504ApplicationProblemPlusJson2 - ) - - -class Assignment1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class ListSharedLineAssignmentsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignments: list[Assignment1] - nextPageToken: str | MISSING = MISSING - - -class ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson( - RootModel[ - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson2 - ) - - -class ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson( - RootModel[ - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson1 - | ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson1 - | ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson2 - ) - - -class Inbound6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials | None - destinationUri: str - - -class Connection7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str - - -class Outbound7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection7 - - -class Configuration5(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound6 | None - outbound: Outbound7 | None - - -class Profile(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - configuration: Configuration5 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int - - -class ListVoiceProfilesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - nextPageToken: str | MISSING = MISSING - profiles: list[Profile] - - -class ListVoiceProfilesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListVoiceProfilesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListVoiceProfilesResponse403ApplicationProblemPlusJson( - RootModel[ - ListVoiceProfilesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListVoiceProfilesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListVoiceProfilesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListVoiceProfilesResponse403ApplicationProblemPlusJson2 - ) - - -class ListVoiceProfilesResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListVoiceProfilesResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListVoiceProfilesResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListVoiceProfilesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListVoiceProfilesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListVoiceProfilesResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListVoiceProfilesResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListVoiceProfilesResponse504ApplicationProblemPlusJson( - RootModel[ - ListVoiceProfilesResponse504ApplicationProblemPlusJson1 - | ListVoiceProfilesResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListVoiceProfilesResponse504ApplicationProblemPlusJson1 - | ListVoiceProfilesResponse504ApplicationProblemPlusJson2 - ) - - -class Retirement(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - migrationGuide: str - reason: str - - -class ApiVersions(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - retirement: Retirement | None - selectable: Literal[True] - status: Literal["preview", "latest", "maintain"] | str - successor: str | None - version: str - - -class ApiVersions1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - retirement: Retirement - selectable: Literal[False] - status: Literal["deprecated"] - successor: str | None - version: str - - -class ListWebhookApiVersionsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersions: list[ApiVersions | ApiVersions1] - contractNamespace: Literal["@photon-hq/contracts"] - packageVersion: str - - -class ListWebhookApiVersionsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWebhookApiVersionsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWebhookApiVersionsResponse403ApplicationProblemPlusJson( - RootModel[ - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookApiVersionsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookApiVersionsResponse403ApplicationProblemPlusJson2 - ) - - -class ListWebhookApiVersionsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListWebhookApiVersionsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListWebhookApiVersionsResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListWebhookDestinationsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - destinations: list[Destination] - nextPageToken: str | MISSING = MISSING - - -class ListWebhookDestinationsResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListWebhookDestinationsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWebhookDestinationsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWebhookDestinationsResponse403ApplicationProblemPlusJson( - RootModel[ - ListWebhookDestinationsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookDestinationsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWebhookDestinationsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookDestinationsResponse403ApplicationProblemPlusJson2 - ) - - -class ListWebhookDestinationsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListWebhookDestinationsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListWebhookDestinationsResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListWebhookEgressAddressesResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - ipAddresses: list[str] - """ - Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. - """ - - -class ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson( - RootModel[ - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson2 - ) - - -class Event(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - audience: Literal["agent", "infrastructure"] | str - description: str - schemaProfile: Literal["reader"] - schemaUrl: str - type: str - - -class ListWebhookEventTypesResponse200ApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - contractNamespace: Literal["@photon-hq/contracts"] - events: list[Event] - packageVersion: str - retirement: Retirement | None - selectable: Literal[True] - status: Literal["preview", "latest", "maintain"] | str - successor: str | None - - -class ListWebhookEventTypesResponse200ApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - contractNamespace: Literal["@photon-hq/contracts"] - events: list[Event] - packageVersion: str - retirement: Retirement - selectable: Literal[False] - status: Literal["deprecated"] - successor: str | None - - -class ListWebhookEventTypesResponse200ApplicationJson( - RootModel[ - ListWebhookEventTypesResponse200ApplicationJson1 - | ListWebhookEventTypesResponse200ApplicationJson2 - ] -): - root: ( - ListWebhookEventTypesResponse200ApplicationJson1 - | ListWebhookEventTypesResponse200ApplicationJson2 - ) - - -class ListWebhookEventTypesResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ListWebhookEventTypesResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWebhookEventTypesResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWebhookEventTypesResponse403ApplicationProblemPlusJson( - RootModel[ - ListWebhookEventTypesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookEventTypesResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWebhookEventTypesResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWebhookEventTypesResponse403ApplicationProblemPlusJson2 - ) - - -class ListWebhookEventTypesResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListWebhookEventTypesResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListWebhookEventTypesResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class PhoneNumber(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - displayName: str | None - ownership: Literal["photon", "meta"] | str - phoneNumber: str - phoneNumberId: str - - -class ListWhatsappAccountPhoneNumbersResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - phoneNumbers: list[PhoneNumber] - wabaId: str - - -class ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson( - RootModel[ - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson2 - ) - - -class ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_WABA_NOT_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["WhatsApp Business Account Not Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-waba-not-connected"] - - -class ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson( - RootModel[ - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson1 - | ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson1 - | ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson2 - ) - - -class ListWhatsappSharedLineAssignmentsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignments: list[Assignment1] - nextPageToken: str | MISSING = MISSING - - -class ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson( - RootModel[ - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson2 - ) - - -class ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson( - RootModel[ - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson1 - | ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson1 - | ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson2 - ) - - -class PhotonProblemFORBIDDEN403(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class PhotonProblemINTERNALERROR500(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INTERNAL_ERROR"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Internal Server Error"] - type: Literal["https://photon.codes/docs/problems/internal-error"] - - -class PhotonProblemNOTAUTHENTICATED401(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["NOT_AUTHENTICATED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[401] - title: Literal["Not Authenticated"] - type: Literal["https://photon.codes/docs/problems/not-authenticated"] - - -class PhotonProblemUPSTREAMUNAVAILABLE503(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ProvisionImessageDedicatedLineResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson( - RootModel[ - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson2 - ) - - -class ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson( - RootModel[ - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson2 - ) - - -class ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson( - RootModel[ - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson2 - ) - - -class ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson1 - ) - - -class ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson( - RootModel[ - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson2 - ) - - -class ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson( - RootModel[ - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson1 - | ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson2 - ) - - -class ProvisionWhatsappDedicatedLineResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson( - RootModel[ - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson2 - ) - - -class ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson( - RootModel[ - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2 - ) - - -class ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson( - RootModel[ - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson2 - ) - - -class ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1 - ) - - -class ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson( - RootModel[ - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson2 - ) - - -class ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson( - RootModel[ - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1 - | ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2 - ) - - -class PurchaseSmsNumberRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - areaCode: str | MISSING = MISSING - countryCode: Literal["US"] - - -class PurchaseSmsNumberResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class PurchaseSmsNumberResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class PurchaseSmsNumberResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class PurchaseSmsNumberResponse400ApplicationProblemPlusJson( - RootModel[ - PurchaseSmsNumberResponse400ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - PurchaseSmsNumberResponse400ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse400ApplicationProblemPlusJson2 - ) - - -class PurchaseSmsNumberResponse402ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ENTITLEMENT_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[402] - title: Literal["Entitlement Required"] - type: Literal["https://photon.codes/docs/problems/entitlement-required"] - - -class PurchaseSmsNumberResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class PurchaseSmsNumberResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class PurchaseSmsNumberResponse403ApplicationProblemPlusJson( - RootModel[ - PurchaseSmsNumberResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | PurchaseSmsNumberResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - PurchaseSmsNumberResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | PurchaseSmsNumberResponse403ApplicationProblemPlusJson2 - ) - - -class PurchaseSmsNumberResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class PurchaseSmsNumberResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class PurchaseSmsNumberResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class PurchaseSmsNumberResponse422ApplicationProblemPlusJson( - RootModel[ - PurchaseSmsNumberResponse422ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - PurchaseSmsNumberResponse422ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse422ApplicationProblemPlusJson2 - ) - - -class PurchaseSmsNumberResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class PurchaseSmsNumberResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class PurchaseSmsNumberResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | PurchaseSmsNumberResponse500ApplicationProblemPlusJson1 - ] -): - root: PhotonProblemINTERNALERROR500 | PurchaseSmsNumberResponse500ApplicationProblemPlusJson1 - - -class PurchaseSmsNumberResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class PurchaseSmsNumberResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["BILLING_NOT_PROVISIONED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Billing Not Provisioned"] - type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] - - -class PurchaseSmsNumberResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class PurchaseSmsNumberResponse503ApplicationProblemPlusJson( - RootModel[ - PurchaseSmsNumberResponse503ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - PurchaseSmsNumberResponse503ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse503ApplicationProblemPlusJson2 - ) - - -class PurchaseSmsNumberResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class PurchaseSmsNumberResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class PurchaseSmsNumberResponse504ApplicationProblemPlusJson( - RootModel[ - PurchaseSmsNumberResponse504ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - PurchaseSmsNumberResponse504ApplicationProblemPlusJson1 - | PurchaseSmsNumberResponse504ApplicationProblemPlusJson2 - ) - - -class Column1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - name: str - type: str - - -class Statistics(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - bytesRead: float - elapsedSeconds: float - rowsRead: float - - -class QueryMessageMetricsResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - columns: list[Column1] - rows: list[list[Any]] - statistics: Statistics - - -class QueryMessageMetricsResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class QueryMessageMetricsResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class QueryMessageMetricsResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class QueryMessageMetricsResponse403ApplicationProblemPlusJson( - RootModel[ - QueryMessageMetricsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | QueryMessageMetricsResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - QueryMessageMetricsResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | QueryMessageMetricsResponse403ApplicationProblemPlusJson2 - ) - - -class QueryMessageMetricsResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["QUERY_RESOURCE_LIMIT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Query Resource Limit"] - type: Literal["https://photon.codes/docs/problems/query-resource-limit"] - - -class QueryMessageMetricsResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class QueryMessageMetricsResponse422ApplicationProblemPlusJson( - RootModel[ - QueryMessageMetricsResponse422ApplicationProblemPlusJson1 - | QueryMessageMetricsResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - QueryMessageMetricsResponse422ApplicationProblemPlusJson1 - | QueryMessageMetricsResponse422ApplicationProblemPlusJson2 - ) - - -class QueryMessageMetricsResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class QueryMessageMetricsResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class QueryMessageMetricsResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class QueryMessageMetricsResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class QueryMessageMetricsResponse504ApplicationProblemPlusJson( - RootModel[ - QueryMessageMetricsResponse504ApplicationProblemPlusJson1 - | QueryMessageMetricsResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - QueryMessageMetricsResponse504ApplicationProblemPlusJson1 - | QueryMessageMetricsResponse504ApplicationProblemPlusJson2 - ) - - -class RedeemAppInstallationDeliveryRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - appId: str - clientAssertion: str - code: str - - -class RedeemAppInstallationDeliveryResponse200ApplicationJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - clientId: str - clientSecret: str - installationId: str - status: Literal["created"] - - -class RedeemAppInstallationDeliveryResponse200ApplicationJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - installationId: str - status: Literal["delivery_consumed", "recovery_required", "revocation_pending", "revoked"] | str - - -class RedeemAppInstallationDeliveryResponse200ApplicationJson( - RootModel[ - RedeemAppInstallationDeliveryResponse200ApplicationJson1 - | RedeemAppInstallationDeliveryResponse200ApplicationJson2 - ] -): - root: ( - RedeemAppInstallationDeliveryResponse200ApplicationJson1 - | RedeemAppInstallationDeliveryResponse200ApplicationJson2 - ) - - -class RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["APP_INSTALLATION_ASSERTION_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[401] - title: Literal["Invalid Installation Client Assertion"] - type: Literal["https://photon.codes/docs/problems/app-installation-assertion-invalid"] - - -class RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["APP_INSTALLATION_DELIVERY_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Installation Delivery Unavailable"] - type: Literal["https://photon.codes/docs/problems/app-installation-delivery-unavailable"] - - -class RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson( - RootModel[ - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson1 - | RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson1 - | RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson2 - ) - - -class Domain2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - domain: str - state: Literal["verified", "pending", "failed"] | str - - -class RefreshOrganizationSsoConnectionResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - connectionChangedAt: str | None - connectionGeneration: str - connectionState: Literal["not_configured", "configuring", "ready", "error"] | str - connectionType: str | MISSING = MISSING - desiredSsoEnforced: bool - domains: list[Domain2] | MISSING = MISSING - organizationId: str - policySyncStatus: Literal["synced", "manual_required"] | str - providerAvailable: bool | MISSING = MISSING - ssoEnforced: bool - ssoJitEnabled: bool - version: str - - -class RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] - - -class RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson( - RootModel[ - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson1 - | RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson1 - | RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson2 - ) - - -class RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] -): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 - - -class RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] - - -class RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] - - -class RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] - - -class RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson1 - ) - - -class RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson( - RootModel[ - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson1 - | RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson1 - | RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson2 - ) - - -class ReleaseImessageDedicatedLineResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseImessageDedicatedLineResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson( - RootModel[ - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson2 - ) - - -class ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson1 - ) - - -class ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson( - RootModel[ - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson1 - | ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson1 - | ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson2 - ) - - -class ReleaseResourceResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseResourceResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseResourceResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReleaseResourceResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReleaseResourceResponse403ApplicationProblemPlusJson( - RootModel[ - ReleaseResourceResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseResourceResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseResourceResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseResourceResponse403ApplicationProblemPlusJson2 - ) - - -class ReleaseResourceResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class ReleaseResourceResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_SENDER_CONNECTED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Sender Connected"] - type: Literal["https://photon.codes/docs/problems/whatsapp-sender-connected"] - - -class ReleaseResourceResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WHATSAPP_SENDER_PROVISIONING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["WhatsApp Sender Provisioning"] - type: Literal["https://photon.codes/docs/problems/whatsapp-sender-provisioning"] - - -class ReleaseResourceResponse409ApplicationProblemPlusJson( - RootModel[ - ReleaseResourceResponse409ApplicationProblemPlusJson1 - | ReleaseResourceResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseResourceResponse409ApplicationProblemPlusJson1 - | ReleaseResourceResponse409ApplicationProblemPlusJson2 - ) - - -class ReleaseResourceResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReleaseResourceResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReleaseResourceResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReleaseResourceResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ReleaseResourceResponse500ApplicationProblemPlusJson1] -): - root: PhotonProblemINTERNALERROR500 | ReleaseResourceResponse500ApplicationProblemPlusJson1 - - -class ReleaseResourceResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReleaseResourceResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReleaseResourceResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReleaseResourceResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReleaseResourceResponse504ApplicationProblemPlusJson( - RootModel[ - ReleaseResourceResponse504ApplicationProblemPlusJson1 - | ReleaseResourceResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseResourceResponse504ApplicationProblemPlusJson1 - | ReleaseResourceResponse504ApplicationProblemPlusJson2 - ) - - -class ReleaseSharedLineAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Assignment Not Found"] - type: Literal["https://photon.codes/docs/problems/assignment-not-found"] - - -class ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ) - - -class ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class ReleaseWhatsappDedicatedLineResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseWhatsappDedicatedLineResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str - - -class ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson( - RootModel[ - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson2 - ) - - -class ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] - - -class ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson1 - ) - - -class ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson( - RootModel[ - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1 - | ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson1 - | ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson2 - ) - - -class ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - assignedPhoneNumber: str - assignmentId: str - createdAt: str - email: str | MISSING = MISSING - firstName: str | MISSING = MISSING - handle: str - lastName: str | MISSING = MISSING - platform: Literal["imessage", "whatsapp"] | str - projectId: str - releasedAt: str | MISSING = MISSING - updatedAt: str - - -class ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson( - RootModel[ - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson2 - ) - - -class ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ASSIGNMENT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Assignment Not Found"] - type: Literal["https://photon.codes/docs/problems/assignment-not-found"] - - -class ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ) - - -class ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson( - RootModel[ - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson1 - | ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson2 - ) - - -class Credentials7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - password: str - username: str - - -class ReplaceVoiceProfileInboundRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials7 | None - destinationUri: str - expectedVersion: int - - -class Credentials8(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - username: str - - -class Inbound7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials8 | None - destinationUri: str - - -class ReplaceVoiceProfileInboundResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound7 | None - profileVersion: int - - -class Inbound8(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials8 | None - destinationUri: str - - -class ReplaceVoiceProfileInboundResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound8 | None - profileVersion: int - - -class ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson( - RootModel[ - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson2 - ) - - -class ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] - - -class ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] - - -class ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] - - -class ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] - - -class ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson( - RootModel[ - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - | ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson3 - ] -): - root: ( - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - | ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson3 - ) - - -class ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] - - -class ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson1 - ) - - -class ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson( - RootModel[ - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson2 - ) - - -class ResetAccountProfilePictureResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - __annotations__ = { - "__pydantic_extra__": dict[str, Any], - } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None - - -class ResetAccountProfilePictureResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ResetAccountProfilePictureResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ResetAccountProfilePictureResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ResetAccountProfilePictureResponse400ApplicationProblemPlusJson( - RootModel[ - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse400ApplicationProblemPlusJson2 - | ResetAccountProfilePictureResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse400ApplicationProblemPlusJson2 - | ResetAccountProfilePictureResponse400ApplicationProblemPlusJson3 - ) - - -class ResetAccountProfilePictureResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ResetAccountProfilePictureResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ResetAccountProfilePictureResponse403ApplicationProblemPlusJson( - RootModel[ - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResetAccountProfilePictureResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResetAccountProfilePictureResponse403ApplicationProblemPlusJson2 - ) - - -class ResetAccountProfilePictureResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class ResetAccountProfilePictureResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class ResetAccountProfilePictureResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class ResetAccountProfilePictureResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ResetAccountProfilePictureResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ResetAccountProfilePictureResponse422ApplicationProblemPlusJson( - RootModel[ - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse422ApplicationProblemPlusJson2 - ) - - -class ResetAccountProfilePictureResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ResetAccountProfilePictureResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ResetAccountProfilePictureResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ResetAccountProfilePictureResponse500ApplicationProblemPlusJson1 - ) - - -class ResetAccountProfilePictureResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ResetAccountProfilePictureResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ResetAccountProfilePictureResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ResetAccountProfilePictureResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ResetAccountProfilePictureResponse504ApplicationProblemPlusJson( - RootModel[ - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson1 - | ResetAccountProfilePictureResponse504ApplicationProblemPlusJson2 - ) - - -class ResetAgentProfileAvatarResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - avatarUrl: str - firstName: str - lastName: str | None - - -class ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson( - RootModel[ - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson2 - ) - - -class ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] - - -class ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - - -class ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson( - RootModel[ - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson1 - | ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson1 - | ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson2 - ) - - -class ResumeSubscriptionRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - category: str - """ - Category slug, e.g. analytics or messaging. - """ - - -class ResumeSubscriptionResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - category: str - """ - Category slug, e.g. analytics or messaging. - """ - resumed: bool - """ - False when the subscription was not scheduled to cancel. - """ - - -class ResumeSubscriptionResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class ResumeSubscriptionResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class ResumeSubscriptionResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class ResumeSubscriptionResponse400ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse400ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse400ApplicationProblemPlusJson2 - | ResumeSubscriptionResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - ResumeSubscriptionResponse400ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse400ApplicationProblemPlusJson2 - | ResumeSubscriptionResponse400ApplicationProblemPlusJson3 - ) - - -class ResumeSubscriptionResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class ResumeSubscriptionResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class ResumeSubscriptionResponse403ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResumeSubscriptionResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - ResumeSubscriptionResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | ResumeSubscriptionResponse403ApplicationProblemPlusJson2 - ) - - -class ResumeSubscriptionResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FAILED_PRECONDITION"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Failed Precondition"] - type: Literal["https://photon.codes/docs/problems/failed-precondition"] - - -class ResumeSubscriptionResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_REQUEST_IN_PROGRESS"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Idempotency Request In Progress"] - type: Literal["https://photon.codes/docs/problems/idempotency-request-in-progress"] - - -class ResumeSubscriptionResponse409ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse409ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse409ApplicationProblemPlusJson2 - ] -): - root: ( - ResumeSubscriptionResponse409ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse409ApplicationProblemPlusJson2 - ) - - -class ResumeSubscriptionResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class ResumeSubscriptionResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class ResumeSubscriptionResponse422ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse422ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - ResumeSubscriptionResponse422ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse422ApplicationProblemPlusJson2 - ) - - -class ResumeSubscriptionResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class ResumeSubscriptionResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ResumeSubscriptionResponse500ApplicationProblemPlusJson1 - ] -): - root: PhotonProblemINTERNALERROR500 | ResumeSubscriptionResponse500ApplicationProblemPlusJson1 - - -class ResumeSubscriptionResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class ResumeSubscriptionResponse503ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Idempotency Unavailable"] - type: Literal["https://photon.codes/docs/problems/idempotency-unavailable"] - - -class ResumeSubscriptionResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class ResumeSubscriptionResponse503ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse503ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse503ApplicationProblemPlusJson2 - ] -): - root: ( - ResumeSubscriptionResponse503ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse503ApplicationProblemPlusJson2 - ) - - -class ResumeSubscriptionResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class ResumeSubscriptionResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class ResumeSubscriptionResponse504ApplicationProblemPlusJson( - RootModel[ - ResumeSubscriptionResponse504ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - ResumeSubscriptionResponse504ApplicationProblemPlusJson1 - | ResumeSubscriptionResponse504ApplicationProblemPlusJson2 - ) - - -class RetryOrganizationConnectionSyncResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - membership: Membership - organization: Organization - organizationId: str - synchronized: bool - - -class RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] -): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 - - -class RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_CONNECTION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization Connection Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-connection-not-found"] - - -class RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SYNC_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization Synchronization Unavailable"] - type: Literal["https://photon.codes/docs/problems/organization-sync-unavailable"] - - -class RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson1 - ) - - -class RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - - -class RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] - - -class RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] - - -class RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson( - RootModel[ - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson1 - | RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson1 - | RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson2 - ) - - -class RevokeAccountServiceKeyResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - serviceKey: ServiceKey - - -class RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] - - -class RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson( - RootModel[ - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson2 - | RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson2 - | RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson3 - ) - - -class RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] - - -class RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] - - -class RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson( - RootModel[ - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson2 - ] -): - root: ( - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson2 - ) - - -class RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] - - -class RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_SERVICE_KEY_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Service Key Not Found"] - type: Literal["https://photon.codes/docs/problems/account-service-key-not-found"] - - -class RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson( - RootModel[ - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson2 - ) - - -class RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] - - -class RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] - - -class RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] - - -class RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson( - RootModel[ - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson2 - ] -): - root: ( - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson2 - ) - - -class RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson1 - ) - - -class RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson(BaseModel): +class AttachmentUploadNotReadyProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ATTACHMENT_UPLOAD_NOT_READY"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] - + status: Literal[409] + title: Literal["Attachment Upload Not Ready"] + type: Literal["https://photon.codes/docs/problems/attachment-upload-not-ready"] -class RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class AuthorizedOAuthApplication(BaseModel): + """ + The OAuth application authorized by the authenticated user. + """ -class RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson2(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + applicationType: str + """ + OAuth application type reported by the authorization server. + """ + clientId: str + """ + OAuth client identifier used by the application in authorization requests. + """ + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + """ + UTC timestamp when the application was created, in RFC 3339 format. + """ + description: str | None + """ + Application description, or null when no description is set. + """ + id: str + """ + Application identifier to pass as applicationId when revoking this application's grant. + """ + isFirstParty: bool + """ + Whether the application is classified as first-party by the authorization server. + """ + name: str + """ + Display name of the authorized application. + """ + redirectUris: list[AuthorizedOAuthApplicationRedirectUri] + """ + Registered OAuth callback URLs for the application. + """ + scopes: list[str] + """ + OAuth scope slugs configured for the application; grantedScopes records what the user authorized. + """ + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + """ + UTC timestamp when the application was last updated, in RFC 3339 format. + """ + usesPkce: bool + """ + Whether the application uses Proof Key for Code Exchange (PKCE). + """ -class RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson( +class BatchUpdateVoiceLineProfileAssignmentsConflictProblem( RootModel[ - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceDefaultProfileAssignmentForbiddenProblem + | VoiceProfileVersionConflictProblem ] ): root: ( - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson1 - | RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceDefaultProfileAssignmentForbiddenProblem + | VoiceProfileVersionConflictProblem ) -class RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 - - -class RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson1 - ] +class BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem( + RootModel[ResourceNotFoundProblem | VoiceProfileNotFoundProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson1 - ) - - -class RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] - - -class RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + root: ResourceNotFoundProblem | VoiceProfileNotFoundProblem -class RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson1(BaseModel): +class BatchUpdateVoiceLineProfileAssignmentsRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + updates: list[VoiceLineProfileAssignmentUpdate] -class RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson2(BaseModel): +class BatchUpdateVoiceLineProfileAssignmentsResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + assignments: list[VoiceLineProfileAssignment] -class RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson( - RootModel[ - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson1 - | RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson2 - ] +class BeginInvitationSsoGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson1 - | RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson2 - ) - - -class RevokeProjectApiKeyResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiKey: ApiKey - - -class RevokeProjectApiKeyResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] - - -class RevokeProjectApiKeyResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RevokeProjectApiKeyResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class BeginInvitationSsoPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class RevokeProjectApiKeyResponse403ApplicationProblemPlusJson( - RootModel[ - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RevokeProjectApiKeyResponse403ApplicationProblemPlusJson2 - ] +class BeginOrganizationAuthenticationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RevokeProjectApiKeyResponse403ApplicationProblemPlusJson2 - ) + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RevokeProjectApiKeyResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] +class BeginOrganizationAuthenticationPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class RevokeProjectApiKeyResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["API_KEY_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["API Key Not Found"] - type: Literal["https://photon.codes/docs/problems/api-key-not-found"] +class BeginOrganizationClosureAuthenticationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RevokeProjectApiKeyResponse404ApplicationProblemPlusJson( - RootModel[ - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson1 - | RevokeProjectApiKeyResponse404ApplicationProblemPlusJson2 - ] +class BeginOrganizationClosureAuthenticationPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] ): - root: ( - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson1 - | RevokeProjectApiKeyResponse404ApplicationProblemPlusJson2 - ) + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class RevokeProjectApiKeyResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] - +class BeginOrganizationSsoAdmissionGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RevokeProjectApiKeyResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + +class BeginOrganizationSsoAdmissionPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class RevokeProjectApiKeyResponse502ApplicationProblemPlusJson(BaseModel): +class BillingNotProvisionedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["BILLING_NOT_PROVISIONED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[503] + title: Literal["Billing Not Provisioned"] + type: Literal["https://photon.codes/docs/problems/billing-not-provisioned"] -class RevokeProjectApiKeyResponse504ApplicationProblemPlusJson(BaseModel): +class BillingOperationFailure(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + code: ( + Literal[ + "payment_method_required", + "payment_failed", + "not_provisioned", + "invalid_target", + "internal", + ] + | str + ) + """ + Stable provider-neutral failure category. + """ + detail: ( + Literal[ + "cancellation_scheduled", + "feature_not_sold_by_plan", + "feature_not_found", + "payment_timeout", + "plan_activation_timeout", + "plan_not_found", + "quantity_out_of_range", + "target_rejected", + ] + | str + | None + ) + retryable: bool -class RotateVoiceProfileOutboundCredentialRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expectedVersion: int - mode: Literal["normal", "emergency"] | str +class CancelOperationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - password: str | None - previousPasswordValidUntil: str | None - profileVersion: int +class CancelSubscriptionGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson1(BaseModel): +class CaptchaRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + challengeContext: str + code: Literal["CAPTCHA_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING + provider: Literal["turnstile", "hcaptcha"] | str requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + siteKey: str + status: Literal[403] + title: Literal["Captcha Required"] + type: Literal["https://photon.codes/docs/problems/captcha-required"] -class RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] +class ChangePlanGatewayTimeoutProblem(RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem]): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson( - RootModel[ - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson2 - ] +class CheckProjectSlugAvailabilityGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson2 - ) + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class CommitAccountProfilePictureGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class CommitAgentProfileAvatarGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson( +class ConfigureVoiceProfileOutboundConflictProblem( RootModel[ - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundConfiguredProblem ] ): root: ( - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundConfiguredProblem ) -class RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] +class ConfigureVoiceProfileOutboundGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson1(BaseModel): +class ConfigureVoiceProfileOutboundRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] + authentication: SipOutboundAuthenticationPolicy + expectedVersion: int -class RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] +class ConfirmAccountPhoneVerificationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] +class ConnectEmailDomainGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_NOT_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Not Configured"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-not-configured"] +class ConnectEmailDomainServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem -class RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson( +class ConnectTelegramBotConflictProblem( RootModel[ - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson2 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson3 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson4 + TelegramProjectDeletedProblem | ProjectClosingProblem | TelegramProvisionInProgressProblem ] ): - root: ( - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson2 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson3 - | RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson4 - ) + root: TelegramProjectDeletedProblem | ProjectClosingProblem | TelegramProvisionInProgressProblem -class RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class ConnectTelegramBotGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class ConnectWhatsappBusinessGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson( - RootModel[ - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson2 - ] +class ConnectWhatsappBusinessServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] ): - root: ( - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson2 - ) + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem -class RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] +class CountProjectsGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] +class CreateAccountProfilePictureUploadGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson1 - ] +class CreateAccountServiceKeyGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson1 - ) + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class CreateAgentProfileAvatarUploadGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class CreateAppInstallationRequestConflictProblem( + RootModel[AppInstallationAssertionReplayedProblem | AppInstallationConfigChangedProblem] +): + root: AppInstallationAssertionReplayedProblem | AppInstallationConfigChangedProblem + + +class CreateAppInstallationRequestGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + +class CreateDefaultVoiceProfileConflictProblem( + RootModel[ProjectClosingProblem | VoiceDefaultProfileExistsProblem] +): + root: ProjectClosingProblem | VoiceDefaultProfileExistsProblem + + +class CreateDefaultVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson(BaseModel): + +class CreateDefaultVoiceProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING + protocol: Literal["sip"] + + +class CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem( + RootModel[PaymentProviderNotReadyProblem | UpstreamUnavailableProblem] +): + root: PaymentProviderNotReadyProblem | UpstreamUnavailableProblem + + +class CreateOrganizationSetupIntentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + +class CreateOrganizationSsoPortalLinkGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class CreateOrganizationSsoPortalLinkPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem -class RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson1(BaseModel): + +class CreateOrganizationSsoPortalLinkRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + intent: Literal["sso", "domain_verification"] | str = "sso" + returnTo: str + + +class CreateProjectGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson2(BaseModel): +class CreateSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class CreateSharedLineAssignmentRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + email: str | MISSING = MISSING + firstName: str | MISSING = MISSING + handle: str + lastName: str | MISSING = MISSING -class RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson( +class CreateSharedLineAssignmentServiceUnavailableProblem( RootModel[ - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson2 + BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem ] ): - root: ( - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson1 - | RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson2 - ) + root: BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem -class RotateWebhookSigningSecretRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - overlapSeconds: int = 86400 +class CreateVoiceProfileConflictProblem( + RootModel[ProjectClosingProblem | VoiceDefaultProfileRequiredProblem] +): + root: ProjectClosingProblem | VoiceDefaultProfileRequiredProblem -class RotateWebhookSigningSecretResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - previousSecretExpiresAt: str | None - signingSecret: str +class CreateVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson(BaseModel): +class CreateVoiceProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING + name: str + protocol: Literal["sip"] -class RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class CreateWebhookDestinationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateWhatsappSharedLineAssignmentConflictProblem( + RootModel[ + ProjectClosingProblem + | WhatsappModeDedicatedProblem + | SharedLineCapExceededProblem + | AssignmentExistsProblem + ] +): + root: ( + ProjectClosingProblem + | WhatsappModeDedicatedProblem + | SharedLineCapExceededProblem + | AssignmentExistsProblem ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] -class RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson( +class CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class CreateWhatsappSharedLineAssignmentServiceUnavailableProblem( RootModel[ - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson2 + BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem + ] +): + root: BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem + + +class CreateWhatsappVoipSenderConflictProblem( + RootModel[ + ProjectClosingProblem + | WhatsappAccountDisconnectingProblem + | WhatsappAccountProvisioningProblem + | WhatsappSenderConnectedProblem + | WhatsappSenderProvisioningProblem + | WhatsappVoipSourceReleasingProblem ] ): root: ( - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | WhatsappAccountDisconnectingProblem + | WhatsappAccountProvisioningProblem + | WhatsappSenderConnectedProblem + | WhatsappSenderProvisioningProblem + | WhatsappVoipSourceReleasingProblem ) -class RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Webhook Destination Not Found"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-not-found"] +class CreateWhatsappVoipSenderGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Webhook Destination Deleted"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-deleted"] +class CreateWhatsappVoipSenderNotFoundProblem( + RootModel[WhatsappWabaNotConnectedProblem | WhatsappVoipSourceNotEligibleProblem] +): + root: WhatsappWabaNotConnectedProblem | WhatsappVoipSourceNotEligibleProblem -class RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class CreateWhatsappVoipSenderServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem -class RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class DeleteAccountGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class DeleteProjectGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class DeleteVoiceProfileConflictProblem( + RootModel[ + VoiceProfileInUseProblem + | VoiceDefaultProfileDeletionForbiddenProblem + | VoiceProfileVersionConflictProblem + ] +): + root: ( + VoiceProfileInUseProblem + | VoiceDefaultProfileDeletionForbiddenProblem + | VoiceProfileVersionConflictProblem ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] -class Captcha(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - challengeContext: str - token: str +class DeleteVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartAccountPhoneVerificationRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - captcha: Captcha | MISSING = MISSING - phoneNumber: str +class DeleteVoiceProfileInboundConflictProblem( + RootModel[VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem] +): + root: VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem -class StartAccountPhoneVerificationResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - channel: Literal["sms"] - expiresAt: str - resendAvailableAt: str +class DeleteVoiceProfileInboundGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] +class DeleteVoiceProfileOutboundConflictProblem( + RootModel[VoiceProfileVersionConflictProblem | VoiceOutboundNotConfiguredProblem] +): + root: VoiceProfileVersionConflictProblem | VoiceOutboundNotConfiguredProblem -class StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - challengeContext: str - code: Literal["CAPTCHA_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - provider: Literal["turnstile", "hcaptcha"] | str - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - siteKey: str - status: Literal[403] - title: Literal["Captcha Required"] - type: Literal["https://photon.codes/docs/problems/captcha-required"] +class DeleteVoiceProfileOutboundGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson2(BaseModel): +class DeleteWebhookDestinationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class DeprecatedWebhookApiVersion(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + retirement: WebhookApiVersionRetirement + selectable: Literal[False] + status: Literal["deprecated"] + successor: str | None + version: str + + +class DeviceTokenRequest(RootModel[DeviceCodeGrantRequest | RefreshTokenGrantRequest]): + root: DeviceCodeGrantRequest | RefreshTokenGrantRequest -class StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson3(BaseModel): +class DeviceTokenResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + access_token: str + """ + Bearer access token for authenticated Photon API requests. + """ + authentication_method: str | MISSING = MISSING + """ + Authentication method used for the device login, when returned. Omitted for refresh grants. + """ + expires_in: float + """ + Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. + """ + refresh_token: str + """ + Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. + """ + user: DeviceTokenResponseUser -class StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson( - RootModel[ - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson1 - | StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson2 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson3 - ] +class DisableOrganizationSsoGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson1 - | StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson2 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson3 - ) + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] +class DisableOrganizationSsoPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem + + +class DisconnectWhatsappBusinessAccountConflictProblem( + RootModel[WhatsappAccountDisconnectingProblem | WhatsappAccountProvisioningProblem] +): + root: WhatsappAccountDisconnectingProblem | WhatsappAccountProvisioningProblem + + +class DisconnectWhatsappBusinessAccountGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class DownloadAttachmentGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson(BaseModel): +class EmailDomainAlreadyConnectedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["ACCOUNT_DELETED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["EMAIL_DOMAIN_ALREADY_CONNECTED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] + status: Literal[409] + title: Literal["Email Domain Already Connected"] + type: Literal["https://photon.codes/docs/problems/email-domain-already-connected"] -class StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson(BaseModel): +class EmailDomainCapExceededProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PAYLOAD_TOO_LARGE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["EMAIL_DOMAIN_CAP_EXCEEDED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] + status: Literal[409] + title: Literal["Email Domain Cap Exceeded"] + type: Literal["https://photon.codes/docs/problems/email-domain-cap-exceeded"] -class StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson(BaseModel): +class EntitlementRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VALIDATION_FAILED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["ENTITLEMENT_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] + status: Literal[402] + title: Literal["Entitlement Required"] + type: Literal["https://photon.codes/docs/problems/entitlement-required"] -class StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson(BaseModel): +class ExistingAppInstallationDelivery(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + installationId: str + status: Literal["delivery_consumed", "recovery_required", "revocation_pending", "revoked"] | str -class StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson1(BaseModel): +class FailedBillingOperation(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson1 - ) + failure: BillingOperationFailure + kind: Literal["change_plan", "adjust_fixed_charge_quantity"] | str + operationId: str + """ + Stable handle for this provisioning action. + """ + resolvedAt: str | None + result: None + status: Literal["failed"] + """ + Terminal. Failure contains a stable code and retryability. + """ + submittedAt: str | None -class StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson(BaseModel): +class FailedPreconditionProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["FAILED_PRECONDITION"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + status: Literal[409] + title: Literal["Failed Precondition"] + type: Literal["https://photon.codes/docs/problems/failed-precondition"] -class StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson(BaseModel): +class FixedChargePricing(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + amount: str | None + tiers: list[FixedChargeTier] -class StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson1(BaseModel): +class ForbiddenProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["FORBIDDEN"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + status: Literal[403] + title: Literal["Forbidden"] + type: Literal["https://photon.codes/docs/problems/forbidden"] -class StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] +class GetAccountGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson( - RootModel[ - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson1 - | StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson2 - ] +class GetAgentProfileGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] ): - root: ( - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson1 - | StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson2 - ) + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class GetAttachmentGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class GetBillingOperationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetBillingOverviewGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetDefaultVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartEnterpriseLoginRequestApplicationJson1(BaseModel): +class GetMessageMetricsBackfillResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - invitationToken: str | MISSING = MISSING - organizationId: str - returnTo: str + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + failedWrites: int + lastVerifiedAt: str | None + processedWrites: int + state: ( + Literal["disabled", "pending", "running", "verifying", "completed", "paused", "failed"] + | str + ) + version: str + + +class GetOperationGatewayTimeoutProblem(RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem]): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetOrganizationBillingOverviewGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetOrganizationConnectionStatusGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class GetOrganizationPaymentMethodGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartEnterpriseLoginRequestApplicationJson2(BaseModel): +class GetOrganizationPaymentMethodResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - invitationToken: str - returnTo: str + cardOnFile: bool + """ + True once a card is captured for the payer. + """ + paymentMethod: PaymentMethod | None + """ + Metadata for the default card, or null. + """ + + +class GetOrganizationSsoConfigurationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class GetOrganizationSsoConfigurationPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem + + +class GetProjectClosureStatusGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class StartEnterpriseLoginRequestApplicationJson3(BaseModel): +class GetProjectClosureStatusResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - retryToken: str + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + deletionOperationId: str | None + domains: list[ProjectClosureDomainStatus] + organizationId: str + projectId: str + ready: bool + + +class GetProjectGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class GetProjectImessagePlatformGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetProjectImessagePlatformServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem + + +class GetProjectWhatsappPlatformGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetProjectWhatsappPlatformServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem + + +class GetResourceGatewayTimeoutProblem(RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem]): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartEnterpriseLoginRequestApplicationJson( +class GetSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetSmsLineCampaignAssignmentConflictProblem( RootModel[ - StartEnterpriseLoginRequestApplicationJson1 - | StartEnterpriseLoginRequestApplicationJson2 - | StartEnterpriseLoginRequestApplicationJson3 + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem ] ): root: ( - StartEnterpriseLoginRequestApplicationJson1 - | StartEnterpriseLoginRequestApplicationJson2 - | StartEnterpriseLoginRequestApplicationJson3 + ProjectClosingProblem + | SmsLineUnsupportedProblem + | SmsCampaignNotReadyProblem + | SmsCampaignVersionConflictProblem + | SmsCampaignCapacityExceededProblem + | SmsCampaignReconciliationRequiredProblem + | SmsCampaignMutationInProgressProblem ) -class StartEnterpriseLoginResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - url: str +class GetSmsLineCampaignAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class StartEnterpriseLoginResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] +class GetSmsLineCampaignAssignmentNotFoundProblem( + RootModel[SmsCampaignNotFoundProblem | SmsLineNotFoundProblem] +): + root: SmsCampaignNotFoundProblem | SmsLineNotFoundProblem -class UnassignSmsLineCampaignResponse200ApplicationJson(BaseModel): +class GetSmsLineCampaignAssignmentResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + campaign: SmsLineCampaign | None + eligibility: Literal["eligible", "blocked", "unknown"] | str + reasonCode: str | None + resourceId: str + version: int + + +class GetSmsLineCampaignAssignmentServiceUnavailableProblem( + RootModel[SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem] +): + root: SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem + + +class GetVoiceLineProfileAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetWebhookDestinationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetWebhookEventSchemaGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetWhatsappBusinessAccountGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class GetWhatsappBusinessVerificationCodeNotFoundProblem( + RootModel[ResourceNotFoundProblem | WhatsappVerificationCodeNotFoundProblem] +): + root: ResourceNotFoundProblem | WhatsappVerificationCodeNotFoundProblem -class UnassignSmsLineCampaignResponse202ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - cancellable: bool - createdAt: str - detail: dict[str, Any] | MISSING = MISSING - endedAt: str | MISSING = MISSING - error: Error | MISSING = MISSING - operationId: str - projectId: str - resourceId: str | MISSING = MISSING - resourceType: str - startedAt: str | MISSING = MISSING - state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - ) - updatedAt: str +class GetWhatsappSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson1(BaseModel): +class HttpErrorProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_INVALID_REQUEST"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["HTTP_ERROR"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[400] - title: Literal["Invalid SMS campaign request"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-invalid-request"] + title: Literal["Request Failed"] + type: Literal["https://photon.codes/docs/problems/http-error"] -class UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson2(BaseModel): +class IdempotencyKeyInvalidProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IDEMPOTENCY_KEY_INVALID"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + title: Literal["Idempotency Key Invalid"] + type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] -class UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson3(BaseModel): +class IdempotencyKeyRequiredProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IDEMPOTENCY_KEY_REQUIRED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] - - -class UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson( - RootModel[ - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson3 - ] -): - root: ( - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson3 - ) + title: Literal["Idempotency Key Required"] + type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] -class UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson1(BaseModel): +class IdempotencyKeyReusedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IDEMPOTENCY_KEY_REUSED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + status: Literal[422] + title: Literal["Idempotency Key Reused"] + type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] -class UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson2(BaseModel): +class IdempotencyRequestInProgressProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IDEMPOTENCY_REQUEST_IN_PROGRESS"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + status: Literal[409] + title: Literal["Idempotency Request In Progress"] + type: Literal["https://photon.codes/docs/problems/idempotency-request-in-progress"] -class UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson3(BaseModel): +class IdempotencyUnavailableProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_ORGANIZATION_MISMATCH"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IDEMPOTENCY_UNAVAILABLE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Campaign belongs to another organization"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-organization-mismatch"] - - -class UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson( - RootModel[ - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson3 - ] -): - root: ( - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson3 - ) + status: Literal[503] + title: Literal["Idempotency Unavailable"] + type: Literal["https://photon.codes/docs/problems/idempotency-unavailable"] -class UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson1(BaseModel): +class ImessageModeDedicatedProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["IMESSAGE_MODE_DEDICATED"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Campaign not found"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-found"] + status: Literal[409] + title: Literal["iMessage Mode Is Dedicated"] + type: Literal["https://photon.codes/docs/problems/imessage-mode-dedicated"] -class UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson2(BaseModel): +class InsufficientScopeProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_LINE_NOT_FOUND"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INSUFFICIENT_SCOPE"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["SMS line not found"] - type: Literal["https://photon.codes/docs/problems/sms-line-not-found"] - - -class UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson( - RootModel[ - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson2 - ] -): - root: ( - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson2 - ) + status: Literal[403] + title: Literal["Insufficient Scope"] + type: Literal["https://photon.codes/docs/problems/insufficient-scope"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson1(BaseModel): +class InternalErrorProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_CLOSING"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INTERNAL_ERROR"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] + status: Literal[500] + title: Literal["Internal Server Error"] + type: Literal["https://photon.codes/docs/problems/internal-error"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson2(BaseModel): +class InvalidArgumentProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_LINE_UNSUPPORTED"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INVALID_ARGUMENT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["SMS line unsupported"] - type: Literal["https://photon.codes/docs/problems/sms-line-unsupported"] + status: Literal[400] + title: Literal["Invalid Argument"] + type: Literal["https://photon.codes/docs/problems/invalid-argument"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson3(BaseModel): +class InvalidAttachmentRequestProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_NOT_READY"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INVALID_ATTACHMENT_REQUEST"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign not ready"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-not-ready"] + status: Literal[400] + title: Literal["Invalid Attachment Request"] + type: Literal["https://photon.codes/docs/problems/invalid-attachment-request"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson4(BaseModel): +class InvalidAuthContextProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_VERSION_CONFLICT"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INVALID_AUTH_CONTEXT"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment version conflict"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-version-conflict"] + status: Literal[500] + title: Literal["Invalid Authentication Context"] + type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson5(BaseModel): +class InvalidReturnToProblem(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_MUTATION_IN_PROGRESS"] + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["INVALID_RETURN_TO"] detail: str | MISSING = MISSING instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Assignment mutation in progress"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-mutation-in-progress"] + status: Literal[400] + title: Literal["Invalid Return To"] + type: Literal["https://photon.codes/docs/problems/invalid-return-to"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson6(BaseModel): - model_config = ConfigDict( - extra="allow", +class InvoiceSubject(RootModel[ProjectInvoiceSubject | OrganizationInvoiceSubject]): + root: ProjectInvoiceSubject | OrganizationInvoiceSubject + + +class ListAccountServiceKeysForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["SMS_CAMPAIGN_CAPACITY_EXCEEDED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign number capacity exhausted"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-capacity-exceeded"] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson7(BaseModel): +class ListAccountServiceKeysGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class ListAccountServiceKeysInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListAttachmentsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class ListAttachmentsGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class ListAttachmentsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListAuthorizedApplicationsForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class ListAuthorizedApplicationsGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class ListAuthorizedApplicationsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListBillingPlansForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class ListBillingPlansGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListBillingPlansInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListInvoicesForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class ListInvoicesGatewayTimeoutProblem(RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem]): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListInvoicesInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListNumberAreaCodesForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class ListNumberAreaCodesGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListNumberAreaCodesInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListNumberCountriesForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class ListNumberCountriesGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListNumberCountriesInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListNumberCountriesResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_RECONCILIATION_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Campaign reconciliation required"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-reconciliation-required"] + countries: list[NumberCountry] -class UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson( +class ListOauthScopesGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class ListOperationsForbiddenProblem( RootModel[ - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson3 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson4 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson5 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson6 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson7 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson2 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson3 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson4 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson5 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson6 - | UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson7 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class ListOperationsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] +class ListOperationsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListProjectApiKeysForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson( +class ListProjectPlatformsForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class ListProjectPlatformsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson1(BaseModel): +class ListProjectPlatformsResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["SMS_CAMPAIGN_CONTEXT_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Campaign context unavailable"] - type: Literal["https://photon.codes/docs/problems/sms-campaign-context-unavailable"] + platforms: list[SupportedPlatform] -class UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListProjectsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] -class UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson( +class ListProjectsGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class ListResourcesForbiddenProblem( RootModel[ - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] +class ListResourcesGatewayTimeoutProblem(RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem]): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class ListResourcesInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson( +class ListSharedLineAssignmentsForbiddenProblem( RootModel[ - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson1 - | UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class ListSharedLineAssignmentsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class ListSharedLineAssignmentsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson( +class ListVoiceProfilesForbiddenProblem( RootModel[ - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListVoiceProfilesGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListVoiceProfilesInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListWebhookApiVersionsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["RESOURCE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Resource Not Found"] - type: Literal["https://photon.codes/docs/problems/resource-not-found"] -class UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListWebhookApiVersionsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListWebhookDestinationsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] -class UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListWebhookDestinationsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListWebhookEgressAddressesForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] -class UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson(BaseModel): +class ListWebhookEgressAddressesResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + ipAddresses: list[str] + """ + Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. + """ -class UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListWebhookEventTypesForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson( +class ListWebhookEventTypesGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListWhatsappAccountPhoneNumbersForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListWhatsappAccountPhoneNumbersInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ListWhatsappSharedLineAssignmentsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] -class UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson(BaseModel): +class ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ListWhatsappSharedLineAssignmentsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class MessageMetricsJsonDiscriminator( + RootModel[MessageMetricsJsonPathDiscriminator | MessageMetricsJsonOneOfPathsDiscriminator] +): + root: MessageMetricsJsonPathDiscriminator | MessageMetricsJsonOneOfPathsDiscriminator + + +class MessageMetricsJsonPath(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + additionalProperties: Literal[True] | MISSING = MISSING + contentTypes: list[str] | MISSING = MISSING + directions: list[Literal["addressed", "received"] | str] | MISSING = MISSING + expression: str + itemTypes: list[str] | MISSING = MISSING + path: str + required: bool + type: str + values: list[bool | int | float | str] | MISSING = MISSING -class UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson1(BaseModel): +class MessageMetricsPlatformJsonPaths(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + name: ( + Literal["email", "imessage", "sms", "telegram", "voice", "whatsapp", "whatsapp_business"] + | str + ) + paths: list[MessageMetricsJsonPath] -class UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson2(BaseModel): +class Operation(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + cancellable: bool + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + detail: dict[str, Any] | MISSING = MISSING + endedAt: str | MISSING = Field(MISSING, examples=["2026-01-01T00:00:00.000Z"]) + error: OperationError | MISSING = MISSING + operationId: str + projectId: str + resourceId: str | MISSING = MISSING + resourceType: str + startedAt: str | MISSING = Field(MISSING, examples=["2026-01-01T00:00:00.000Z"]) + state: Literal["pending", "running", "succeeded", "failed", "cancelled"] | str + type: OperationType + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson( - RootModel[ - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson1 - | UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson2 - ] -): - root: ( - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson1 - | UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson2 +class OperationPage(BaseModel): + model_config = ConfigDict( + extra="allow", ) + nextPageToken: str | MISSING = MISSING + operations: list[Operation] -class UpdateAccountRequestApplicationJson(BaseModel): +class OrganizationConnectionStatusMembership(BaseModel): model_config = ConfigDict( extra="allow", ) - firstName: str | MISSING = MISSING - lastName: str | None | MISSING = MISSING + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + errorCode: str | None + retryAt: str | None + status: Literal["pending", "syncing", "ready", "error", "blocked"] | str -class UpdateAccountResponse200ApplicationJson(BaseModel): +class OrganizationConnectionStatusOrganization(BaseModel): model_config = ConfigDict( extra="allow", ) __annotations__ = { "__pydantic_extra__": dict[str, Any], } - accountId: str - createdAt: str | None - deletedAt: str | None - email: str - firstName: str | None - lastName: str | None - phoneNumber: str | None - phoneVerifiedAt: str | None - pictureUrl: str - updatedAt: str | None + errorCode: str | None + status: Literal["pending", "syncing", "ready", "error", "blocked"] | str -class UpdateAccountResponse400ApplicationProblemPlusJson1(BaseModel): +class OrganizationSsoDomain(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["HTTP_ERROR"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Request Failed"] - type: Literal["https://photon.codes/docs/problems/http-error"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + domain: str + state: Literal["verified", "pending", "failed"] | str -class UpdateAccountResponse400ApplicationProblemPlusJson2(BaseModel): +class ProfilePictureUpload(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + expiresAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + formFields: dict[str, str] + uploadId: str + uploadUrl: str -class UpdateAccountResponse400ApplicationProblemPlusJson3(BaseModel): +class Project(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + agentProfile: AgentProfile + billingInitialization: ( + Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING + ) = MISSING + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + createdByAccountId: str | None + createdByActorId: str | None + createdByActorKind: Literal["account", "service_identity"] | str | None + deletedAt: str | None + name: str + organizationId: str + projectId: str + slug: str + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class UpdateAccountResponse400ApplicationProblemPlusJson4(BaseModel): +class ProjectPage(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + nextPageToken: str | MISSING = MISSING + projects: list[Project] -class UpdateAccountResponse400ApplicationProblemPlusJson( +class ProjectPlatformSettings( + RootModel[SharedProjectPlatformSettings | DedicatedProjectPlatformSettings] +): + root: SharedProjectPlatformSettings | DedicatedProjectPlatformSettings + + +class ProvisionImessageDedicatedLineBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class ProvisionImessageDedicatedLineForbiddenProblem( RootModel[ - UpdateAccountResponse400ApplicationProblemPlusJson1 - | UpdateAccountResponse400ApplicationProblemPlusJson2 - | UpdateAccountResponse400ApplicationProblemPlusJson3 - | UpdateAccountResponse400ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAccountResponse400ApplicationProblemPlusJson1 - | UpdateAccountResponse400ApplicationProblemPlusJson2 - | UpdateAccountResponse400ApplicationProblemPlusJson3 - | UpdateAccountResponse400ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAccountResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class ProvisionImessageDedicatedLineGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateAccountResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class ProvisionImessageDedicatedLineInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ProvisionImessageDedicatedLineServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem + + +class ProvisionWhatsappDedicatedLineBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateAccountResponse403ApplicationProblemPlusJson( +class ProvisionWhatsappDedicatedLineForbiddenProblem( RootModel[ - UpdateAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateAccountResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAccountResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateAccountResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAccountResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ProvisionWhatsappDedicatedLineGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ProvisionWhatsappDedicatedLineInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ProvisionWhatsappDedicatedLineServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem + + +class PurchaseSmsNumberBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class PurchaseSmsNumberForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["ACCOUNT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Account Not Found"] - type: Literal["https://photon.codes/docs/problems/account-not-found"] -class UpdateAccountResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class PurchaseSmsNumberGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class PurchaseSmsNumberInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class PurchaseSmsNumberServiceUnavailableProblem( + RootModel[BillingNotProvisionedProblem | UpstreamUnavailableProblem] +): + root: BillingNotProvisionedProblem | UpstreamUnavailableProblem + + +class QueryMessageMetricsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["ACCOUNT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Account Deleted"] - type: Literal["https://photon.codes/docs/problems/account-deleted"] -class UpdateAccountResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class QueryMessageMetricsGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class RedeemAppInstallationDeliveryGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class RedeemAppInstallationDeliveryResponse( + RootModel[CreatedAppInstallationDelivery | ExistingAppInstallationDelivery] +): + root: CreatedAppInstallationDelivery | ExistingAppInstallationDelivery + + +class RefreshOrganizationSsoConnectionBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem + + +class RefreshOrganizationSsoConnectionForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class RefreshOrganizationSsoConnectionGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class RefreshOrganizationSsoConnectionInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class RefreshOrganizationSsoConnectionPreconditionFailedProblem( + RootModel[OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem] +): + root: OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem + + +class ReleaseImessageDedicatedLineForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] -class UpdateAccountResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class ReleaseImessageDedicatedLineGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ReleaseImessageDedicatedLineInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ReleaseResourceConflictProblem( + RootModel[WhatsappSenderConnectedProblem | WhatsappSenderProvisioningProblem] +): + root: WhatsappSenderConnectedProblem | WhatsappSenderProvisioningProblem + + +class ReleaseResourceForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] -class UpdateAccountResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class ReleaseResourceGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ReleaseResourceInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ReleaseSharedLineAssignmentForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] -class UpdateAccountResponse422ApplicationProblemPlusJson( +class ReleaseSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class ReleaseSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ReleaseWhatsappDedicatedLineForbiddenProblem( RootModel[ - UpdateAccountResponse422ApplicationProblemPlusJson1 - | UpdateAccountResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAccountResponse422ApplicationProblemPlusJson1 - | UpdateAccountResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAccountResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] +class ReleaseWhatsappDedicatedLineGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateAccountResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | UpdateAccountResponse500ApplicationProblemPlusJson1] +class ReleaseWhatsappDedicatedLineInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] ): - root: PhotonProblemINTERNALERROR500 | UpdateAccountResponse500ApplicationProblemPlusJson1 + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateAccountResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ReleaseWhatsappSharedLineAssignmentForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] -class UpdateAccountResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateAccountResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateAccountResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class ReplaceVoiceProfileInboundConflictProblem( + RootModel[ + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + ] +): + root: ( + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UpdateAccountResponse504ApplicationProblemPlusJson( +class ReplaceVoiceProfileInboundForbiddenProblem( RootModel[ - UpdateAccountResponse504ApplicationProblemPlusJson1 - | UpdateAccountResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAccountResponse504ApplicationProblemPlusJson1 - | UpdateAccountResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAgentProfileRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - firstName: str | MISSING = MISSING - lastName: str | None | MISSING = MISSING +class ReplaceVoiceProfileInboundGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateAgentProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - avatarUrl: str - firstName: str - lastName: str | None +class ReplaceVoiceProfileInboundInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateAgentProfileResponse400ApplicationProblemPlusJson1(BaseModel): +class ReplaceVoiceProfileInboundRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + credentials: SipInboundCredentialsWithPassword | None + destinationUri: str + expectedVersion: int -class UpdateAgentProfileResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] +class ResetAccountProfilePictureBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem -class UpdateAgentProfileResponse400ApplicationProblemPlusJson( +class ResetAccountProfilePictureForbiddenProblem( RootModel[ - UpdateAgentProfileResponse400ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAgentProfileResponse400ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAgentProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class ResetAccountProfilePictureGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateAgentProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class ResetAccountProfilePictureInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ResetAgentProfileAvatarBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateAgentProfileResponse403ApplicationProblemPlusJson( +class ResetAgentProfileAvatarForbiddenProblem( RootModel[ - UpdateAgentProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateAgentProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAgentProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateAgentProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAgentProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] +class ResetAgentProfileAvatarGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateAgentProfileResponse410ApplicationProblemPlusJson(BaseModel): +class Resource(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] + abilities: list[str] + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + detail: dict[str, Any] + projectId: str + resourceId: str + retiredAt: str | MISSING = Field(MISSING, examples=["2026-01-01T00:00:00.000Z"]) + state: Literal["unallocated", "active", "retired"] | str + type: str + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class UpdateAgentProfileResponse413ApplicationProblemPlusJson(BaseModel): +class ResourcePage(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] + nextPageToken: str | MISSING = MISSING + resources: list[Resource] -class UpdateAgentProfileResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class ResumeSubscriptionBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateAgentProfileResponse422ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class ResumeSubscriptionConflictProblem( + RootModel[FailedPreconditionProblem | IdempotencyRequestInProgressProblem] +): + root: FailedPreconditionProblem | IdempotencyRequestInProgressProblem -class UpdateAgentProfileResponse422ApplicationProblemPlusJson( +class ResumeSubscriptionForbiddenProblem( RootModel[ - UpdateAgentProfileResponse422ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAgentProfileResponse422ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateAgentProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class ResumeSubscriptionGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateAgentProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class ResumeSubscriptionInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateAgentProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class ResumeSubscriptionServiceUnavailableProblem( + RootModel[IdempotencyUnavailableProblem | UpstreamUnavailableProblem] +): + root: IdempotencyUnavailableProblem | UpstreamUnavailableProblem -class UpdateAgentProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] +class RetryOrganizationConnectionSyncForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class RetryOrganizationConnectionSyncGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateAgentProfileResponse504ApplicationProblemPlusJson( +class RetryOrganizationConnectionSyncInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class RevokeAccountServiceKeyBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem + + +class RevokeAccountServiceKeyForbiddenProblem( RootModel[ - UpdateAgentProfileResponse504ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateAgentProfileResponse504ApplicationProblemPlusJson1 - | UpdateAgentProfileResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateDefaultVoiceProfileRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expectedVersion: int - mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING - protocol: Literal["sip"] | MISSING = MISSING +class RevokeAccountServiceKeyGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class Inbound9(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials8 | None - destinationUri: str +class RevokeAccountServiceKeyInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Connection8(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str +class RevokeAccountServiceKeyNotFoundProblem( + RootModel[AccountNotFoundProblem | AccountServiceKeyNotFoundProblem] +): + root: AccountNotFoundProblem | AccountServiceKeyNotFoundProblem -class Outbound8(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication1 - connection: Connection8 +class RevokeAuthorizedApplicationForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class RevokeAuthorizedApplicationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class RevokeAuthorizedApplicationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Configuration6(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound9 | None - outbound: Outbound8 | None +class RevokeProjectApiKeyBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateDefaultVoiceProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class RevokeProjectApiKeyForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - configuration: Configuration6 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int -class UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class RevokeProjectApiKeyNotFoundProblem(RootModel[ProjectNotFoundProblem | ApiKeyNotFoundProblem]): + root: ProjectNotFoundProblem | ApiKeyNotFoundProblem -class UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class RotateVoiceProfileOutboundCredentialBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson( +class RotateVoiceProfileOutboundCredentialConflictProblem( RootModel[ - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundNotConfiguredProblem ] ): root: ( - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundNotConfiguredProblem ) -class UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class RotateVoiceProfileOutboundCredentialForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] -class UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] +class RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_DIRECTION_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Direction Configured"] - type: Literal["https://photon.codes/docs/problems/voice-profile-direction-configured"] +class RotateVoiceProfileOutboundCredentialInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson3(BaseModel): +class RotateVoiceProfileOutboundCredentialRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] + expectedVersion: int + mode: Literal["normal", "emergency"] | str -class UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] +class RotateWebhookSigningSecretBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson( +class RotateWebhookSigningSecretForbiddenProblem( RootModel[ - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson3 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson1 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson2 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson3 - | UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class RotateWebhookSigningSecretGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): +class SelectableWebhookApiVersion(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] + retirement: WebhookApiVersionRetirement | None + selectable: Literal[True] + status: Literal["preview", "latest", "maintain"] | str + successor: str | None + version: str -class UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): +class SharedLineAssignment(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] - - -class UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 - ) + assignedPhoneNumber: str + assignmentId: str + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + email: str | MISSING = MISSING + firstName: str | MISSING = MISSING + handle: str + lastName: str | MISSING = MISSING + platform: Literal["imessage", "whatsapp"] | str + projectId: str + releasedAt: str | MISSING = Field(MISSING, examples=["2026-01-01T00:00:00.000Z"]) + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) -class UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): +class SharedLineAssignmentPage(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] + assignments: list[SharedLineAssignment] + nextPageToken: str | MISSING = MISSING -class UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): +class SipEndpoint(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] + host: str + port: int + transport: Literal["udp", "tcp", "tls"] | str -class UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): +class SipInboundConfiguration(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] + credentials: SipInboundCredentials | None + destinationUri: str -class UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): +class SipOutboundConnection(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] + endpoints: list[SipEndpoint] + realm: str -class UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson( +class StartAccountPhoneVerificationForbiddenProblem( RootModel[ - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 + CaptchaRequiredProblem + | ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson1 - | UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson2 + CaptchaRequiredProblem + | ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateOrganizationSsoPolicyRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expectedVersion: str - ssoJitEnabled: bool +class StartAccountPhoneVerificationGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateOrganizationSsoPolicyResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - connectionChangedAt: str | None - connectionGeneration: str - connectionState: Literal["not_configured", "configuring", "ready", "error"] | str - connectionType: str | MISSING = MISSING - desiredSsoEnforced: bool - domains: list[Domain2] | MISSING = MISSING - organizationId: str - policySyncStatus: Literal["synced", "manual_required"] | str - providerAvailable: bool | MISSING = MISSING - ssoEnforced: bool - ssoJitEnabled: bool - version: str +class StartAccountPhoneVerificationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["INVALID_RETURN_TO"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Return To"] - type: Literal["https://photon.codes/docs/problems/invalid-return-to"] +class TerminalBillingOperation(RootModel[SucceededBillingOperation | FailedBillingOperation]): + root: SucceededBillingOperation | FailedBillingOperation -class UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class UnassignSmsLineCampaignBadRequestProblem( + RootModel[ + SmsCampaignInvalidRequestProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem + ] +): + root: ( + SmsCampaignInvalidRequestProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] -class UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson( +class UnassignSmsLineCampaignForbiddenProblem( RootModel[ - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson1 - | UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem ] ): root: ( - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson1 - | UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem ) -class UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class UnassignSmsLineCampaignGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Organization SSO Not Found"] - type: Literal["https://photon.codes/docs/problems/organization-sso-not-found"] +class UnassignSmsLineCampaignInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ORGANIZATION_SSO_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Organization SSO Conflict"] - type: Literal["https://photon.codes/docs/problems/organization-sso-conflict"] +class UnassignSmsLineCampaignServiceUnavailableProblem( + RootModel[SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem] +): + root: SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem -class UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UnassignVoiceLineProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["ORGANIZATION_SSO_PRECONDITION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[412] - title: Literal["Organization SSO Precondition Failed"] - type: Literal["https://photon.codes/docs/problems/organization-sso-precondition-failed"] -class UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class UnassignVoiceLineProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class UnassignVoiceLineProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson1(BaseModel): +class UnavailableProjectSlug(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + available: Literal[False] + reason: Literal["reserved", "retired", "taken", "too_short"] | str + slug: str + suggestion: str | MISSING = MISSING -class UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson( +class UpdateAccountBadRequestProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson1 + HttpErrorProblem + | InvalidArgumentProblem + | IdempotencyKeyInvalidProblem + | IdempotencyKeyRequiredProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson1 + HttpErrorProblem + | InvalidArgumentProblem + | IdempotencyKeyInvalidProblem + | IdempotencyKeyRequiredProblem ) -class UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateAccountForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] -class UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class UpdateAccountGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class UpdateAccountInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] +class UpdateAgentProfileBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson( +class UpdateAgentProfileForbiddenProblem( RootModel[ - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson1 - | UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson1 - | UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectApiKeyRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - permissions: list[ - Literal[ - "events:read", - "events:write", - "platforms:read", - "platforms:write", - "project:read", - "project:write", - ] - | str - ] +class UpdateAgentProfileGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateProjectApiKeyResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateDefaultVoiceProfileConflictProblem( + RootModel[ + ProjectClosingProblem + | VoiceProfileDirectionConfiguredProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + ] +): + root: ( + ProjectClosingProblem + | VoiceProfileDirectionConfiguredProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem ) - apiKey: ApiKey -class UpdateProjectApiKeyResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateDefaultVoiceProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] -class UpdateProjectApiKeyResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] +class UpdateDefaultVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class UpdateDefaultVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateProjectApiKeyResponse400ApplicationProblemPlusJson3(BaseModel): +class UpdateDefaultVoiceProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] + expectedVersion: int + mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING + protocol: Literal["sip"] | MISSING = MISSING + + +class UpdateOrganizationSsoPolicyBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem + + +class UpdateOrganizationSsoPolicyForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class UpdateOrganizationSsoPolicyGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateProjectApiKeyResponse400ApplicationProblemPlusJson( +class UpdateOrganizationSsoPolicyInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class UpdateProjectApiKeyBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem + + +class UpdateProjectApiKeyForbiddenProblem( RootModel[ - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse400ApplicationProblemPlusJson2 - | UpdateProjectApiKeyResponse400ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse400ApplicationProblemPlusJson2 - | UpdateProjectApiKeyResponse400ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectApiKeyResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class UpdateProjectApiKeyNotFoundProblem(RootModel[ProjectNotFoundProblem | ApiKeyNotFoundProblem]): + root: ProjectNotFoundProblem | ApiKeyNotFoundProblem -class UpdateProjectApiKeyResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class UpdateProjectBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateProjectApiKeyResponse403ApplicationProblemPlusJson( +class UpdateProjectForbiddenProblem( RootModel[ - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateProjectApiKeyResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateProjectApiKeyResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectApiKeyResponse404ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] +class UpdateProjectGatewayTimeoutProblem(RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem]): + root: UpstreamTimeoutProblem | RequestTimeoutProblem -class UpdateProjectApiKeyResponse404ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateVoiceProfileConflictProblem( + RootModel[ + ProjectClosingProblem + | VoiceProfileDirectionConfiguredProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + ] +): + root: ( + ProjectClosingProblem + | VoiceProfileDirectionConfiguredProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem ) - code: Literal["API_KEY_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["API Key Not Found"] - type: Literal["https://photon.codes/docs/problems/api-key-not-found"] -class UpdateProjectApiKeyResponse404ApplicationProblemPlusJson( +class UpdateVoiceProfileForbiddenProblem( RootModel[ - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse404ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse404ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectApiKeyResponse409ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateVoiceProfileGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class UpdateVoiceProfileInboundConflictProblem( + RootModel[ + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + ] +): + root: ( + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem ) - code: Literal["API_KEY_REVOKED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["API Key Revoked"] - type: Literal["https://photon.codes/docs/problems/api-key-revoked"] -class UpdateProjectApiKeyResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateVoiceProfileInboundForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] -class UpdateProjectApiKeyResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateVoiceProfileInboundGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class UpdateVoiceProfileInboundInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class UpdateVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class UpdateVoiceProfileOutboundAuthenticationConflictProblem( + RootModel[ + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundNotConfiguredProblem + ] +): + root: ( + ProjectClosingProblem + | VoiceProfileVersionConflictProblem + | VoiceOutboundOperationPendingProblem + | VoiceOutboundNotConfiguredProblem ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] -class UpdateProjectApiKeyResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class UpdateVoiceProfileOutboundAuthenticationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] -class UpdateProjectApiKeyResponse422ApplicationProblemPlusJson2(BaseModel): +class UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem + + +class UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class UpdateVoiceProfileRequest(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] + expectedVersion: int + mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING + name: str | MISSING = MISSING + protocol: Literal["sip"] | MISSING = MISSING + + +class UpdateWebhookDestinationBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateProjectApiKeyResponse422ApplicationProblemPlusJson( +class UpdateWebhookDestinationForbiddenProblem( RootModel[ - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson1 - | UpdateProjectApiKeyResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectApiKeyResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class UpdateWebhookDestinationGatewayTimeoutProblem( + RootModel[RequestTimeoutProblem | UpstreamTimeoutProblem] +): + root: RequestTimeoutProblem | UpstreamTimeoutProblem -class UpdateProjectApiKeyResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class UploadAttachmentBadRequestProblem( + RootModel[HttpErrorProblem | InvalidAttachmentRequestProblem] +): + root: HttpErrorProblem | InvalidAttachmentRequestProblem + + +class UploadAttachmentConflictProblem( + RootModel[AttachmentConflictProblem | AttachmentUploadNotReadyProblem] +): + root: AttachmentConflictProblem | AttachmentUploadNotReadyProblem + + +class UploadAttachmentForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UpdateProjectRequestApplicationJson(BaseModel): +class UploadAttachmentGatewayTimeoutProblem( + RootModel[UpstreamTimeoutProblem | RequestTimeoutProblem] +): + root: UpstreamTimeoutProblem | RequestTimeoutProblem + + +class UploadAttachmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class UsageChargePricing(BaseModel): model_config = ConfigDict( extra="allow", ) - name: str + amount: str | None + fixedAmount: str | None + freeUnits: int | None + freeUnitsPerEvents: int | None + freeUnitsPerTotalAggregation: str | None + packageSize: int | None + perTransactionMaxAmount: str | None + perTransactionMinAmount: str | None + pricingGroupKeys: list[str] + rate: str | None + tiers: list[UsageChargeTier] -class UpdateProjectResponse200ApplicationJson(BaseModel): +class ValidationIssue(BaseModel): model_config = ConfigDict( extra="allow", ) - agentProfile: AgentProfile - billingInitialization: ( - Literal["pending", "retry_required", "completed", "unknown"] | str | MISSING - ) = MISSING - createdAt: str - createdByAccountId: str | None - createdByActorId: str | None - createdByActorKind: Literal["account", "service_identity"] | str | None - deletedAt: str | None - name: str - organizationId: str - projectId: str - slug: str - updatedAt: str + code: str + location: Literal["body", "cookie", "form", "header", "json", "param", "query"] | str + message: str + path: str -class UpdateProjectResponse400ApplicationProblemPlusJson1(BaseModel): +class VoiceProfileInboundConfiguration(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REQUIRED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Required"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-required"] + inbound: SipInboundConfiguration | None + profileVersion: int + +class WebhookApiVersion(RootModel[SelectableWebhookApiVersion | DeprecatedWebhookApiVersion]): + root: SelectableWebhookApiVersion | DeprecatedWebhookApiVersion -class UpdateProjectResponse400ApplicationProblemPlusJson2(BaseModel): + +class WebhookEventType(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_INVALID"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Idempotency Key Invalid"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-invalid"] + audience: Literal["agent", "infrastructure"] | str + description: str + schemaProfile: Literal["reader"] + schemaUrl: str = Field( + ..., + examples=[ + "/v1/projects/pho_prj_00000000000000000000000001/webhooks/event-types/message.received/schema?apiVersion=2026-07-01" + ], + ) + type: str -class UpdateProjectResponse400ApplicationProblemPlusJson( - RootModel[ - UpdateProjectResponse400ApplicationProblemPlusJson1 - | UpdateProjectResponse400ApplicationProblemPlusJson2 - ] -): - root: ( - UpdateProjectResponse400ApplicationProblemPlusJson1 - | UpdateProjectResponse400ApplicationProblemPlusJson2 - ) +class WebhookEventTypeList(RootModel[list[str]]): + root: list[str] -class UpdateProjectResponse403ApplicationProblemPlusJson1(BaseModel): +class WhatsappAccountPhoneNumber(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] + displayName: str | None + ownership: Literal["photon", "meta"] | str + phoneNumber: str + phoneNumberId: str -class UpdateProjectResponse403ApplicationProblemPlusJson2(BaseModel): +class WhatsappBusinessAccountRestriction(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + observedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + status: Literal["FLAGGED", "DISABLED", "REINSTATED", "UNKNOWN"] | str -class UpdateProjectResponse403ApplicationProblemPlusJson( +class AssignSmsLineCampaignBadRequestProblem( RootModel[ - UpdateProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateProjectResponse403ApplicationProblemPlusJson2 + SmsCampaignInvalidRequestProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem ] ): root: ( - UpdateProjectResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateProjectResponse403ApplicationProblemPlusJson2 + SmsCampaignInvalidRequestProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem ) -class UpdateProjectResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class AssignSmsLineCampaignForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem ) - code: Literal["PROJECT_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Project Not Found"] - type: Literal["https://photon.codes/docs/problems/project-not-found"] -class UpdateProjectResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Project Deleted"] - type: Literal["https://photon.codes/docs/problems/project-deleted"] +class AssignSmsLineCampaignInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateProjectResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class AssignVoiceLineProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] -class UpdateProjectResponse422ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class AssignVoiceLineProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateProjectResponse422ApplicationProblemPlusJson2(BaseModel): +class AuthorizedApplication(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + application: AuthorizedOAuthApplication + authorizationId: str + """ + Identifier of the user's authorization grant for this application. + """ + grantedScopes: list[str] + """ + OAuth scope slugs the user has granted to this application. + """ + oauthResource: str | None + """ + OAuth resource associated with the grant, or null when no resource is specified. + """ -class UpdateProjectResponse422ApplicationProblemPlusJson( +class BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem( RootModel[ - UpdateProjectResponse422ApplicationProblemPlusJson1 - | UpdateProjectResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateProjectResponse422ApplicationProblemPlusJson1 - | UpdateProjectResponse422ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateProjectResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateProjectResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class BeginInvitationSsoBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem -class UpdateProjectResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class BeginInvitationSsoForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem -class UpdateProjectResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] +class BeginInvitationSsoInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class BeginOrganizationAuthenticationBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem + + +class BeginOrganizationAuthenticationForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class BeginOrganizationAuthenticationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class BeginOrganizationClosureAuthenticationBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem + + +class BeginOrganizationClosureAuthenticationForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + +class BeginOrganizationClosureAuthenticationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateProjectResponse504ApplicationProblemPlusJson( - RootModel[ - UpdateProjectResponse504ApplicationProblemPlusJson1 - | UpdateProjectResponse504ApplicationProblemPlusJson2 - ] + +class BeginOrganizationSsoAdmissionBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] ): - root: ( - UpdateProjectResponse504ApplicationProblemPlusJson1 - | UpdateProjectResponse504ApplicationProblemPlusJson2 - ) + root: InvalidReturnToProblem | InvalidArgumentProblem -class Credentials11(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - password: str - username: str +class BeginOrganizationSsoAdmissionForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem -class UpdateVoiceProfileInboundRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials11 | None | MISSING = MISSING - destinationUri: str | MISSING = MISSING - expectedVersion: int +class BeginOrganizationSsoAdmissionInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Credentials12(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - username: str +class BillingOperation( + RootModel[PendingBillingOperation | SucceededBillingOperation | FailedBillingOperation] +): + root: PendingBillingOperation | SucceededBillingOperation | FailedBillingOperation + """ + Authoritative provisioning state. Poll the operation route while pending. + """ -class Inbound10(BaseModel): - model_config = ConfigDict( - extra="allow", +class CancelOperationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - credentials: Credentials12 | None - destinationUri: str -class UpdateVoiceProfileInboundResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound10 | None - profileVersion: int +class CancelOperationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class CancelSubscriptionBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] +class CancelSubscriptionConflictProblem( + RootModel[FailedPreconditionProblem | IdempotencyRequestInProgressProblem] +): + root: FailedPreconditionProblem | IdempotencyRequestInProgressProblem -class UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson( +class CancelSubscriptionForbiddenProblem( RootModel[ - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] +class CancelSubscriptionInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] +class CancelSubscriptionServiceUnavailableProblem( + RootModel[IdempotencyUnavailableProblem | UpstreamUnavailableProblem] +): + root: IdempotencyUnavailableProblem | UpstreamUnavailableProblem -class UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] +class ChangePlanBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] +class ChangePlanConflictProblem( + RootModel[FailedPreconditionProblem | IdempotencyRequestInProgressProblem] +): + root: FailedPreconditionProblem | IdempotencyRequestInProgressProblem -class UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson( +class ChangePlanForbiddenProblem( RootModel[ - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class ChangePlanInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] +class ChangePlanServiceUnavailableProblem( + RootModel[IdempotencyUnavailableProblem | UpstreamUnavailableProblem] +): + root: IdempotencyUnavailableProblem | UpstreamUnavailableProblem -class UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CheckProjectSlugAvailabilityForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson( +class CheckProjectSlugAvailabilityResponse( + RootModel[AvailableProjectSlug | UnavailableProjectSlug] +): + root: AvailableProjectSlug | UnavailableProjectSlug + + +class CommitAccountProfilePictureBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem + + +class CommitAccountProfilePictureForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class CommitAccountProfilePictureInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class CommitAgentProfileAvatarBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CommitAgentProfileAvatarForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class ConfigureVoiceProfileOutboundBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson( +class ConfigureVoiceProfileOutboundForbiddenProblem( RootModel[ - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class Authentication10(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - algorithm: Literal["sha-256", "md5"] | str +class ConfigureVoiceProfileOutboundInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ConfirmAccountPhoneVerificationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - authentication: Authentication10 - expectedVersion: int -class Authentication11(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - algorithm: Literal["sha-256", "md5"] | str - previousPasswordValidUntil: str | None - username: str - validFrom: str +class ConfirmAccountPhoneVerificationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Connection9(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str +class ConnectEmailDomainBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class Outbound9(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication11 - connection: Connection9 +class ConnectEmailDomainConflictProblem( + RootModel[ + ProjectClosingProblem | EmailDomainAlreadyConnectedProblem | EmailDomainCapExceededProblem + ] +): + root: ProjectClosingProblem | EmailDomainAlreadyConnectedProblem | EmailDomainCapExceededProblem -class UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class ConnectEmailDomainForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - outbound: Outbound9 - profileVersion: int -class UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class ConnectEmailDomainInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class ConnectTelegramBotBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class ConnectTelegramBotForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] -class UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson( +class ConnectTelegramBotInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class ConnectWhatsappBusinessBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class ConnectWhatsappBusinessForbiddenProblem( RootModel[ - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] +class ConnectWhatsappBusinessInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CountProjectsForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] -class UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateAccountProfilePictureUploadForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] -class UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] +class CreateAccountProfilePictureUploadInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_OUTBOUND_NOT_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Not Configured"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-not-configured"] +class CreateAccountServiceKeyBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem -class UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson( +class CreateAccountServiceKeyForbiddenProblem( RootModel[ - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson3 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson3 - | UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] - - -class UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] +class CreateAccountServiceKeyInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateAgentProfileAvatarUploadForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson( +class CreateDefaultVoiceProfileForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class CreateDefaultVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class CreateOrganizationPaymentMethodCheckoutBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateOrganizationPaymentMethodCheckoutForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] +class CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class CreateOrganizationSetupIntentBadRequestProblem( + RootModel[InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson( +class CreateOrganizationSetupIntentForbiddenProblem( RootModel[ - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - expectedVersion: int - mediaEncryption: Literal["auto", "srtp"] | str | MISSING = MISSING - name: str | MISSING = MISSING - protocol: Literal["sip"] | MISSING = MISSING +class CreateOrganizationSetupIntentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Inbound11(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - credentials: Credentials12 | None - destinationUri: str +class CreateOrganizationSsoPortalLinkBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem -class Connection10(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - endpoints: list[Endpoint] - realm: str +class CreateOrganizationSsoPortalLinkForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem -class Outbound10(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - authentication: Authentication11 - connection: Connection10 +class CreateOrganizationSsoPortalLinkInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class Configuration7(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - inbound: Inbound11 | None - outbound: Outbound10 | None +class CreateProjectApiKeyBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateVoiceProfileResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateProjectApiKeyForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - configuration: Configuration7 - createdAt: str - isDefault: bool - lineCount: int - mediaEncryption: Literal["auto", "srtp"] | str - name: str - profileId: str - projectId: str - protocol: Literal["sip"] - updatedAt: str - version: int -class UpdateVoiceProfileResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class CreateProjectBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateVoiceProfileResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateProjectForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] -class UpdateVoiceProfileResponse403ApplicationProblemPlusJson( +class CreateSharedLineAssignmentBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class CreateSharedLineAssignmentConflictProblem( RootModel[ - UpdateVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | ImessageModeDedicatedProblem + | SharedLineCapExceededProblem + | AssignmentExistsProblem ] ): root: ( - UpdateVoiceProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateVoiceProfileResponse403ApplicationProblemPlusJson2 + ProjectClosingProblem + | ImessageModeDedicatedProblem + | SharedLineCapExceededProblem + | AssignmentExistsProblem ) -class UpdateVoiceProfileResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateSharedLineAssignmentForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_PROFILE_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Voice Profile Not Found"] - type: Literal["https://photon.codes/docs/problems/voice-profile-not-found"] -class UpdateVoiceProfileResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["PROJECT_CLOSING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Project Is Closing"] - type: Literal["https://photon.codes/docs/problems/project-closing"] +class CreateSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateVoiceProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_PROFILE_DIRECTION_CONFIGURED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Direction Configured"] - type: Literal["https://photon.codes/docs/problems/voice-profile-direction-configured"] -class UpdateVoiceProfileResponse409ApplicationProblemPlusJson3(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VOICE_PROFILE_VERSION_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Profile Version Conflict"] - type: Literal["https://photon.codes/docs/problems/voice-profile-version-conflict"] +class CreateVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class CreateWebhookDestinationBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem -class UpdateVoiceProfileResponse409ApplicationProblemPlusJson4(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateWebhookDestinationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VOICE_OUTBOUND_OPERATION_PENDING"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Voice Outbound Operation Pending"] - type: Literal["https://photon.codes/docs/problems/voice-outbound-operation-pending"] -class UpdateVoiceProfileResponse409ApplicationProblemPlusJson( +class CreateWhatsappSharedLineAssignmentBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem + + +class CreateWhatsappSharedLineAssignmentForbiddenProblem( RootModel[ - UpdateVoiceProfileResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson3 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileResponse409ApplicationProblemPlusJson1 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson2 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson3 - | UpdateVoiceProfileResponse409ApplicationProblemPlusJson4 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateVoiceProfileResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] +class CreateWhatsappSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileResponse429ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["RATE_LIMITED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[429] - title: Literal["Too Many Requests"] - type: Literal["https://photon.codes/docs/problems/rate-limited"] +class CreateWhatsappVoipSenderBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileResponse500ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class CreateWhatsappVoipSenderForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] -class UpdateVoiceProfileResponse500ApplicationProblemPlusJson( +class CreateWhatsappVoipSenderInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class DeleteAccountForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 | UpdateVoiceProfileResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): - root: PhotonProblemINTERNALERROR500 | UpdateVoiceProfileResponse500ApplicationProblemPlusJson1 + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) -class UpdateVoiceProfileResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class DeleteAccountInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateVoiceProfileResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class DeleteProjectBadRequestProblem( + RootModel[IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem] +): + root: IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem -class UpdateVoiceProfileResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class DeleteProjectForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UpdateVoiceProfileResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class DeleteVoiceProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] -class UpdateVoiceProfileResponse504ApplicationProblemPlusJson( +class DeleteVoiceProfileInboundForbiddenProblem( RootModel[ - UpdateVoiceProfileResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UpdateVoiceProfileResponse504ApplicationProblemPlusJson1 - | UpdateVoiceProfileResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UpdateWebhookDestinationRequestApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - description: str | None | MISSING = MISSING - enabledEvents: PrefixItems[Literal["*"]] | list[str] | MISSING = MISSING - name: str | MISSING = MISSING - status: Literal["enabled", "disabled"] | str | MISSING = MISSING - url: str | MISSING = MISSING - """ - HTTPS URL without credentials or a fragment. - """ +class DeleteVoiceProfileInboundInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateWebhookDestinationResponse200ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - apiVersion: str - createdAt: str - deletedAt: str | None - description: str | None - destinationId: str - enabledEvents: PrefixItems[Literal["*"]] | list[str] - name: str - projectId: str - status: Literal["enabled", "disabled"] | str - updatedAt: str - url: str +class DeleteVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateWebhookDestinationResponse400ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class DeleteVoiceProfileOutboundForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_ARGUMENT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Argument"] - type: Literal["https://photon.codes/docs/problems/invalid-argument"] -class UpdateWebhookDestinationResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class DeleteVoiceProfileOutboundInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class DeleteWebhookDestinationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] -class UpdateWebhookDestinationResponse403ApplicationProblemPlusJson2(BaseModel): +class DeprecatedWebhookEventCatalog(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] + apiVersion: str + contractNamespace: Literal["@photon-hq/contracts"] + events: list[WebhookEventType] + packageVersion: str + retirement: WebhookApiVersionRetirement + selectable: Literal[False] + status: Literal["deprecated"] + successor: str | None -class UpdateWebhookDestinationResponse403ApplicationProblemPlusJson( +class DisableOrganizationSsoBadRequestProblem( RootModel[ - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateWebhookDestinationResponse403ApplicationProblemPlusJson2 + InvalidReturnToProblem + | InvalidArgumentProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem ] ): root: ( - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UpdateWebhookDestinationResponse403ApplicationProblemPlusJson2 + InvalidReturnToProblem + | InvalidArgumentProblem + | IdempotencyKeyRequiredProblem + | IdempotencyKeyInvalidProblem ) -class UpdateWebhookDestinationResponse404ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_NOT_FOUND"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[404] - title: Literal["Webhook Destination Not Found"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-not-found"] +class DisableOrganizationSsoForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem -class UpdateWebhookDestinationResponse410ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["WEBHOOK_DESTINATION_DELETED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[410] - title: Literal["Webhook Destination Deleted"] - type: Literal["https://photon.codes/docs/problems/webhook-destination-deleted"] +class DisableOrganizationSsoInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateWebhookDestinationResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["IDEMPOTENCY_KEY_REUSED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Idempotency Key Reused"] - type: Literal["https://photon.codes/docs/problems/idempotency-key-reused"] +class DisconnectWhatsappBusinessAccountBadRequestProblem( + RootModel[IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem] +): + root: IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem -class UpdateWebhookDestinationResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class DisconnectWhatsappBusinessAccountForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] -class UpdateWebhookDestinationResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] +class DisconnectWhatsappBusinessAccountInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UpdateWebhookDestinationResponse504ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class DownloadAttachmentForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] -class UploadAttachmentRequestMultipartRelated(RootModel[bytes]): - root: bytes +class DownloadAttachmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UploadAttachmentResponse200ApplicationJson(BaseModel): +class FixedCharge(BaseModel): model_config = ConfigDict( extra="allow", ) - contentType: str - createdAt: str - filename: str | MISSING = MISSING - id: str - metadata: dict[str, Any] | MISSING = MISSING - projectId: str - sizeBytes: int - updatedAt: str + chargeModel: Literal["graduated", "standard", "volume"] | str + displayName: str + fixedChargeCode: str + payInAdvance: bool + pricing: FixedChargePricing + prorated: bool + quantity: int -class UploadAttachmentResponse201ApplicationJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetAccountForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - contentType: str - createdAt: str - filename: str | MISSING = MISSING - id: str - metadata: dict[str, Any] | MISSING = MISSING - projectId: str - sizeBytes: int - updatedAt: str -class UploadAttachmentResponse400ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["HTTP_ERROR"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Request Failed"] - type: Literal["https://photon.codes/docs/problems/http-error"] +class GetAccountInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UploadAttachmentResponse400ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetAgentProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["INVALID_ATTACHMENT_REQUEST"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[400] - title: Literal["Invalid Attachment Request"] - type: Literal["https://photon.codes/docs/problems/invalid-attachment-request"] -class UploadAttachmentResponse400ApplicationProblemPlusJson( +class GetAttachmentForbiddenProblem( RootModel[ - UploadAttachmentResponse400ApplicationProblemPlusJson1 - | UploadAttachmentResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UploadAttachmentResponse400ApplicationProblemPlusJson1 - | UploadAttachmentResponse400ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UploadAttachmentResponse403ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["FORBIDDEN"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Forbidden"] - type: Literal["https://photon.codes/docs/problems/forbidden"] +class GetAttachmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UploadAttachmentResponse403ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetBillingOperationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["RESOURCE_MISMATCH"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[403] - title: Literal["Resource Mismatch"] - type: Literal["https://photon.codes/docs/problems/resource-mismatch"] -class UploadAttachmentResponse403ApplicationProblemPlusJson( +class GetBillingOperationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetBillingOverviewForbiddenProblem( RootModel[ - UploadAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UploadAttachmentResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UploadAttachmentResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | UploadAttachmentResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UploadAttachmentResponse409ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["ATTACHMENT_CONFLICT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Attachment Conflict"] - type: Literal["https://photon.codes/docs/problems/attachment-conflict"] +class GetBillingOverviewInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UploadAttachmentResponse409ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetDefaultVoiceProfileForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["ATTACHMENT_UPLOAD_NOT_READY"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[409] - title: Literal["Attachment Upload Not Ready"] - type: Literal["https://photon.codes/docs/problems/attachment-upload-not-ready"] -class UploadAttachmentResponse409ApplicationProblemPlusJson( +class GetDefaultVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetMessageMetricsBackfillForbiddenProblem( RootModel[ - UploadAttachmentResponse409ApplicationProblemPlusJson1 - | UploadAttachmentResponse409ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UploadAttachmentResponse409ApplicationProblemPlusJson1 - | UploadAttachmentResponse409ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class UploadAttachmentResponse413ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetMessageMetricsSqlSchemaForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["PAYLOAD_TOO_LARGE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[413] - title: Literal["Payload Too Large"] - type: Literal["https://photon.codes/docs/problems/payload-too-large"] -class UploadAttachmentResponse422ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetOperationForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["VALIDATION_FAILED"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - issues: list[Issue] - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[422] - title: Literal["Request Validation Failed"] - type: Literal["https://photon.codes/docs/problems/validation-failed"] -class UploadAttachmentResponse500ApplicationProblemPlusJson1(BaseModel): +class GetOperationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetOperationResponse(BaseModel): model_config = ConfigDict( extra="allow", ) - code: Literal["INVALID_AUTH_CONTEXT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[500] - title: Literal["Invalid Authentication Context"] - type: Literal["https://photon.codes/docs/problems/invalid-auth-context"] + operation: Operation + resource: Resource | MISSING = MISSING -class UploadAttachmentResponse500ApplicationProblemPlusJson( +class GetOrganizationBillingOverviewForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 | UploadAttachmentResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): - root: PhotonProblemINTERNALERROR500 | UploadAttachmentResponse500ApplicationProblemPlusJson1 + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) -class UploadAttachmentResponse502ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", - ) - code: Literal["UPSTREAM_FAILURE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[502] - title: Literal["Upstream Service Failure"] - type: Literal["https://photon.codes/docs/problems/upstream-failure"] +class GetOrganizationBillingOverviewInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class UploadAttachmentResponse503ApplicationProblemPlusJson(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetOrganizationConnectionStatusForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class GetOrganizationConnectionStatusInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetOrganizationPaymentMethodForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_UNAVAILABLE"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[503] - title: Literal["Upstream Service Unavailable"] - type: Literal["https://photon.codes/docs/problems/upstream-unavailable"] -class UploadAttachmentResponse504ApplicationProblemPlusJson1(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetOrganizationPaymentMethodInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetOrganizationSsoConfigurationBadRequestProblem( + RootModel[InvalidReturnToProblem | InvalidArgumentProblem] +): + root: InvalidReturnToProblem | InvalidArgumentProblem + + +class GetOrganizationSsoConfigurationForbiddenProblem( + RootModel[ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem] +): + root: ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem + + +class GetOrganizationSsoConfigurationInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetProjectClosureStatusForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["UPSTREAM_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Upstream Service Timeout"] - type: Literal["https://photon.codes/docs/problems/upstream-timeout"] -class UploadAttachmentResponse504ApplicationProblemPlusJson2(BaseModel): - model_config = ConfigDict( - extra="allow", +class GetProjectForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) - code: Literal["REQUEST_TIMEOUT"] - detail: str | MISSING = MISSING - instance: str | MISSING = MISSING - remediation: Any | MISSING = MISSING - requestId: str | MISSING = MISSING - status: Literal[504] - title: Literal["Request Timeout"] - type: Literal["https://photon.codes/docs/problems/request-timeout"] -class UploadAttachmentResponse504ApplicationProblemPlusJson( +class GetProjectImessagePlatformForbiddenProblem( RootModel[ - UploadAttachmentResponse504ApplicationProblemPlusJson1 - | UploadAttachmentResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - UploadAttachmentResponse504ApplicationProblemPlusJson1 - | UploadAttachmentResponse504ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class FieldSchema0( +class GetProjectImessagePlatformInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetProjectWhatsappPlatformForbiddenProblem( RootModel[ - Optional[ - Union[ - str, - int, - float, - bool, - list[Optional["FieldSchema0"]], - dict[str, Optional["FieldSchema0"]], - ] - ] + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): - root: Optional[ - Union[ - str, - int, - float, - bool, - list[Optional["FieldSchema0"]], - dict[str, Optional["FieldSchema0"]], - ] + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class GetProjectWhatsappPlatformInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetResourceForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] +): + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) + + +class GetResourceInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem -class AssignSmsLineCampaignResponse403ApplicationProblemPlusJson( +class GetSharedLineAssignmentForbiddenProblem( RootModel[ - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | AssignSmsLineCampaignResponse403ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse403ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | AssignSmsLineCampaignResponse403ApplicationProblemPlusJson2 - | AssignSmsLineCampaignResponse403ApplicationProblemPlusJson3 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class AssignSmsLineCampaignResponse500ApplicationProblemPlusJson( +class GetSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetSmsLineCampaignAssignmentForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 | AssignSmsLineCampaignResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 | AssignSmsLineCampaignResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + | SmsCampaignOrganizationMismatchProblem ) -class AssignVoiceLineProfileResponse403ApplicationProblemPlusJson( +class GetSmsLineCampaignAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetVoiceLineProfileAssignmentForbiddenProblem( RootModel[ - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | AssignVoiceLineProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson1 - | AuthorizationProblemINSUFFICIENTSCOPE403 - | AssignVoiceLineProfileResponse403ApplicationProblemPlusJson2 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class AssignVoiceLineProfileResponse500ApplicationProblemPlusJson( +class GetVoiceLineProfileAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetVoiceProfileForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 | AssignVoiceLineProfileResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 | AssignVoiceLineProfileResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson( +class GetVoiceProfileInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] +): + root: InternalErrorProblem | InvalidAuthContextProblem + + +class GetWebhookDestinationForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class BeginInvitationSsoResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class GetWebhookEventSchemaForbiddenProblem( + RootModel[ + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) -class BeginInvitationSsoResponse500ApplicationProblemPlusJson( +class GetWhatsappBusinessAccountForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 | BeginInvitationSsoResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): - root: PhotonProblemINTERNALERROR500 | BeginInvitationSsoResponse500ApplicationProblemPlusJson1 + root: ( + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem + ) -class BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class GetWhatsappBusinessAccountInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: InternalErrorProblem | InvalidAuthContextProblem -class BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson( +class GetWhatsappBusinessVerificationCodeForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class GetWhatsappBusinessVerificationCodeInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: InternalErrorProblem | InvalidAuthContextProblem -class BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson( +class GetWhatsappSharedLineAssignmentForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class GetWhatsappSharedLineAssignmentInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: InternalErrorProblem | InvalidAuthContextProblem -class BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson( +class GetWhatsappSignupConfigForbiddenProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson1 + ForbiddenProblem + | InsufficientScopeProblem + | OrganizationSsoRequiredProblem + | ResourceMismatchProblem ) -class CancelOperationResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | CancelOperationResponse500ApplicationProblemPlusJson1] +class GetWhatsappSignupConfigInternalServerErrorProblem( + RootModel[InternalErrorProblem | InvalidAuthContextProblem] ): - root: PhotonProblemINTERNALERROR500 | CancelOperationResponse500ApplicationProblemPlusJson1 + root: InternalErrorProblem | InvalidAuthContextProblem -class CancelSubscriptionResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | CancelSubscriptionResponse500ApplicationProblemPlusJson1 - ] -): - root: PhotonProblemINTERNALERROR500 | CancelSubscriptionResponse500ApplicationProblemPlusJson1 +class Invoice(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + currency: str + """ + ISO currency code. + """ + invoiceId: str + """ + Invoice id. + """ + issuedAt: str | None + """ + Issue date, ISO 8601. + """ + kind: Literal["subscription", "one_off", "credit"] | str + """ + What produced the invoice. + """ + number: str + """ + Human invoice number. + """ + paymentStatus: Literal["pending", "succeeded", "failed"] | str + """ + Provider-neutral payment status. + """ + pdfUrl: str | None + """ + Downloadable PDF link. + """ + subjects: list[ProjectInvoiceSubject | OrganizationInvoiceSubject] + """ + Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. + """ + totalCents: int + """ + Invoice total in cents. + """ -class ChangePlanResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ChangePlanResponse500ApplicationProblemPlusJson1] -): - root: PhotonProblemINTERNALERROR500 | ChangePlanResponse500ApplicationProblemPlusJson1 +class ListAuthorizedApplicationsResponse(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + authorizedApplications: list[AuthorizedApplication] + """ + One page of applications authorized by the authenticated user. + """ + listMetadata: ListAuthorizedApplicationsResponseListMetadata -class CommitAccountProfilePictureResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CommitAccountProfilePictureResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CommitAccountProfilePictureResponse500ApplicationProblemPlusJson1 +class ListInvoicesResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + invoices: list[Invoice] -class ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson1 +class ListWebhookApiVersionsResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + apiVersions: list[SelectableWebhookApiVersion | DeprecatedWebhookApiVersion] + contractNamespace: Literal["@photon-hq/contracts"] + packageVersion: str -class ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson1 +class ListWhatsappAccountPhoneNumbersResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + phoneNumbers: list[WhatsappAccountPhoneNumber] + wabaId: str -class ConnectEmailDomainResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ConnectEmailDomainResponse500ApplicationProblemPlusJson1 +class MessageMetricsJsonCatalog(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + commonPaths: list[MessageMetricsJsonPath] + discriminators: list[ + MessageMetricsJsonPathDiscriminator | MessageMetricsJsonOneOfPathsDiscriminator ] -): - root: PhotonProblemINTERNALERROR500 | ConnectEmailDomainResponse500ApplicationProblemPlusJson1 + platforms: list[MessageMetricsPlatformJsonPaths] + resource: MessageMetricsJsonResource -class ConnectTelegramBotResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ConnectTelegramBotResponse500ApplicationProblemPlusJson1 - ] -): - root: PhotonProblemINTERNALERROR500 | ConnectTelegramBotResponse500ApplicationProblemPlusJson1 +class MessageMetricsSqlColumn(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + description: str + json_: MessageMetricsJsonCatalog | MISSING = Field(MISSING, alias="json") + name: str + type: str -class ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson1 +class MessageMetricsSqlTable(BaseModel): + model_config = ConfigDict( + extra="allow", ) + columns: list[MessageMetricsSqlColumn] + currentState: str + description: str + name: Literal["message_events"] -class CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson1 +class OrganizationConnectionStatus(BaseModel): + model_config = ConfigDict( + extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + membership: OrganizationConnectionStatusMembership + organization: OrganizationConnectionStatusOrganization + organizationId: str + synchronized: bool -class CreateAccountServiceKeyResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateAccountServiceKeyResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateAccountServiceKeyResponse500ApplicationProblemPlusJson1 +class OrganizationSsoConfiguration(BaseModel): + model_config = ConfigDict( + extra="allow", ) + __annotations__ = { + "__pydantic_extra__": dict[str, Any], + } + connectionChangedAt: str | None + connectionGeneration: str + connectionState: Literal["not_configured", "configuring", "ready", "error"] | str + connectionType: str | MISSING = MISSING + desiredSsoEnforced: bool + domains: list[OrganizationSsoDomain] | MISSING = MISSING + organizationId: str + policySyncStatus: Literal["synced", "manual_required"] | str + providerAvailable: bool | MISSING = MISSING + ssoEnforced: bool + ssoJitEnabled: bool + version: str -class CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 +class OrganizationSubscription(BaseModel): + model_config = ConfigDict( + extra="allow", ) + cancelsAt: str | None + """ + When the subscription will end, ISO 8601. + """ + currentPeriodEnd: str | None + """ + End of the current billing period, ISO 8601. + """ + entitlements: list[OrganizationSubscriptionEntitlement] + fixedCharges: list[FixedCharge] + """ + Fixed charges defined by the organization's current plan. Quantity is the plan default. + """ + planCode: str + """ + The organization's plan; display only. + """ + status: Literal["active", "past_due", "terminated"] | str + """ + State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. + """ -class CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson1 +class ProjectSubscription(BaseModel): + model_config = ConfigDict( + extra="allow", ) + cancelsAt: str | None + """ + When the subscription will end instead of renewing, ISO 8601. + """ + category: str + """ + Category slug, e.g. analytics or messaging. + """ + categoryDisplayName: str | None | MISSING = MISSING + """ + Display name for the subscription category; absent or null when unconfigured. + """ + currentPeriodEnd: str | None + """ + End of the current billing period, ISO 8601. + """ + entitlements: list[ProjectSubscriptionEntitlement] + """ + Feature gates granted by this category's plan. + """ + fixedCharges: list[FixedCharge] + """ + Fixed charges defined by this category's current plan. Quantity is the plan default. + """ + planCode: str + """ + This category's plan; display only. + """ + status: Literal["active", "past_due", "terminated"] | str + """ + State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. + """ -class CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson1 +class SelectableWebhookEventCatalog(BaseModel): + model_config = ConfigDict( + extra="allow", ) + apiVersion: str + contractNamespace: Literal["@photon-hq/contracts"] + events: list[WebhookEventType] + packageVersion: str + retirement: WebhookApiVersionRetirement | None + selectable: Literal[True] + status: Literal["preview", "latest", "maintain"] | str + successor: str | None -class CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] -): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 +class SipOutboundConfiguration(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + authentication: SipOutboundAuthentication + connection: SipOutboundConnection -class CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson1 +class UpdateVoiceProfileOutboundAuthenticationResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + outbound: SipOutboundConfiguration + profileVersion: int -class CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson1 +class UsageChargeFilter(BaseModel): + model_config = ConfigDict( + extra="allow", ) + displayName: str | None + pricing: UsageChargePricing + values: list[UsageChargeFilterValue] -class CreateVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | CreateVoiceProfileResponse500ApplicationProblemPlusJson1 - ] -): - root: PhotonProblemINTERNALERROR500 | CreateVoiceProfileResponse500ApplicationProblemPlusJson1 +class ValidationFailedProblem(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + __annotations__ = { + "__pydantic_extra__": dict[str, JsonValue | None], + } + code: Literal["VALIDATION_FAILED"] + detail: str | MISSING = MISSING + instance: str | MISSING = MISSING + issues: list[ValidationIssue] + requestId: str | MISSING = MISSING + status: Literal[422] + title: Literal["Request Validation Failed"] + type: Literal["https://photon.codes/docs/problems/validation-failed"] -class CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 +class VoiceProfileConfiguration(BaseModel): + model_config = ConfigDict( + extra="allow", ) + inbound: SipInboundConfiguration | None + outbound: SipOutboundConfiguration | None -class CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson1 +class WebhookEventSelection(RootModel[PrefixItems[Literal["*"]] | list[str]]): + root: PrefixItems[Literal["*"]] | list[str] + + +class WhatsappBusinessAccount(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + accountName: str | None + alerts: list[WhatsappBusinessAccountAlert] + businessId: str + businessName: str | None + connectedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + maxPhoneNumbersPerBusiness: int | MISSING = MISSING + outboundCapacity: ( + Literal["50", "250", "1000", "2000", "10000", "100000", "UNLIMITED", "UNTIERED", "UNKNOWN"] + | str ) + restriction: WhatsappBusinessAccountRestriction | None + reviewStatus: Literal["PENDING", "APPROVED", "REJECTED", "UNKNOWN"] | str + senderCount: int + subscribedAt: str | MISSING = Field(MISSING, examples=["2026-01-01T00:00:00.000Z"]) + wabaId: str -class DeleteAccountResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | DeleteAccountResponse500ApplicationProblemPlusJson1] +class CancelSubscriptionUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | DeleteAccountResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson1 - ] +class ChangePlanUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson1 - ] +class CommitAccountProfilePictureUnprocessableEntityProblem( + RootModel[IdempotencyKeyReusedProblem | ValidationFailedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson1 - ) + root: IdempotencyKeyReusedProblem | ValidationFailedProblem -class DeleteVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | DeleteVoiceProfileResponse500ApplicationProblemPlusJson1 - ] +class CommitAgentProfileAvatarUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | DeleteVoiceProfileResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1 +class ConfigureVoiceProfileOutboundResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + outbound: SipOutboundConfiguration + password: str | None + profileVersion: int -class DownloadAttachmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | DownloadAttachmentResponse500ApplicationProblemPlusJson1 - ] +class ConfigureVoiceProfileOutboundUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | DownloadAttachmentResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetAccountResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | GetAccountResponse500ApplicationProblemPlusJson1] +class ConnectEmailDomainUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetAccountResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetAttachmentResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | GetAttachmentResponse500ApplicationProblemPlusJson1] +class ConnectTelegramBotUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetAttachmentResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetBillingOperationResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | GetBillingOperationResponse500ApplicationProblemPlusJson1 - ] +class ConnectWhatsappBusinessUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetBillingOperationResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetBillingOverviewResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | GetBillingOverviewResponse500ApplicationProblemPlusJson1 - ] +class CreateAccountServiceKeyUnprocessableEntityProblem( + RootModel[IdempotencyKeyReusedProblem | ValidationFailedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetBillingOverviewResponse500ApplicationProblemPlusJson1 + root: IdempotencyKeyReusedProblem | ValidationFailedProblem -class GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 - ] +class CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 | GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOperationResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | GetOperationResponse500ApplicationProblemPlusJson1] +class CreateOrganizationSetupIntentUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetOperationResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson1 - ] +class CreateProjectApiKeyUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class CreateProjectUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson1 - ] +class CreateSharedLineAssignmentUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson1 +class CreateWebhookDestinationRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + apiVersion: str + description: str | MISSING = MISSING + enabledEvents: PrefixItems[Literal["*"]] | list[str] + name: str + status: Literal["enabled", "disabled"] | str = "enabled" + url: str + """ + HTTPS URL without credentials or a fragment. + """ -class GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class CreateWebhookDestinationUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson1 - ] +class CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetProjectImessagePlatformResponse500ApplicationProblemPlusJson( +class CreateWhatsappVoipSenderUnprocessableEntityProblem( RootModel[ - PhotonProblemINTERNALERROR500 - | GetProjectImessagePlatformResponse500ApplicationProblemPlusJson1 + ValidationFailedProblem + | WhatsappDisplayNameUnavailableProblem + | IdempotencyKeyReusedProblem ] ): root: ( - PhotonProblemINTERNALERROR500 - | GetProjectImessagePlatformResponse500ApplicationProblemPlusJson1 + ValidationFailedProblem + | WhatsappDisplayNameUnavailableProblem + | IdempotencyKeyReusedProblem ) -class GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson1 - ] +class DeleteProjectUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetResourceResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | GetResourceResponse500ApplicationProblemPlusJson1] +class DisableOrganizationSsoUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | GetResourceResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] +class DisconnectWhatsappBusinessAccountUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetSharedLineAssignmentResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem + + +class GetBillingOverviewResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + entitlementsVersion: int + """ + Bumps on every entitlement change in any category. + """ + subscriptions: list[ProjectSubscription] + """ + One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. + """ + usage: list[MeteredUsage] + """ + Current-period metered usage, priced. + """ -class GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson1 +class GetMessageMetricsSqlSchemaResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + capabilities: MessageMetricsSqlCapabilities + dialect: str + limits: MessageMetricsSqlLimits + projectScoped: Literal[True] + tables: list[MessageMetricsSqlTable] + version: str -class GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson1 +class GetOrganizationBillingOverviewResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + entitlementsVersion: int + """ + Bumps on every entitlement change for the organization. + """ + subscription: OrganizationSubscription | None + """ + The organization-owned subscription, or null when billing was never opened or has ended. + """ -class GetVoiceProfileResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | GetVoiceProfileResponse500ApplicationProblemPlusJson1] +class GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | WhatsappVerificationWindowExpiredProblem] ): - root: PhotonProblemINTERNALERROR500 | GetVoiceProfileResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | WhatsappVerificationWindowExpiredProblem -class GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson( - RootModel[dict[str, FieldSchema0 | None]] +class ListWebhookEventTypesResponse( + RootModel[SelectableWebhookEventCatalog | DeprecatedWebhookEventCatalog] ): - root: dict[str, FieldSchema0 | None] + root: SelectableWebhookEventCatalog | DeprecatedWebhookEventCatalog -class GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1 - ] +class ProvisionImessageDedicatedLineUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson1 - ] +class ProvisionWhatsappDedicatedLineUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ] +class PurchaseSmsNumberUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson1 - ) + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson1 - ] +class QueryMessageMetricsUnprocessableEntityProblem( + RootModel[QueryResourceLimitProblem | ValidationFailedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson1 - ) + root: QueryResourceLimitProblem | ValidationFailedProblem -class ListAccountServiceKeysResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListAccountServiceKeysResponse500ApplicationProblemPlusJson1 - ] +class ResetAccountProfilePictureUnprocessableEntityProblem( + RootModel[IdempotencyKeyReusedProblem | ValidationFailedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 | ListAccountServiceKeysResponse500ApplicationProblemPlusJson1 - ) + root: IdempotencyKeyReusedProblem | ValidationFailedProblem -class ListAttachmentsResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ListAttachmentsResponse500ApplicationProblemPlusJson1] +class ResetAgentProfileAvatarUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListAttachmentsResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson( - RootModel[PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403] +class ResumeSubscriptionUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemFORBIDDEN403 | AuthorizationProblemINSUFFICIENTSCOPE403 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson1 - ] +class RevokeAccountServiceKeyUnprocessableEntityProblem( + RootModel[IdempotencyKeyReusedProblem | ValidationFailedProblem] ): - root: ( - PhotonProblemINTERNALERROR500 - | ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson1 - ) + root: IdempotencyKeyReusedProblem | ValidationFailedProblem -class ListBillingPlansResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListBillingPlansResponse500ApplicationProblemPlusJson1 - ] +class RevokeProjectApiKeyUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListBillingPlansResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListInvoicesResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ListInvoicesResponse500ApplicationProblemPlusJson1] +class RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListInvoicesResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListNumberAreaCodesResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListNumberAreaCodesResponse500ApplicationProblemPlusJson1 - ] +class RotateWebhookSigningSecretUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListNumberAreaCodesResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListNumberCountriesResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListNumberCountriesResponse500ApplicationProblemPlusJson1 - ] +class UpdateAccountUnprocessableEntityProblem( + RootModel[IdempotencyKeyReusedProblem | ValidationFailedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListNumberCountriesResponse500ApplicationProblemPlusJson1 + root: IdempotencyKeyReusedProblem | ValidationFailedProblem -class ListOperationsResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ListOperationsResponse500ApplicationProblemPlusJson1] +class UpdateAgentProfileUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListOperationsResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListProjectPlatformsResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListProjectPlatformsResponse500ApplicationProblemPlusJson1 - ] +class UpdateProjectApiKeyUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListProjectPlatformsResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListResourcesResponse500ApplicationProblemPlusJson( - RootModel[PhotonProblemINTERNALERROR500 | ListResourcesResponse500ApplicationProblemPlusJson1] +class UpdateProjectUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListResourcesResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson1 +class UpdateWebhookDestinationRequest(BaseModel): + model_config = ConfigDict( + extra="allow", ) + description: str | None | MISSING = MISSING + enabledEvents: PrefixItems[Literal["*"]] | list[str] | MISSING = MISSING + name: str | MISSING = MISSING + status: Literal["enabled", "disabled"] | str | MISSING = MISSING + url: str | MISSING = MISSING + """ + HTTPS URL without credentials or a fragment. + """ -class ListVoiceProfilesResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 | ListVoiceProfilesResponse500ApplicationProblemPlusJson1 - ] +class UpdateWebhookDestinationUnprocessableEntityProblem( + RootModel[ValidationFailedProblem | IdempotencyKeyReusedProblem] ): - root: PhotonProblemINTERNALERROR500 | ListVoiceProfilesResponse500ApplicationProblemPlusJson1 + root: ValidationFailedProblem | IdempotencyKeyReusedProblem -class ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson1 +class UsageCharge(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + chargeCode: str | None + chargeModel: ( + Literal[ + "dynamic", + "graduated", + "graduated_percentage", + "package", + "percentage", + "standard", + "volume", + ] + | str ) + displayName: str | None + filters: list[UsageChargeFilter] + invoiceable: bool + metricCode: str + minimumAmountCents: int + payInAdvance: bool + pricing: UsageChargePricing + prorated: bool -class ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson( - RootModel[ - PhotonProblemINTERNALERROR500 - | ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson1 - ] -): - root: ( - PhotonProblemINTERNALERROR500 - | ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson1 +class VoiceProfile(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + configuration: VoiceProfileConfiguration + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + isDefault: bool + lineCount: int + mediaEncryption: Literal["auto", "srtp"] | str + name: str + profileId: str + projectId: str + protocol: Literal["sip"] + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + version: int + + +class VoiceProfilePage(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + nextPageToken: str | MISSING = MISSING + profiles: list[VoiceProfile] + + +class WebhookDestination(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + apiVersion: str + createdAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + deletedAt: str | None + description: str | None + destinationId: str + enabledEvents: PrefixItems[Literal["*"]] | list[str] + name: str + projectId: str + status: Literal["enabled", "disabled"] | str + updatedAt: str = Field(..., examples=["2026-01-01T00:00:00.000Z"]) + url: str + + +class WebhookDestinationPage(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + destinations: list[WebhookDestination] + nextPageToken: str | MISSING = MISSING + + +class BillingPlan(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + baseAmountCents: int + """ + Recurring base price in whole cents. + """ + categoryDisplayName: str | None | MISSING = MISSING + """ + Display name for the subscription category; absent or null when unconfigured. + """ + currency: str + """ + ISO currency code. + """ + description: str | None + entitlements: list[BillingPlanEntitlement] + fixedCharges: list[FixedCharge] + interval: Literal["weekly", "monthly", "quarterly", "semiannual", "yearly"] | str + name: str + payInAdvance: bool + planCode: str + usageCharges: list[UsageCharge] + + +class CreateWebhookDestinationResponse(BaseModel): + model_config = ConfigDict( + extra="allow", + ) + destination: WebhookDestination + signingSecret: str + + +class ListBillingPlansResponse(BaseModel): + model_config = ConfigDict( + extra="allow", ) + plans: dict[str, list[BillingPlan]] + """ + Plans grouped by valid metadata type and explicitly published with visible="true". + """ -FieldSchema0.model_rebuild() +JsonValue.model_rebuild() diff --git a/packages/python/src/photon_api/rpc_generated.py b/packages/python/src/photon_api/rpc_generated.py index 538cf64..8315060 100644 --- a/packages/python/src/photon_api/rpc_generated.py +++ b/packages/python/src/photon_api/rpc_generated.py @@ -27,7 +27,7 @@ class AssignSmsLineCampaignHeader(BaseModel): class AssignSmsLineCampaignInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.AssignSmsLineCampaignRequestApplicationJson + body: models.AssignSmsLineCampaignRequest path: AssignSmsLineCampaignPath headers: AssignSmsLineCampaignHeader @@ -42,7 +42,7 @@ class AssignVoiceLineProfilePath(BaseModel): class AssignVoiceLineProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.AssignVoiceLineProfileRequestApplicationJson + body: models.AssignVoiceLineProfileRequest path: AssignVoiceLineProfilePath @@ -55,7 +55,7 @@ class BatchUpdateVoiceLineProfileAssignmentsPath(BaseModel): class BatchUpdateVoiceLineProfileAssignmentsInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson + body: models.BatchUpdateVoiceLineProfileAssignmentsRequest path: BatchUpdateVoiceLineProfileAssignmentsPath @@ -68,7 +68,7 @@ class BeginInvitationSsoPath(BaseModel): class BeginInvitationSsoInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.BeginInvitationSsoRequestApplicationJson + body: models.BeginInvitationSsoRequest path: BeginInvitationSsoPath @@ -81,7 +81,7 @@ class BeginOrganizationAuthenticationPath(BaseModel): class BeginOrganizationAuthenticationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.BeginOrganizationAuthenticationRequestApplicationJson + body: models.OrganizationAuthenticationRequest path: BeginOrganizationAuthenticationPath @@ -94,7 +94,7 @@ class BeginOrganizationClosureAuthenticationPath(BaseModel): class BeginOrganizationClosureAuthenticationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.BeginOrganizationClosureAuthenticationRequestApplicationJson + body: models.OrganizationAuthenticationRequest path: BeginOrganizationClosureAuthenticationPath @@ -107,7 +107,7 @@ class BeginOrganizationSsoAdmissionPath(BaseModel): class BeginOrganizationSsoAdmissionInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.BeginOrganizationSsoAdmissionRequestApplicationJson + body: models.OrganizationAuthenticationRequest path: BeginOrganizationSsoAdmissionPath @@ -140,7 +140,7 @@ class CancelSubscriptionHeader(BaseModel): class CancelSubscriptionInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CancelSubscriptionRequestApplicationJson + body: models.CancelSubscriptionRequest path: CancelSubscriptionPath headers: CancelSubscriptionHeader | None = None @@ -161,7 +161,7 @@ class ChangePlanHeader(BaseModel): class ChangePlanInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ChangePlanRequestApplicationJson + body: models.ChangePlanRequest path: ChangePlanPath headers: ChangePlanHeader @@ -194,7 +194,7 @@ class CommitAccountProfilePictureHeader(BaseModel): class CommitAccountProfilePictureInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CommitAccountProfilePictureRequestApplicationJson + body: models.CommitAccountProfilePictureRequest headers: CommitAccountProfilePictureHeader @@ -213,7 +213,7 @@ class CommitAgentProfileAvatarHeader(BaseModel): class CommitAgentProfileAvatarInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CommitAgentProfileAvatarRequestApplicationJson + body: models.CommitAgentProfileAvatarRequest path: CommitAgentProfileAvatarPath headers: CommitAgentProfileAvatarHeader @@ -234,7 +234,7 @@ class ConfigureVoiceProfileOutboundHeader(BaseModel): class ConfigureVoiceProfileOutboundInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ConfigureVoiceProfileOutboundRequestApplicationJson + body: models.ConfigureVoiceProfileOutboundRequest path: ConfigureVoiceProfileOutboundPath headers: ConfigureVoiceProfileOutboundHeader @@ -242,7 +242,7 @@ class ConfigureVoiceProfileOutboundInput(BaseModel): class ConfirmAccountPhoneVerificationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ConfirmAccountPhoneVerificationRequestApplicationJson + body: models.ConfirmAccountPhoneVerificationRequest class ConnectEmailDomainPath(BaseModel): @@ -260,7 +260,7 @@ class ConnectEmailDomainHeader(BaseModel): class ConnectEmailDomainInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ConnectEmailDomainRequestApplicationJson + body: models.ConnectEmailDomainRequest path: ConnectEmailDomainPath headers: ConnectEmailDomainHeader @@ -280,7 +280,7 @@ class ConnectTelegramBotHeader(BaseModel): class ConnectTelegramBotInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ConnectTelegramBotRequestApplicationJson + body: models.ConnectTelegramBotRequest path: ConnectTelegramBotPath headers: ConnectTelegramBotHeader @@ -300,7 +300,7 @@ class ConnectWhatsappBusinessHeader(BaseModel): class ConnectWhatsappBusinessInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ConnectWhatsappBusinessRequestApplicationJson + body: models.ConnectWhatsappBusinessRequest path: ConnectWhatsappBusinessPath headers: ConnectWhatsappBusinessHeader @@ -329,7 +329,7 @@ class CountProjectsInput(BaseModel): class CreateAccountProfilePictureUploadInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateAccountProfilePictureUploadRequestApplicationJson + body: models.ProfilePictureUploadRequest class CreateAccountServiceKeyHeader(BaseModel): @@ -341,7 +341,7 @@ class CreateAccountServiceKeyHeader(BaseModel): class CreateAccountServiceKeyInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateAccountServiceKeyRequestApplicationJson + body: models.CreateAccountServiceKeyRequest headers: CreateAccountServiceKeyHeader @@ -354,14 +354,14 @@ class CreateAgentProfileAvatarUploadPath(BaseModel): class CreateAgentProfileAvatarUploadInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateAgentProfileAvatarUploadRequestApplicationJson + body: models.CreateAgentProfileAvatarUploadRequest path: CreateAgentProfileAvatarUploadPath class CreateAppInstallationRequestInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateAppInstallationRequestRequestApplicationJson + body: models.CreateAppInstallationRequestRequest class CreateDefaultVoiceProfilePath(BaseModel): @@ -373,7 +373,7 @@ class CreateDefaultVoiceProfilePath(BaseModel): class CreateDefaultVoiceProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateDefaultVoiceProfileRequestApplicationJson + body: models.CreateDefaultVoiceProfileRequest path: CreateDefaultVoiceProfilePath @@ -424,7 +424,7 @@ class CreateOrganizationSsoPortalLinkPath(BaseModel): class CreateOrganizationSsoPortalLinkInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateOrganizationSsoPortalLinkRequestApplicationJson + body: models.CreateOrganizationSsoPortalLinkRequest path: CreateOrganizationSsoPortalLinkPath @@ -443,7 +443,7 @@ class CreateProjectHeader(BaseModel): class CreateProjectInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateProjectRequestApplicationJson + body: models.CreateProjectRequest path: CreateProjectPath headers: CreateProjectHeader @@ -463,7 +463,7 @@ class CreateProjectApiKeyHeader(BaseModel): class CreateProjectApiKeyInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateProjectApiKeyRequestApplicationJson + body: models.CreateProjectApiKeyRequest path: CreateProjectApiKeyPath headers: CreateProjectApiKeyHeader @@ -483,7 +483,7 @@ class CreateSharedLineAssignmentHeader(BaseModel): class CreateSharedLineAssignmentInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateSharedLineAssignmentRequestApplicationJson + body: models.CreateSharedLineAssignmentRequest path: CreateSharedLineAssignmentPath headers: CreateSharedLineAssignmentHeader @@ -497,7 +497,7 @@ class CreateVoiceProfilePath(BaseModel): class CreateVoiceProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateVoiceProfileRequestApplicationJson + body: models.CreateVoiceProfileRequest path: CreateVoiceProfilePath @@ -516,7 +516,7 @@ class CreateWebhookDestinationHeader(BaseModel): class CreateWebhookDestinationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateWebhookDestinationRequestApplicationJson + body: models.CreateWebhookDestinationRequest path: CreateWebhookDestinationPath headers: CreateWebhookDestinationHeader @@ -536,7 +536,7 @@ class CreateWhatsappSharedLineAssignmentHeader(BaseModel): class CreateWhatsappSharedLineAssignmentInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateWhatsappSharedLineAssignmentRequestApplicationJson + body: models.CreateWhatsappSharedLineAssignmentRequest path: CreateWhatsappSharedLineAssignmentPath headers: CreateWhatsappSharedLineAssignmentHeader @@ -556,7 +556,7 @@ class CreateWhatsappVoipSenderHeader(BaseModel): class CreateWhatsappVoipSenderInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.CreateWhatsappVoipSenderRequestApplicationJson + body: models.CreateWhatsappVoipSenderRequest path: CreateWhatsappVoipSenderPath headers: CreateWhatsappVoipSenderHeader @@ -595,7 +595,7 @@ class DeleteVoiceProfileQuery(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) expected_version: int = Field(alias="expectedVersion") - force: Literal["true", "false"] | str | MISSING = Field(default=MISSING, alias="force") + force: models.DeleteVoiceProfileForceInput | MISSING = Field(default=MISSING, alias="force") class DeleteVoiceProfileInput(BaseModel): @@ -665,7 +665,27 @@ class DeviceAuthorizeInput(BaseModel): class DeviceTokenInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.DeviceTokenRequestApplicationJson + body: models.DeviceTokenRequest + + +class DisableOrganizationSsoPath(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + + org_id: str = Field(alias="orgId") + + +class DisableOrganizationSsoHeader(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + + idempotency_key: str = Field(alias="Idempotency-Key") + + +class DisableOrganizationSsoInput(BaseModel): + model_config = ConfigDict(extra="forbid", populate_by_name=True) + + body: models.DisableOrganizationSsoRequest + path: DisableOrganizationSsoPath + headers: DisableOrganizationSsoHeader class DisconnectWhatsappBusinessAccountPath(BaseModel): @@ -1090,11 +1110,9 @@ class ListAttachmentsQuery(BaseModel): created_before: str | MISSING = Field(default=MISSING, alias="createdBefore") created_since: str | MISSING = Field(default=MISSING, alias="createdSince") - order: Literal["asc", "desc"] | str | MISSING = Field(default=MISSING, alias="order") - order_by: Literal["created_at", "updated_at"] | str | MISSING = Field( - default=MISSING, alias="orderBy" - ) - page_size: str | MISSING = Field(default=MISSING, alias="pageSize") + order: models.SortOrder | MISSING = Field(default=MISSING, alias="order") + order_by: models.TimestampOrderBy | MISSING = Field(default=MISSING, alias="orderBy") + page_size: int | MISSING = Field(default=MISSING, alias="pageSize") page_token: str | MISSING = Field(default=MISSING, alias="pageToken") updated_before: str | MISSING = Field(default=MISSING, alias="updatedBefore") updated_since: str | MISSING = Field(default=MISSING, alias="updatedSince") @@ -1113,7 +1131,7 @@ class ListAuthorizedApplicationsQuery(BaseModel): after: str | MISSING = Field(default=MISSING, alias="after") before: str | MISSING = Field(default=MISSING, alias="before") limit: int | MISSING = Field(default=MISSING, alias="limit") - order: Literal["normal", "desc", "asc"] | str | MISSING = Field(default=MISSING, alias="order") + order: models.ListAuthorizedApplicationsOrder | MISSING = Field(default=MISSING, alias="order") class ListAuthorizedApplicationsInput(BaseModel): @@ -1194,17 +1212,7 @@ class ListOperationsQuery(BaseModel): page_token: str | MISSING = Field(default=MISSING, alias="pageToken") resource_id: str | MISSING = Field(default=MISSING, alias="resourceId") state: str | MISSING = Field(default=MISSING, alias="state") - type: ( - Literal[ - "resource.provision", - "resource.release", - "whatsapp.account.disconnect", - "sms.campaign.assign", - "sms.campaign.unassign", - ] - | str - | MISSING - ) = Field(default=MISSING, alias="type") + type: models.OperationType | MISSING = Field(default=MISSING, alias="type") class ListOperationsInput(BaseModel): @@ -1314,7 +1322,9 @@ class ListVoiceProfilesPath(BaseModel): class ListVoiceProfilesQuery(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - default: Literal["true", "false"] | str | MISSING = Field(default=MISSING, alias="default") + default: models.ListVoiceProfilesDefaultInput | MISSING = Field( + default=MISSING, alias="default" + ) page_size: int | MISSING = Field(default=MISSING, alias="pageSize") page_token: str | MISSING = Field(default=MISSING, alias="pageToken") @@ -1475,7 +1485,7 @@ class PurchaseSmsNumberHeader(BaseModel): class PurchaseSmsNumberInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.PurchaseSmsNumberRequestApplicationJson + body: models.PurchaseSmsNumberRequest path: PurchaseSmsNumberPath headers: PurchaseSmsNumberHeader @@ -1503,7 +1513,7 @@ class QueryMessageMetricsInput(BaseModel): class RedeemAppInstallationDeliveryInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.RedeemAppInstallationDeliveryRequestApplicationJson + body: models.RedeemAppInstallationDeliveryRequest class RefreshOrganizationSsoConnectionPath(BaseModel): @@ -1593,7 +1603,7 @@ class ReplaceVoiceProfileInboundPath(BaseModel): class ReplaceVoiceProfileInboundInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ReplaceVoiceProfileInboundRequestApplicationJson + body: models.ReplaceVoiceProfileInboundRequest path: ReplaceVoiceProfileInboundPath @@ -1644,7 +1654,7 @@ class ResumeSubscriptionHeader(BaseModel): class ResumeSubscriptionInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.ResumeSubscriptionRequestApplicationJson + body: models.ResumeSubscriptionRequest path: ResumeSubscriptionPath headers: ResumeSubscriptionHeader | None = None @@ -1728,7 +1738,7 @@ class RotateVoiceProfileOutboundCredentialHeader(BaseModel): class RotateVoiceProfileOutboundCredentialInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.RotateVoiceProfileOutboundCredentialRequestApplicationJson + body: models.RotateVoiceProfileOutboundCredentialRequest path: RotateVoiceProfileOutboundCredentialPath headers: RotateVoiceProfileOutboundCredentialHeader @@ -1749,7 +1759,7 @@ class RotateWebhookSigningSecretHeader(BaseModel): class RotateWebhookSigningSecretInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.RotateWebhookSigningSecretRequestApplicationJson + body: models.RotateWebhookSigningSecretRequest path: RotateWebhookSigningSecretPath headers: RotateWebhookSigningSecretHeader @@ -1757,13 +1767,13 @@ class RotateWebhookSigningSecretInput(BaseModel): class StartAccountPhoneVerificationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.StartAccountPhoneVerificationRequestApplicationJson + body: models.StartAccountPhoneVerificationRequest class StartEnterpriseLoginInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.StartEnterpriseLoginRequestApplicationJson + body: models.StartEnterpriseLoginRequest class UnassignSmsLineCampaignPath(BaseModel): @@ -1822,7 +1832,7 @@ class UpdateAccountHeader(BaseModel): class UpdateAccountInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateAccountRequestApplicationJson + body: models.UpdateAccountRequest headers: UpdateAccountHeader @@ -1841,7 +1851,7 @@ class UpdateAgentProfileHeader(BaseModel): class UpdateAgentProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateAgentProfileRequestApplicationJson + body: models.UpdateAgentProfileRequest path: UpdateAgentProfilePath headers: UpdateAgentProfileHeader @@ -1855,7 +1865,7 @@ class UpdateDefaultVoiceProfilePath(BaseModel): class UpdateDefaultVoiceProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateDefaultVoiceProfileRequestApplicationJson + body: models.UpdateDefaultVoiceProfileRequest path: UpdateDefaultVoiceProfilePath @@ -1868,7 +1878,7 @@ class UpdateOrganizationSsoPolicyPath(BaseModel): class UpdateOrganizationSsoPolicyInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateOrganizationSsoPolicyRequestApplicationJson + body: models.UpdateOrganizationSsoPolicyRequest path: UpdateOrganizationSsoPolicyPath @@ -1887,7 +1897,7 @@ class UpdateProjectHeader(BaseModel): class UpdateProjectInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateProjectRequestApplicationJson + body: models.UpdateProjectRequest path: UpdateProjectPath headers: UpdateProjectHeader @@ -1908,7 +1918,7 @@ class UpdateProjectApiKeyHeader(BaseModel): class UpdateProjectApiKeyInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateProjectApiKeyRequestApplicationJson + body: models.UpdateProjectApiKeyRequest path: UpdateProjectApiKeyPath headers: UpdateProjectApiKeyHeader @@ -1923,7 +1933,7 @@ class UpdateVoiceProfilePath(BaseModel): class UpdateVoiceProfileInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateVoiceProfileRequestApplicationJson + body: models.UpdateVoiceProfileRequest path: UpdateVoiceProfilePath @@ -1937,7 +1947,7 @@ class UpdateVoiceProfileInboundPath(BaseModel): class UpdateVoiceProfileInboundInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateVoiceProfileInboundRequestApplicationJson + body: models.UpdateVoiceProfileInboundRequest path: UpdateVoiceProfileInboundPath @@ -1951,7 +1961,7 @@ class UpdateVoiceProfileOutboundAuthenticationPath(BaseModel): class UpdateVoiceProfileOutboundAuthenticationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson + body: models.UpdateVoiceProfileOutboundAuthenticationRequest path: UpdateVoiceProfileOutboundAuthenticationPath @@ -1971,7 +1981,7 @@ class UpdateWebhookDestinationHeader(BaseModel): class UpdateWebhookDestinationInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UpdateWebhookDestinationRequestApplicationJson + body: models.UpdateWebhookDestinationRequest path: UpdateWebhookDestinationPath headers: UpdateWebhookDestinationHeader @@ -1993,7 +2003,7 @@ class UploadAttachmentHeader(BaseModel): class UploadAttachmentInput(BaseModel): model_config = ConfigDict(extra="forbid", populate_by_name=True) - body: models.UploadAttachmentRequestMultipartRelated + body: models.RootModel[bytes] path: UploadAttachmentPath headers: UploadAttachmentHeader @@ -2010,8 +2020,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.AssignSmsLineCampaignResponse200ApplicationJson), - "202": TypeAdapter(models.AssignSmsLineCampaignResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -2027,7 +2037,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.AssignVoiceLineProfileResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceLineProfileAssignment), }, ) @@ -2043,7 +2053,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson), + "200": TypeAdapter(models.BatchUpdateVoiceLineProfileAssignmentsResponse), }, ) @@ -2059,7 +2069,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.BeginInvitationSsoResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationAuthenticationRedirect), }, ) @@ -2075,7 +2085,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.BeginOrganizationAuthenticationResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationAuthenticationRedirect), }, ) @@ -2091,7 +2101,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.BeginOrganizationClosureAuthenticationResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationAuthenticationRedirect), }, ) @@ -2107,7 +2117,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.BeginOrganizationSsoAdmissionResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationAuthenticationRedirect), }, ) @@ -2122,7 +2132,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CancelOperationResponse200ApplicationJson), + "200": TypeAdapter(models.Operation), }, ) @@ -2138,7 +2148,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CancelSubscriptionResponse200ApplicationJson), + "200": TypeAdapter(models.CancelSubscriptionResponse), }, ) @@ -2154,8 +2164,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ChangePlanResponse200ApplicationJson), - "202": TypeAdapter(models.ChangePlanResponse202ApplicationJson), + "200": TypeAdapter(models.TerminalBillingOperation), + "202": TypeAdapter(models.PendingBillingOperation), }, ) @@ -2170,7 +2180,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CheckProjectSlugAvailabilityResponse200ApplicationJson), + "200": TypeAdapter(models.CheckProjectSlugAvailabilityResponse), }, ) @@ -2186,7 +2196,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CommitAccountProfilePictureResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -2202,7 +2212,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CommitAgentProfileAvatarResponse200ApplicationJson), + "200": TypeAdapter(models.AgentProfile), }, ) @@ -2218,8 +2228,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ConfigureVoiceProfileOutboundResponse200ApplicationJson), - "201": TypeAdapter(models.ConfigureVoiceProfileOutboundResponse201ApplicationJson), + "200": TypeAdapter(models.ConfigureVoiceProfileOutboundResponse), + "201": TypeAdapter(models.ConfigureVoiceProfileOutboundResponse), }, ) @@ -2235,7 +2245,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ConfirmAccountPhoneVerificationResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -2251,7 +2261,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.ConnectEmailDomainResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -2267,7 +2277,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.ConnectTelegramBotResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -2283,7 +2293,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.ConnectWhatsappBusinessResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -2298,7 +2308,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CountProjectsResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectCount), }, ) @@ -2314,7 +2324,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateAccountProfilePictureUploadResponse201ApplicationJson), + "201": TypeAdapter(models.ProfilePictureUpload), }, ) @@ -2330,7 +2340,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateAccountServiceKeyResponse201ApplicationJson), + "201": TypeAdapter(models.CreateAccountServiceKeyResponse), }, ) @@ -2346,7 +2356,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateAgentProfileAvatarUploadResponse201ApplicationJson), + "201": TypeAdapter(models.AgentProfileAvatarUpload), }, ) @@ -2362,7 +2372,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateAppInstallationRequestResponse201ApplicationJson), + "201": TypeAdapter(models.CreateAppInstallationRequestResponse), }, ) @@ -2378,8 +2388,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CreateDefaultVoiceProfileResponse200ApplicationJson), - "201": TypeAdapter(models.CreateDefaultVoiceProfileResponse201ApplicationJson), + "200": TypeAdapter(models.VoiceProfile), + "201": TypeAdapter(models.VoiceProfile), }, ) @@ -2394,9 +2404,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter( - models.CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson - ), + "200": TypeAdapter(models.CreateOrganizationPaymentMethodCheckoutResponse), }, ) @@ -2411,7 +2419,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CreateOrganizationSetupIntentResponse200ApplicationJson), + "200": TypeAdapter(models.CreateOrganizationSetupIntentResponse), }, ) @@ -2427,7 +2435,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.CreateOrganizationSsoPortalLinkResponse200ApplicationJson), + "200": TypeAdapter(models.CreateOrganizationSsoPortalLinkResponse), }, ) @@ -2443,7 +2451,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateProjectResponse201ApplicationJson), + "201": TypeAdapter(models.Project), }, ) @@ -2459,7 +2467,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateProjectApiKeyResponse201ApplicationJson), + "201": TypeAdapter(models.CreateProjectApiKeyResponse), }, ) @@ -2475,7 +2483,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateSharedLineAssignmentResponse201ApplicationJson), + "201": TypeAdapter(models.SharedLineAssignment), }, ) @@ -2491,7 +2499,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateVoiceProfileResponse201ApplicationJson), + "201": TypeAdapter(models.VoiceProfile), }, ) @@ -2507,7 +2515,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateWebhookDestinationResponse201ApplicationJson), + "201": TypeAdapter(models.CreateWebhookDestinationResponse), }, ) @@ -2523,7 +2531,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.CreateWhatsappSharedLineAssignmentResponse201ApplicationJson), + "201": TypeAdapter(models.SharedLineAssignment), }, ) @@ -2539,7 +2547,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.CreateWhatsappVoipSenderResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -2554,7 +2562,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DeleteAccountResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -2569,7 +2577,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DeleteProjectResponse200ApplicationJson), + "200": TypeAdapter(models.Project), }, ) @@ -2596,7 +2604,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DeleteVoiceProfileInboundResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfileInboundConfiguration), }, ) @@ -2611,7 +2619,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DeleteVoiceProfileOutboundResponse200ApplicationJson), + "200": TypeAdapter(models.DeleteVoiceProfileOutboundResponse), }, ) @@ -2626,7 +2634,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DeleteWebhookDestinationResponse200ApplicationJson), + "200": TypeAdapter(models.WebhookDestination), }, ) @@ -2636,9 +2644,12 @@ class UploadAttachmentInput(BaseModel): path="/v1/auth/device/code", safe=False, idempotency_key_required=False, - accept_media_types=("application/json",), + accept_media_types=( + "application/json", + "application/problem+json", + ), success_responses={ - "200": TypeAdapter(models.DeviceAuthorizeResponse200ApplicationJson), + "200": TypeAdapter(models.DeviceAuthorizeResponse), }, ) @@ -2649,9 +2660,28 @@ class UploadAttachmentInput(BaseModel): safe=False, idempotency_key_required=False, request_media_type="application/json", - accept_media_types=("application/json",), + accept_media_types=( + "application/json", + "application/problem+json", + ), success_responses={ - "200": TypeAdapter(models.DeviceTokenResponse200ApplicationJson), + "200": TypeAdapter(models.DeviceTokenResponse), + }, +) + +_OP_DISABLE_ORGANIZATION_SSO = OperationSpec( + operation_id="disableOrganizationSso", + method="POST", + path="/v1/auth/organizations/{orgId}/sso/disable", + safe=False, + idempotency_key_required=True, + request_media_type="application/json", + accept_media_types=( + "application/json", + "application/problem+json", + ), + success_responses={ + "200": TypeAdapter(models.OrganizationSsoConfiguration), }, ) @@ -2666,8 +2696,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.DisconnectWhatsappBusinessAccountResponse200ApplicationJson), - "202": TypeAdapter(models.DisconnectWhatsappBusinessAccountResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -2697,7 +2727,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetAccountResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -2712,7 +2742,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetAgentProfileResponse200ApplicationJson), + "200": TypeAdapter(models.AgentProfile), }, ) @@ -2727,7 +2757,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetAttachmentResponse200ApplicationJson), + "200": TypeAdapter(models.Attachment), }, ) @@ -2742,7 +2772,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetBillingOperationResponse200ApplicationJson), + "200": TypeAdapter(models.BillingOperation), }, ) @@ -2757,7 +2787,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetBillingOverviewResponse200ApplicationJson), + "200": TypeAdapter(models.GetBillingOverviewResponse), }, ) @@ -2772,7 +2802,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetDefaultVoiceProfileResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfile), }, ) @@ -2787,7 +2817,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetMessageMetricsBackfillResponse200ApplicationJson), + "200": TypeAdapter(models.GetMessageMetricsBackfillResponse), }, ) @@ -2802,7 +2832,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetMessageMetricsSqlSchemaResponse200ApplicationJson), + "200": TypeAdapter(models.GetMessageMetricsSqlSchemaResponse), }, ) @@ -2817,7 +2847,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetOperationResponse200ApplicationJson), + "200": TypeAdapter(models.GetOperationResponse), }, ) @@ -2832,7 +2862,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetOrganizationBillingOverviewResponse200ApplicationJson), + "200": TypeAdapter(models.GetOrganizationBillingOverviewResponse), }, ) @@ -2847,7 +2877,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetOrganizationConnectionStatusResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationConnectionStatus), }, ) @@ -2862,7 +2892,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetOrganizationPaymentMethodResponse200ApplicationJson), + "200": TypeAdapter(models.GetOrganizationPaymentMethodResponse), }, ) @@ -2877,7 +2907,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetOrganizationSsoConfigurationResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationSsoConfiguration), }, ) @@ -2892,7 +2922,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetProjectResponse200ApplicationJson), + "200": TypeAdapter(models.Project), }, ) @@ -2907,7 +2937,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetProjectClosureStatusResponse200ApplicationJson), + "200": TypeAdapter(models.GetProjectClosureStatusResponse), }, ) @@ -2922,7 +2952,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetProjectImessagePlatformResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectPlatformSettings), }, ) @@ -2937,7 +2967,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetProjectWhatsappPlatformResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectPlatformSettings), }, ) @@ -2952,7 +2982,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetResourceResponse200ApplicationJson), + "200": TypeAdapter(models.Resource), }, ) @@ -2967,7 +2997,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetSharedLineAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignment), }, ) @@ -2982,7 +3012,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetSmsLineCampaignAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.GetSmsLineCampaignAssignmentResponse), }, ) @@ -2997,7 +3027,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetVoiceLineProfileAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceLineProfileAssignment), }, ) @@ -3012,7 +3042,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetVoiceProfileResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfile), }, ) @@ -3027,7 +3057,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWebhookDestinationResponse200ApplicationJson), + "200": TypeAdapter(models.WebhookDestination), }, ) @@ -3042,7 +3072,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson), + "200": TypeAdapter(models.WebhookEventSchema), "304": None, }, ) @@ -3058,7 +3088,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWhatsappBusinessAccountResponse200ApplicationJson), + "200": TypeAdapter(models.WhatsappBusinessAccount), }, ) @@ -3073,7 +3103,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWhatsappBusinessVerificationCodeResponse200ApplicationJson), + "200": TypeAdapter(models.GetWhatsappBusinessVerificationCodeResponse), }, ) @@ -3088,7 +3118,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWhatsappSharedLineAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignment), }, ) @@ -3103,7 +3133,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.GetWhatsappSignupConfigResponse200ApplicationJson), + "200": TypeAdapter(models.GetWhatsappSignupConfigResponse), }, ) @@ -3118,7 +3148,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListAccountServiceKeysResponse200ApplicationJson), + "200": TypeAdapter(models.ListAccountServiceKeysResponse), }, ) @@ -3133,7 +3163,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListAttachmentsResponse200ApplicationJson), + "200": TypeAdapter(models.AttachmentPage), }, ) @@ -3148,7 +3178,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListAuthorizedApplicationsResponse200ApplicationJson), + "200": TypeAdapter(models.ListAuthorizedApplicationsResponse), }, ) @@ -3163,7 +3193,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListBillingPlansResponse200ApplicationJson), + "200": TypeAdapter(models.ListBillingPlansResponse), }, ) @@ -3178,7 +3208,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListInvoicesResponse200ApplicationJson), + "200": TypeAdapter(models.ListInvoicesResponse), }, ) @@ -3193,7 +3223,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListNumberAreaCodesResponse200ApplicationJson), + "200": TypeAdapter(models.ListNumberAreaCodesResponse), }, ) @@ -3208,7 +3238,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListNumberCountriesResponse200ApplicationJson), + "200": TypeAdapter(models.ListNumberCountriesResponse), }, ) @@ -3223,7 +3253,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListOauthScopesResponse200ApplicationJson), + "200": TypeAdapter(models.ListOauthScopesResponse), }, ) @@ -3238,7 +3268,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListOperationsResponse200ApplicationJson), + "200": TypeAdapter(models.OperationPage), }, ) @@ -3253,7 +3283,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListProjectApiKeysResponse200ApplicationJson), + "200": TypeAdapter(models.ListProjectApiKeysResponse), }, ) @@ -3268,7 +3298,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListProjectPlatformsResponse200ApplicationJson), + "200": TypeAdapter(models.ListProjectPlatformsResponse), }, ) @@ -3283,7 +3313,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListProjectsResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectPage), }, ) @@ -3298,7 +3328,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListResourcesResponse200ApplicationJson), + "200": TypeAdapter(models.ResourcePage), }, ) @@ -3313,7 +3343,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListSharedLineAssignmentsResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignmentPage), }, ) @@ -3328,7 +3358,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListVoiceProfilesResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfilePage), }, ) @@ -3343,7 +3373,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWebhookApiVersionsResponse200ApplicationJson), + "200": TypeAdapter(models.ListWebhookApiVersionsResponse), "304": None, }, ) @@ -3359,7 +3389,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWebhookDestinationsResponse200ApplicationJson), + "200": TypeAdapter(models.WebhookDestinationPage), }, ) @@ -3374,7 +3404,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWebhookEgressAddressesResponse200ApplicationJson), + "200": TypeAdapter(models.ListWebhookEgressAddressesResponse), "304": None, }, ) @@ -3390,7 +3420,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWebhookEventTypesResponse200ApplicationJson), + "200": TypeAdapter(models.ListWebhookEventTypesResponse), "304": None, }, ) @@ -3406,7 +3436,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWhatsappAccountPhoneNumbersResponse200ApplicationJson), + "200": TypeAdapter(models.ListWhatsappAccountPhoneNumbersResponse), }, ) @@ -3421,7 +3451,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ListWhatsappSharedLineAssignmentsResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignmentPage), }, ) @@ -3436,7 +3466,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.ProvisionImessageDedicatedLineResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -3451,7 +3481,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.ProvisionWhatsappDedicatedLineResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -3467,7 +3497,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "202": TypeAdapter(models.PurchaseSmsNumberResponse202ApplicationJson), + "202": TypeAdapter(models.Operation), }, ) @@ -3483,7 +3513,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.QueryMessageMetricsResponse200ApplicationJson), + "200": TypeAdapter(models.QueryMessageMetricsResponse), }, ) @@ -3499,7 +3529,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RedeemAppInstallationDeliveryResponse200ApplicationJson), + "200": TypeAdapter(models.RedeemAppInstallationDeliveryResponse), }, ) @@ -3514,7 +3544,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RefreshOrganizationSsoConnectionResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationSsoConfiguration), }, ) @@ -3529,8 +3559,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReleaseImessageDedicatedLineResponse200ApplicationJson), - "202": TypeAdapter(models.ReleaseImessageDedicatedLineResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -3545,8 +3575,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReleaseResourceResponse200ApplicationJson), - "202": TypeAdapter(models.ReleaseResourceResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -3561,7 +3591,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReleaseSharedLineAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignment), }, ) @@ -3576,8 +3606,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReleaseWhatsappDedicatedLineResponse200ApplicationJson), - "202": TypeAdapter(models.ReleaseWhatsappDedicatedLineResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -3592,7 +3622,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson), + "200": TypeAdapter(models.SharedLineAssignment), }, ) @@ -3608,8 +3638,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ReplaceVoiceProfileInboundResponse200ApplicationJson), - "201": TypeAdapter(models.ReplaceVoiceProfileInboundResponse201ApplicationJson), + "200": TypeAdapter(models.VoiceProfileInboundConfiguration), + "201": TypeAdapter(models.VoiceProfileInboundConfiguration), }, ) @@ -3624,7 +3654,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ResetAccountProfilePictureResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -3639,7 +3669,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ResetAgentProfileAvatarResponse200ApplicationJson), + "200": TypeAdapter(models.AgentProfile), }, ) @@ -3655,7 +3685,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.ResumeSubscriptionResponse200ApplicationJson), + "200": TypeAdapter(models.ResumeSubscriptionResponse), }, ) @@ -3670,7 +3700,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RetryOrganizationConnectionSyncResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationConnectionStatus), }, ) @@ -3685,7 +3715,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RevokeAccountServiceKeyResponse200ApplicationJson), + "200": TypeAdapter(models.RevokeAccountServiceKeyResponse), }, ) @@ -3712,7 +3742,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RevokeProjectApiKeyResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectApiKeyResponse), }, ) @@ -3728,7 +3758,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RotateVoiceProfileOutboundCredentialResponse200ApplicationJson), + "200": TypeAdapter(models.RotateVoiceProfileOutboundCredentialResponse), }, ) @@ -3744,7 +3774,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.RotateWebhookSigningSecretResponse200ApplicationJson), + "200": TypeAdapter(models.RotateWebhookSigningSecretResponse), }, ) @@ -3760,7 +3790,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "201": TypeAdapter(models.StartAccountPhoneVerificationResponse201ApplicationJson), + "201": TypeAdapter(models.StartAccountPhoneVerificationResponse), }, ) @@ -3776,7 +3806,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.StartEnterpriseLoginResponse200ApplicationJson), + "200": TypeAdapter(models.StartEnterpriseLoginResponse), }, ) @@ -3791,8 +3821,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UnassignSmsLineCampaignResponse200ApplicationJson), - "202": TypeAdapter(models.UnassignSmsLineCampaignResponse202ApplicationJson), + "200": TypeAdapter(models.Operation), + "202": TypeAdapter(models.Operation), }, ) @@ -3820,7 +3850,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateAccountResponse200ApplicationJson), + "200": TypeAdapter(models.Account), }, ) @@ -3836,7 +3866,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateAgentProfileResponse200ApplicationJson), + "200": TypeAdapter(models.AgentProfile), }, ) @@ -3852,7 +3882,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateDefaultVoiceProfileResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfile), }, ) @@ -3868,7 +3898,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateOrganizationSsoPolicyResponse200ApplicationJson), + "200": TypeAdapter(models.OrganizationSsoConfiguration), }, ) @@ -3884,7 +3914,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateProjectResponse200ApplicationJson), + "200": TypeAdapter(models.Project), }, ) @@ -3900,7 +3930,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateProjectApiKeyResponse200ApplicationJson), + "200": TypeAdapter(models.ProjectApiKeyResponse), }, ) @@ -3916,7 +3946,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateVoiceProfileResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfile), }, ) @@ -3932,7 +3962,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateVoiceProfileInboundResponse200ApplicationJson), + "200": TypeAdapter(models.VoiceProfileInboundConfiguration), }, ) @@ -3948,9 +3978,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter( - models.UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson - ), + "200": TypeAdapter(models.UpdateVoiceProfileOutboundAuthenticationResponse), }, ) @@ -3966,7 +3994,7 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UpdateWebhookDestinationResponse200ApplicationJson), + "200": TypeAdapter(models.WebhookDestination), }, ) @@ -3982,8 +4010,8 @@ class UploadAttachmentInput(BaseModel): "application/problem+json", ), success_responses={ - "200": TypeAdapter(models.UploadAttachmentResponse200ApplicationJson), - "201": TypeAdapter(models.UploadAttachmentResponse201ApplicationJson), + "200": TypeAdapter(models.Attachment), + "201": TypeAdapter(models.Attachment), }, ) @@ -3995,10 +4023,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def create( self, input: CreateSharedLineAssignmentInput - ) -> ( - models.CreateSharedLineAssignmentResponse201ApplicationJson - | RawResponse[models.CreateSharedLineAssignmentResponse201ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Create shared line assignment\n\nMaps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_SHARED_LINE_ASSIGNMENT, payload) @@ -4006,10 +4031,7 @@ def create( def get( self, input: GetSharedLineAssignmentInput - ) -> ( - models.GetSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.GetSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Get shared line assignment\n\nReads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_SHARED_LINE_ASSIGNMENT, payload) @@ -4017,10 +4039,7 @@ def get( def list( self, input: ListSharedLineAssignmentsInput - ) -> ( - models.ListSharedLineAssignmentsResponse200ApplicationJson - | RawResponse[models.ListSharedLineAssignmentsResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignmentPage | RawResponse[models.SharedLineAssignmentPage]: "List shared line assignments\n\nLists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_SHARED_LINE_ASSIGNMENTS, payload) @@ -4028,10 +4047,7 @@ def list( def release( self, input: ReleaseSharedLineAssignmentInput - ) -> ( - models.ReleaseSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.ReleaseSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Release shared line assignment\n\nReleases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RELEASE_SHARED_LINE_ASSIGNMENT, payload) @@ -4053,14 +4069,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def assign_sms_line_campaign( self, input: AssignSmsLineCampaignInput - ) -> ( - models.AssignSmsLineCampaignResponse200ApplicationJson - | models.AssignSmsLineCampaignResponse202ApplicationJson - | RawResponse[ - models.AssignSmsLineCampaignResponse200ApplicationJson - | models.AssignSmsLineCampaignResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Assign or replace SMS line campaign\n\nAttach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_ASSIGN_SMS_LINE_CAMPAIGN, payload) @@ -4068,10 +4077,7 @@ def assign_sms_line_campaign( def assign_voice_line_profile( self, input: AssignVoiceLineProfileInput - ) -> ( - models.AssignVoiceLineProfileResponse200ApplicationJson - | RawResponse[models.AssignVoiceLineProfileResponse200ApplicationJson] - ): + ) -> models.VoiceLineProfileAssignment | RawResponse[models.VoiceLineProfileAssignment]: "Assign Voice line profile\n\nAssigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_ASSIGN_VOICE_LINE_PROFILE, payload) @@ -4080,8 +4086,8 @@ def assign_voice_line_profile( def batch_update_voice_line_profile_assignments( self, input: BatchUpdateVoiceLineProfileAssignmentsInput ) -> ( - models.BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson - | RawResponse[models.BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson] + models.BatchUpdateVoiceLineProfileAssignmentsResponse + | RawResponse[models.BatchUpdateVoiceLineProfileAssignmentsResponse] ): "Batch update Voice line profile assignments\n\nAtomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4090,11 +4096,8 @@ def batch_update_voice_line_profile_assignments( def cancel_operation( self, input: CancelOperationInput - ) -> ( - models.CancelOperationResponse200ApplicationJson - | RawResponse[models.CancelOperationResponse200ApplicationJson] - ): - "Cancel operation\n\nWithdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." + ) -> models.Operation | RawResponse[models.Operation]: + "Cancel operation\n\nWithdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CANCEL_OPERATION, payload) return response if self._raw else response.data @@ -4102,12 +4105,8 @@ def cancel_operation( def configure_voice_profile_outbound( self, input: ConfigureVoiceProfileOutboundInput ) -> ( - models.ConfigureVoiceProfileOutboundResponse200ApplicationJson - | models.ConfigureVoiceProfileOutboundResponse201ApplicationJson - | RawResponse[ - models.ConfigureVoiceProfileOutboundResponse200ApplicationJson - | models.ConfigureVoiceProfileOutboundResponse201ApplicationJson - ] + models.ConfigureVoiceProfileOutboundResponse + | RawResponse[models.ConfigureVoiceProfileOutboundResponse] ): "Configure Voice profile outbound credential\n\nConfigures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4116,10 +4115,7 @@ def configure_voice_profile_outbound( def connect_email_domain( self, input: ConnectEmailDomainInput - ) -> ( - models.ConnectEmailDomainResponse202ApplicationJson - | RawResponse[models.ConnectEmailDomainResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Connect email domain\n\nReserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CONNECT_EMAIL_DOMAIN, payload) @@ -4127,21 +4123,15 @@ def connect_email_domain( def connect_telegram_bot( self, input: ConnectTelegramBotInput - ) -> ( - models.ConnectTelegramBotResponse202ApplicationJson - | RawResponse[models.ConnectTelegramBotResponse202ApplicationJson] - ): - "Connect Telegram bot\n\nStarts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged." + ) -> models.Operation | RawResponse[models.Operation]: + "Connect Telegram bot\n\nStarts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CONNECT_TELEGRAM_BOT, payload) return response if self._raw else response.data def connect_whatsapp_business( self, input: ConnectWhatsappBusinessInput - ) -> ( - models.ConnectWhatsappBusinessResponse202ApplicationJson - | RawResponse[models.ConnectWhatsappBusinessResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Connect WhatsApp Business\n\nExchanges the authorization code Embedded Signup returned and connects exactly the selected phone number as one `whatsapp_sender`. Send the WABA id and phone-number id emitted by the same popup attempt; both are treated as selectors and verified against Meta before use. A selected number that matches a non-retired, same-project `voip_line` is linked to it; a number absent from Photon inventory stays unbound; a matching non-retired `cosmos_line`, foreign VoIP line or unassigned VoIP line fails the operation before registration. Connecting is free — no plan requirement — but Billing must report the project's organization as ready with a payment method on file. The Idempotency-Key is required and permanent: replaying the same key returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CONNECT_WHATSAPP_BUSINESS, payload) @@ -4149,14 +4139,7 @@ def connect_whatsapp_business( def create_default_voice_profile( self, input: CreateDefaultVoiceProfileInput - ) -> ( - models.CreateDefaultVoiceProfileResponse200ApplicationJson - | models.CreateDefaultVoiceProfileResponse201ApplicationJson - | RawResponse[ - models.CreateDefaultVoiceProfileResponse200ApplicationJson - | models.CreateDefaultVoiceProfileResponse201ApplicationJson - ] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Create default Voice profile\n\nCreates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_DEFAULT_VOICE_PROFILE, payload) @@ -4164,10 +4147,7 @@ def create_default_voice_profile( def create_voice_profile( self, input: CreateVoiceProfileInput - ) -> ( - models.CreateVoiceProfileResponse201ApplicationJson - | RawResponse[models.CreateVoiceProfileResponse201ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Create Voice profile\n\nCreates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_VOICE_PROFILE, payload) @@ -4175,10 +4155,7 @@ def create_voice_profile( def create_whatsapp_shared_line_assignment( self, input: CreateWhatsappSharedLineAssignmentInput - ) -> ( - models.CreateWhatsappSharedLineAssignmentResponse201ApplicationJson - | RawResponse[models.CreateWhatsappSharedLineAssignmentResponse201ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Create WhatsApp shared line assignment\n\nMaps an end user's phone number onto one of the project's pooled shared WhatsApp lines, consuming a seat from the project's WhatsApp entitlement. The assigned number is allocated by the server. When an email address is supplied the user is sent an invite asynchronously; the response never reports whether that succeeded. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_WHATSAPP_SHARED_LINE_ASSIGNMENT, payload) @@ -4186,10 +4163,7 @@ def create_whatsapp_shared_line_assignment( def create_whatsapp_voip_sender( self, input: CreateWhatsappVoipSenderInput - ) -> ( - models.CreateWhatsappVoipSenderResponse202ApplicationJson - | RawResponse[models.CreateWhatsappVoipSenderResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Create a VoIP-backed WhatsApp sender\n\nRegisters an active, SMS-capable Photon VoIP line on this project's connected WhatsApp Business Account. The account is resolved server-side; callers never select a WABA. The platform creates or reuses the Meta number, requests and consumes the SMS ownership code internally, verifies it, and registers the sender. displayName is optional; when omitted the project agent profile name is snapshotted before acceptance. The VoIP line remains a separate resource and never receives the whatsapp_business ability." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_WHATSAPP_VOIP_SENDER, payload) @@ -4204,8 +4178,8 @@ def delete_voice_profile(self, input: DeleteVoiceProfileInput) -> None | RawResp def delete_voice_profile_inbound( self, input: DeleteVoiceProfileInboundInput ) -> ( - models.DeleteVoiceProfileInboundResponse200ApplicationJson - | RawResponse[models.DeleteVoiceProfileInboundResponse200ApplicationJson] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Remove Voice profile inbound configuration\n\nRemoves a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4215,8 +4189,8 @@ def delete_voice_profile_inbound( def delete_voice_profile_outbound( self, input: DeleteVoiceProfileOutboundInput ) -> ( - models.DeleteVoiceProfileOutboundResponse200ApplicationJson - | RawResponse[models.DeleteVoiceProfileOutboundResponse200ApplicationJson] + models.DeleteVoiceProfileOutboundResponse + | RawResponse[models.DeleteVoiceProfileOutboundResponse] ): "Revoke Voice profile outbound credential\n\nRevokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4225,14 +4199,7 @@ def delete_voice_profile_outbound( def disconnect_whatsapp_business_account( self, input: DisconnectWhatsappBusinessAccountInput - ) -> ( - models.DisconnectWhatsappBusinessAccountResponse200ApplicationJson - | models.DisconnectWhatsappBusinessAccountResponse202ApplicationJson - | RawResponse[ - models.DisconnectWhatsappBusinessAccountResponse200ApplicationJson - | models.DisconnectWhatsappBusinessAccountResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Disconnect WhatsApp Business account and numbers\n\nDisconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_DISCONNECT_WHATSAPP_BUSINESS_ACCOUNT, payload) @@ -4240,10 +4207,7 @@ def disconnect_whatsapp_business_account( def get_default_voice_profile( self, input: GetDefaultVoiceProfileInput - ) -> ( - models.GetDefaultVoiceProfileResponse200ApplicationJson - | RawResponse[models.GetDefaultVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Get default Voice profile\n\nGets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_DEFAULT_VOICE_PROFILE, payload) @@ -4251,10 +4215,7 @@ def get_default_voice_profile( def get_imessage( self, input: GetProjectImessagePlatformInput - ) -> ( - models.GetProjectImessagePlatformResponse200ApplicationJson - | RawResponse[models.GetProjectImessagePlatformResponse200ApplicationJson] - ): + ) -> models.ProjectPlatformSettings | RawResponse[models.ProjectPlatformSettings]: "Get project iMessage platform\n\nReports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_PROJECT_IMESSAGE_PLATFORM, payload) @@ -4262,21 +4223,15 @@ def get_imessage( def get_operation( self, input: GetOperationInput - ) -> ( - models.GetOperationResponse200ApplicationJson - | RawResponse[models.GetOperationResponse200ApplicationJson] - ): - "Get operation\n\nReads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." + ) -> models.GetOperationResponse | RawResponse[models.GetOperationResponse]: + "Get operation\n\nReads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_OPERATION, payload) return response if self._raw else response.data def get_project_whatsapp_platform( self, input: GetProjectWhatsappPlatformInput - ) -> ( - models.GetProjectWhatsappPlatformResponse200ApplicationJson - | RawResponse[models.GetProjectWhatsappPlatformResponse200ApplicationJson] - ): + ) -> models.ProjectPlatformSettings | RawResponse[models.ProjectPlatformSettings]: "Get project WhatsApp platform\n\nReports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_PROJECT_WHATSAPP_PLATFORM, payload) @@ -4284,10 +4239,7 @@ def get_project_whatsapp_platform( def get_resource( self, input: GetResourceInput - ) -> ( - models.GetResourceResponse200ApplicationJson - | RawResponse[models.GetResourceResponse200ApplicationJson] - ): + ) -> models.Resource | RawResponse[models.Resource]: "Get resource\n\nReads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_RESOURCE, payload) @@ -4296,20 +4248,17 @@ def get_resource( def get_sms_line_campaign_assignment( self, input: GetSmsLineCampaignAssignmentInput ) -> ( - models.GetSmsLineCampaignAssignmentResponse200ApplicationJson - | RawResponse[models.GetSmsLineCampaignAssignmentResponse200ApplicationJson] + models.GetSmsLineCampaignAssignmentResponse + | RawResponse[models.GetSmsLineCampaignAssignmentResponse] ): - "Read SMS line campaign assignment\n\nRead requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." + "Read SMS line campaign assignment\n\nRead the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_SMS_LINE_CAMPAIGN_ASSIGNMENT, payload) return response if self._raw else response.data def get_voice_line_profile_assignment( self, input: GetVoiceLineProfileAssignmentInput - ) -> ( - models.GetVoiceLineProfileAssignmentResponse200ApplicationJson - | RawResponse[models.GetVoiceLineProfileAssignmentResponse200ApplicationJson] - ): + ) -> models.VoiceLineProfileAssignment | RawResponse[models.VoiceLineProfileAssignment]: "Get Voice line profile assignment\n\nGets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_VOICE_LINE_PROFILE_ASSIGNMENT, payload) @@ -4317,10 +4266,7 @@ def get_voice_line_profile_assignment( def get_voice_profile( self, input: GetVoiceProfileInput - ) -> ( - models.GetVoiceProfileResponse200ApplicationJson - | RawResponse[models.GetVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Get Voice profile\n\nGets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_VOICE_PROFILE, payload) @@ -4328,10 +4274,7 @@ def get_voice_profile( def get_whatsapp_business_account( self, input: GetWhatsappBusinessAccountInput - ) -> ( - models.GetWhatsappBusinessAccountResponse200ApplicationJson - | RawResponse[models.GetWhatsappBusinessAccountResponse200ApplicationJson] - ): + ) -> models.WhatsappBusinessAccount | RawResponse[models.WhatsappBusinessAccount]: "Get WhatsApp Business account\n\nGets the one WhatsApp Business Account this project has connected, with its number of live senders. Senders are resources and are listed by GET /platforms/resources?ability=whatsapp_business. The account is not a resource and carries no access token. Meta's retained numbers are listed separately by GET /platforms/whatsapp-business/account/phone-numbers. `subscribedAt` is absent until our app is attached to the account's webhooks. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_WHATSAPP_BUSINESS_ACCOUNT, payload) @@ -4340,8 +4283,8 @@ def get_whatsapp_business_account( def get_whatsapp_business_verification_code( self, input: GetWhatsappBusinessVerificationCodeInput ) -> ( - models.GetWhatsappBusinessVerificationCodeResponse200ApplicationJson - | RawResponse[models.GetWhatsappBusinessVerificationCodeResponse200ApplicationJson] + models.GetWhatsappBusinessVerificationCodeResponse + | RawResponse[models.GetWhatsappBusinessVerificationCodeResponse] ): "Get WhatsApp Business verification code\n\nReturns the latest six-digit WhatsApp Business ownership code received by SMS for an active Photon VOIP number, but only when its provider timestamp is strictly newer than the required receivedAfter boundary. receivedAfter must be an RFC 3339 timestamp between this request's arrival time and two minutes before it; once it expires, restart Meta's verification flow with a new boundary. A missing newer code is a retryable 404 with Retry-After: 2. Poll after 2, 4, 8, then 10 seconds, applying ±20% jitter and capping later intervals at 10 seconds. Stop when the original boundary is two minutes old. Responses are never cached. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4350,10 +4293,7 @@ def get_whatsapp_business_verification_code( def get_whatsapp_shared_line_assignment( self, input: GetWhatsappSharedLineAssignmentInput - ) -> ( - models.GetWhatsappSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.GetWhatsappSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Get WhatsApp shared line assignment\n\nReads one WhatsApp shared line assignment. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_WHATSAPP_SHARED_LINE_ASSIGNMENT, payload) @@ -4362,8 +4302,7 @@ def get_whatsapp_shared_line_assignment( def get_whatsapp_signup_config( self, input: GetWhatsappSignupConfigInput ) -> ( - models.GetWhatsappSignupConfigResponse200ApplicationJson - | RawResponse[models.GetWhatsappSignupConfigResponse200ApplicationJson] + models.GetWhatsappSignupConfigResponse | RawResponse[models.GetWhatsappSignupConfigResponse] ): "Get WhatsApp signup config\n\nReturns what the browser needs to open Meta's Embedded Signup popup: the Facebook Login for Business configuration id, the Graph version to run against, and the scopes it will request. Answered in-process rather than forwarded, so the first step of onboarding survives an outage of the private service. Pass `configId` to `FB.login` as `config_id` with `response_type: 'code'` and `override_default_response_type: true`. Do NOT add a `featureType` — omitting it is what keeps the phone-number screen in the flow, and `only_waba_sharing` produces an account with no number that cannot be provisioned. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4372,10 +4311,7 @@ def get_whatsapp_signup_config( def list_number_area_codes( self, input: ListNumberAreaCodesInput - ) -> ( - models.ListNumberAreaCodesResponse200ApplicationJson - | RawResponse[models.ListNumberAreaCodesResponse200ApplicationJson] - ): + ) -> models.ListNumberAreaCodesResponse | RawResponse[models.ListNumberAreaCodesResponse]: "List supported number area codes\n\nLists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_NUMBER_AREA_CODES, payload) @@ -4383,10 +4319,7 @@ def list_number_area_codes( def list_number_countries( self, input: ListNumberCountriesInput - ) -> ( - models.ListNumberCountriesResponse200ApplicationJson - | RawResponse[models.ListNumberCountriesResponse200ApplicationJson] - ): + ) -> models.ListNumberCountriesResponse | RawResponse[models.ListNumberCountriesResponse]: "List supported number countries\n\nLists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_NUMBER_COUNTRIES, payload) @@ -4394,21 +4327,15 @@ def list_number_countries( def list_operations( self, input: ListOperationsInput - ) -> ( - models.ListOperationsResponse200ApplicationJson - | RawResponse[models.ListOperationsResponse200ApplicationJson] - ): - "List operations\n\nLists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." + ) -> models.OperationPage | RawResponse[models.OperationPage]: + "List operations\n\nLists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_OPERATIONS, payload) return response if self._raw else response.data def list_project_platforms( self, input: ListProjectPlatformsInput - ) -> ( - models.ListProjectPlatformsResponse200ApplicationJson - | RawResponse[models.ListProjectPlatformsResponse200ApplicationJson] - ): + ) -> models.ListProjectPlatformsResponse | RawResponse[models.ListProjectPlatformsResponse]: "List project platforms\n\nLists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_PROJECT_PLATFORMS, payload) @@ -4416,10 +4343,7 @@ def list_project_platforms( def list_resources( self, input: ListResourcesInput - ) -> ( - models.ListResourcesResponse200ApplicationJson - | RawResponse[models.ListResourcesResponse200ApplicationJson] - ): + ) -> models.ResourcePage | RawResponse[models.ResourcePage]: "List resources\n\nLists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_RESOURCES, payload) @@ -4427,10 +4351,7 @@ def list_resources( def list_voice_profiles( self, input: ListVoiceProfilesInput - ) -> ( - models.ListVoiceProfilesResponse200ApplicationJson - | RawResponse[models.ListVoiceProfilesResponse200ApplicationJson] - ): + ) -> models.VoiceProfilePage | RawResponse[models.VoiceProfilePage]: "List Voice profiles\n\nLists reusable Voice profiles in this project. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_VOICE_PROFILES, payload) @@ -4439,8 +4360,8 @@ def list_voice_profiles( def list_whatsapp_account_phone_numbers( self, input: ListWhatsappAccountPhoneNumbersInput ) -> ( - models.ListWhatsappAccountPhoneNumbersResponse200ApplicationJson - | RawResponse[models.ListWhatsappAccountPhoneNumbersResponse200ApplicationJson] + models.ListWhatsappAccountPhoneNumbersResponse + | RawResponse[models.ListWhatsappAccountPhoneNumbersResponse] ): "List WhatsApp account phone numbers\n\nLists the connected WABA's phone numbers directly from Meta, including numbers whose Photon sender was disconnected. Ownership is photon for a number in this project's current Photon inventory and meta otherwise. Match a Photon SMS number by its E.164 phoneNumber and reuse its existing displayName when reconnecting. A null name is unavailable, not permission to choose a new name. A failed lookup returns an error rather than an empty list. Requires platforms:read on the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4449,10 +4370,7 @@ def list_whatsapp_account_phone_numbers( def list_whatsapp_shared_line_assignments( self, input: ListWhatsappSharedLineAssignmentsInput - ) -> ( - models.ListWhatsappSharedLineAssignmentsResponse200ApplicationJson - | RawResponse[models.ListWhatsappSharedLineAssignmentsResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignmentPage | RawResponse[models.SharedLineAssignmentPage]: "List WhatsApp shared line assignments\n\nLists the project's WhatsApp shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_WHATSAPP_SHARED_LINE_ASSIGNMENTS, payload) @@ -4460,32 +4378,23 @@ def list_whatsapp_shared_line_assignments( def provision_imessage_dedicated_line( self, input: ProvisionImessageDedicatedLineInput - ) -> ( - models.ProvisionImessageDedicatedLineResponse202ApplicationJson - | RawResponse[models.ProvisionImessageDedicatedLineResponse202ApplicationJson] - ): - "Provision dedicated iMessage line\n\nClaims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." + ) -> models.Operation | RawResponse[models.Operation]: + "Provision dedicated iMessage line\n\nClaims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_PROVISION_IMESSAGE_DEDICATED_LINE, payload) return response if self._raw else response.data def provision_whatsapp_dedicated_line( self, input: ProvisionWhatsappDedicatedLineInput - ) -> ( - models.ProvisionWhatsappDedicatedLineResponse202ApplicationJson - | RawResponse[models.ProvisionWhatsappDedicatedLineResponse202ApplicationJson] - ): - "Provision dedicated WhatsApp line\n\nProvisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." + ) -> models.Operation | RawResponse[models.Operation]: + "Provision dedicated WhatsApp line\n\nProvisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_PROVISION_WHATSAPP_DEDICATED_LINE, payload) return response if self._raw else response.data def purchase_sms_number( self, input: PurchaseSmsNumberInput - ) -> ( - models.PurchaseSmsNumberResponse202ApplicationJson - | RawResponse[models.PurchaseSmsNumberResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Purchase SMS number\n\nBuys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_PURCHASE_SMS_NUMBER, payload) @@ -4493,29 +4402,15 @@ def purchase_sms_number( def release_imessage_dedicated_line( self, input: ReleaseImessageDedicatedLineInput - ) -> ( - models.ReleaseImessageDedicatedLineResponse200ApplicationJson - | models.ReleaseImessageDedicatedLineResponse202ApplicationJson - | RawResponse[ - models.ReleaseImessageDedicatedLineResponse200ApplicationJson - | models.ReleaseImessageDedicatedLineResponse202ApplicationJson - ] - ): - "Release dedicated iMessage line\n\nRemoves only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." + ) -> models.Operation | RawResponse[models.Operation]: + "Release dedicated iMessage line\n\nRemoves only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RELEASE_IMESSAGE_DEDICATED_LINE, payload) return response if self._raw else response.data def release_resource( self, input: ReleaseResourceInput - ) -> ( - models.ReleaseResourceResponse200ApplicationJson - | models.ReleaseResourceResponse202ApplicationJson - | RawResponse[ - models.ReleaseResourceResponse200ApplicationJson - | models.ReleaseResourceResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Release resource\n\nGives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RELEASE_RESOURCE, payload) @@ -4523,25 +4418,15 @@ def release_resource( def release_whatsapp_dedicated_line( self, input: ReleaseWhatsappDedicatedLineInput - ) -> ( - models.ReleaseWhatsappDedicatedLineResponse200ApplicationJson - | models.ReleaseWhatsappDedicatedLineResponse202ApplicationJson - | RawResponse[ - models.ReleaseWhatsappDedicatedLineResponse200ApplicationJson - | models.ReleaseWhatsappDedicatedLineResponse202ApplicationJson - ] - ): - "Release dedicated WhatsApp line\n\nRemoves only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." + ) -> models.Operation | RawResponse[models.Operation]: + "Release dedicated WhatsApp line\n\nRemoves only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RELEASE_WHATSAPP_DEDICATED_LINE, payload) return response if self._raw else response.data def release_whatsapp_shared_line_assignment( self, input: ReleaseWhatsappSharedLineAssignmentInput - ) -> ( - models.ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Release WhatsApp shared line assignment\n\nReleases a WhatsApp shared line assignment, freeing its seat for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RELEASE_WHATSAPP_SHARED_LINE_ASSIGNMENT, payload) @@ -4550,12 +4435,8 @@ def release_whatsapp_shared_line_assignment( def replace_voice_profile_inbound( self, input: ReplaceVoiceProfileInboundInput ) -> ( - models.ReplaceVoiceProfileInboundResponse200ApplicationJson - | models.ReplaceVoiceProfileInboundResponse201ApplicationJson - | RawResponse[ - models.ReplaceVoiceProfileInboundResponse200ApplicationJson - | models.ReplaceVoiceProfileInboundResponse201ApplicationJson - ] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Create or replace Voice profile inbound configuration\n\nCreates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4565,8 +4446,8 @@ def replace_voice_profile_inbound( def rotate_voice_profile_outbound_credential( self, input: RotateVoiceProfileOutboundCredentialInput ) -> ( - models.RotateVoiceProfileOutboundCredentialResponse200ApplicationJson - | RawResponse[models.RotateVoiceProfileOutboundCredentialResponse200ApplicationJson] + models.RotateVoiceProfileOutboundCredentialResponse + | RawResponse[models.RotateVoiceProfileOutboundCredentialResponse] ): "Rotate Voice outbound credential\n\nRotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4575,14 +4456,7 @@ def rotate_voice_profile_outbound_credential( def unassign_sms_line_campaign( self, input: UnassignSmsLineCampaignInput - ) -> ( - models.UnassignSmsLineCampaignResponse200ApplicationJson - | models.UnassignSmsLineCampaignResponse202ApplicationJson - | RawResponse[ - models.UnassignSmsLineCampaignResponse200ApplicationJson - | models.UnassignSmsLineCampaignResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Remove SMS line campaign\n\nAny project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UNASSIGN_SMS_LINE_CAMPAIGN, payload) @@ -4598,10 +4472,7 @@ def unassign_voice_line_profile( def update_default_voice_profile( self, input: UpdateDefaultVoiceProfileInput - ) -> ( - models.UpdateDefaultVoiceProfileResponse200ApplicationJson - | RawResponse[models.UpdateDefaultVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Update default Voice profile\n\nPatches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_DEFAULT_VOICE_PROFILE, payload) @@ -4609,10 +4480,7 @@ def update_default_voice_profile( def update_voice_profile( self, input: UpdateVoiceProfileInput - ) -> ( - models.UpdateVoiceProfileResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Update Voice profile\n\nPatches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_VOICE_PROFILE, payload) @@ -4621,8 +4489,8 @@ def update_voice_profile( def update_voice_profile_inbound( self, input: UpdateVoiceProfileInboundInput ) -> ( - models.UpdateVoiceProfileInboundResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileInboundResponse200ApplicationJson] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Update Voice profile inbound configuration\n\nUpdates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4632,8 +4500,8 @@ def update_voice_profile_inbound( def update_voice_profile_outbound_authentication( self, input: UpdateVoiceProfileOutboundAuthenticationInput ) -> ( - models.UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson] + models.UpdateVoiceProfileOutboundAuthenticationResponse + | RawResponse[models.UpdateVoiceProfileOutboundAuthenticationResponse] ): "Update Voice profile outbound authentication policy\n\nChanges a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4650,10 +4518,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def commit_avatar( self, input: CommitAgentProfileAvatarInput - ) -> ( - models.CommitAgentProfileAvatarResponse200ApplicationJson - | RawResponse[models.CommitAgentProfileAvatarResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Commit an agent avatar\n\nCommits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_COMMIT_AGENT_PROFILE_AVATAR, payload) @@ -4661,10 +4526,7 @@ def commit_avatar( def create_avatar_upload( self, input: CreateAgentProfileAvatarUploadInput - ) -> ( - models.CreateAgentProfileAvatarUploadResponse201ApplicationJson - | RawResponse[models.CreateAgentProfileAvatarUploadResponse201ApplicationJson] - ): + ) -> models.AgentProfileAvatarUpload | RawResponse[models.AgentProfileAvatarUpload]: "Create an agent avatar upload\n\nCreates a ten-minute, Project-bound presigned S3 POST for a JPEG, PNG, or WebP agent avatar up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAgentProfileAvatar with the returned uploadId. Do not cache or log the upload URL or form fields." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_AGENT_PROFILE_AVATAR_UPLOAD, payload) @@ -4672,10 +4534,7 @@ def create_avatar_upload( def get( self, input: GetAgentProfileInput - ) -> ( - models.GetAgentProfileResponse200ApplicationJson - | RawResponse[models.GetAgentProfileResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Get an agent profile\n\nReturns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_AGENT_PROFILE, payload) @@ -4683,10 +4542,7 @@ def get( def reset_avatar( self, input: ResetAgentProfileAvatarInput - ) -> ( - models.ResetAgentProfileAvatarResponse200ApplicationJson - | RawResponse[models.ResetAgentProfileAvatarResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Reset an agent avatar\n\nReplaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RESET_AGENT_PROFILE_AVATAR, payload) @@ -4694,10 +4550,7 @@ def reset_avatar( def update( self, input: UpdateAgentProfileInput - ) -> ( - models.UpdateAgentProfileResponse200ApplicationJson - | RawResponse[models.UpdateAgentProfileResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Update an agent profile\n\nUpdates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_AGENT_PROFILE, payload) @@ -4711,10 +4564,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def get_operation( self, input: GetBillingOperationInput - ) -> ( - models.GetBillingOperationResponse200ApplicationJson - | RawResponse[models.GetBillingOperationResponse200ApplicationJson] - ): + ) -> models.BillingOperation | RawResponse[models.BillingOperation]: "Get a billing operation snapshot\n\nReturns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_BILLING_OPERATION, payload) @@ -4722,10 +4572,7 @@ def get_operation( def get_overview( self, input: GetBillingOverviewInput - ) -> ( - models.GetBillingOverviewResponse200ApplicationJson - | RawResponse[models.GetBillingOverviewResponse200ApplicationJson] - ): + ) -> models.GetBillingOverviewResponse | RawResponse[models.GetBillingOverviewResponse]: "Get the project's billing overview\n\nReturns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_BILLING_OVERVIEW, payload) @@ -4733,11 +4580,8 @@ def get_overview( def list_billing_plans( self, input: ListBillingPlansInput - ) -> ( - models.ListBillingPlansResponse200ApplicationJson - | RawResponse[models.ListBillingPlansResponse200ApplicationJson] - ): - "List billing plans available to a project\n\nLists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." + ) -> models.ListBillingPlansResponse | RawResponse[models.ListBillingPlansResponse]: + "List available billing plans\n\nLists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_BILLING_PLANS, payload) return response if self._raw else response.data @@ -4753,10 +4597,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def create_project_api_key( self, input: CreateProjectApiKeyInput - ) -> ( - models.CreateProjectApiKeyResponse201ApplicationJson - | RawResponse[models.CreateProjectApiKeyResponse201ApplicationJson] - ): + ) -> models.CreateProjectApiKeyResponse | RawResponse[models.CreateProjectApiKeyResponse]: "Create a project API key\n\nCreates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_PROJECT_API_KEY, payload) @@ -4765,20 +4606,15 @@ def create_project_api_key( def create_webhook_destination( self, input: CreateWebhookDestinationInput ) -> ( - models.CreateWebhookDestinationResponse201ApplicationJson - | RawResponse[models.CreateWebhookDestinationResponse201ApplicationJson] + models.CreateWebhookDestinationResponse + | RawResponse[models.CreateWebhookDestinationResponse] ): "Create a webhook destination\n\nCreates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_WEBHOOK_DESTINATION, payload) return response if self._raw else response.data - def delete( - self, input: DeleteProjectInput - ) -> ( - models.DeleteProjectResponse200ApplicationJson - | RawResponse[models.DeleteProjectResponse200ApplicationJson] - ): + def delete(self, input: DeleteProjectInput) -> models.Project | RawResponse[models.Project]: "Delete a project\n\nStarts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_DELETE_PROJECT, payload) @@ -4786,10 +4622,7 @@ def delete( def delete_webhook_destination( self, input: DeleteWebhookDestinationInput - ) -> ( - models.DeleteWebhookDestinationResponse200ApplicationJson - | RawResponse[models.DeleteWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Delete a webhook destination\n\nDeletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_DELETE_WEBHOOK_DESTINATION, payload) @@ -4801,12 +4634,7 @@ def download_attachment(self, input: DownloadAttachmentInput) -> bytes | RawResp response = self._transport.request(_OP_DOWNLOAD_ATTACHMENT, payload) return response if self._raw else response.data - def get( - self, input: GetProjectInput - ) -> ( - models.GetProjectResponse200ApplicationJson - | RawResponse[models.GetProjectResponse200ApplicationJson] - ): + def get(self, input: GetProjectInput) -> models.Project | RawResponse[models.Project]: "Get a project\n\nReturns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_PROJECT, payload) @@ -4814,10 +4642,7 @@ def get( def get_attachment( self, input: GetAttachmentInput - ) -> ( - models.GetAttachmentResponse200ApplicationJson - | RawResponse[models.GetAttachmentResponse200ApplicationJson] - ): + ) -> models.Attachment | RawResponse[models.Attachment]: "Get an Attachment\n\nReturns an Attachment's metadata. Use the content endpoint to download its bytes." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_ATTACHMENT, payload) @@ -4826,8 +4651,8 @@ def get_attachment( def get_message_metrics_backfill( self, input: GetMessageMetricsBackfillInput ) -> ( - models.GetMessageMetricsBackfillResponse200ApplicationJson - | RawResponse[models.GetMessageMetricsBackfillResponse200ApplicationJson] + models.GetMessageMetricsBackfillResponse + | RawResponse[models.GetMessageMetricsBackfillResponse] ): "Get Metrics historical backfill status\n\nReturns historical metrics update progress. Completion reflects lastVerifiedAt; queries remain available during updates." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4837,8 +4662,8 @@ def get_message_metrics_backfill( def get_message_metrics_sql_schema( self, input: GetMessageMetricsSqlSchemaInput ) -> ( - models.GetMessageMetricsSqlSchemaResponse200ApplicationJson - | RawResponse[models.GetMessageMetricsSqlSchemaResponse200ApplicationJson] + models.GetMessageMetricsSqlSchemaResponse + | RawResponse[models.GetMessageMetricsSqlSchemaResponse] ): "Get messaging and voice metrics SQL schema\n\nReturns the message_events SQL schema, supported queries, and limits for the selected API version." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4847,10 +4672,7 @@ def get_message_metrics_sql_schema( def get_webhook_destination( self, input: GetWebhookDestinationInput - ) -> ( - models.GetWebhookDestinationResponse200ApplicationJson - | RawResponse[models.GetWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Get a webhook destination\n\nReturns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_WEBHOOK_DESTINATION, payload) @@ -4858,11 +4680,7 @@ def get_webhook_destination( def get_webhook_event_schema( self, input: GetWebhookEventSchemaInput - ) -> ( - models.GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson - | None - | RawResponse[models.GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson | None] - ): + ) -> models.WebhookEventSchema | None | RawResponse[models.WebhookEventSchema | None]: "Get a webhook event schema\n\nReturns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_WEBHOOK_EVENT_SCHEMA, payload) @@ -4870,10 +4688,7 @@ def get_webhook_event_schema( def list_attachments( self, input: ListAttachmentsInput - ) -> ( - models.ListAttachmentsResponse200ApplicationJson - | RawResponse[models.ListAttachmentsResponse200ApplicationJson] - ): + ) -> models.AttachmentPage | RawResponse[models.AttachmentPage]: "List Project Attachments\n\nLists the Project's Attachment metadata, with optional time filters." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_ATTACHMENTS, payload) @@ -4881,11 +4696,8 @@ def list_attachments( def list_project_api_keys( self, input: ListProjectApiKeysInput - ) -> ( - models.ListProjectApiKeysResponse200ApplicationJson - | RawResponse[models.ListProjectApiKeysResponse200ApplicationJson] - ): - "List project API keys" + ) -> models.ListProjectApiKeysResponse | RawResponse[models.ListProjectApiKeysResponse]: + "List project API keys\n\nLists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_PROJECT_API_KEYS, payload) return response if self._raw else response.data @@ -4893,9 +4705,9 @@ def list_project_api_keys( def list_webhook_api_versions( self, input: ListWebhookApiVersionsInput ) -> ( - models.ListWebhookApiVersionsResponse200ApplicationJson + models.ListWebhookApiVersionsResponse | None - | RawResponse[models.ListWebhookApiVersionsResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookApiVersionsResponse | None] ): "List webhook API versions\n\nLists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4904,10 +4716,7 @@ def list_webhook_api_versions( def list_webhook_destinations( self, input: ListWebhookDestinationsInput - ) -> ( - models.ListWebhookDestinationsResponse200ApplicationJson - | RawResponse[models.ListWebhookDestinationsResponse200ApplicationJson] - ): + ) -> models.WebhookDestinationPage | RawResponse[models.WebhookDestinationPage]: "List webhook destinations\n\nReturns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_WEBHOOK_DESTINATIONS, payload) @@ -4916,9 +4725,9 @@ def list_webhook_destinations( def list_webhook_egress_addresses( self, input: ListWebhookEgressAddressesInput ) -> ( - models.ListWebhookEgressAddressesResponse200ApplicationJson + models.ListWebhookEgressAddressesResponse | None - | RawResponse[models.ListWebhookEgressAddressesResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookEgressAddressesResponse | None] ): "List webhook egress addresses\n\nReturns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4928,9 +4737,9 @@ def list_webhook_egress_addresses( def list_webhook_event_types( self, input: ListWebhookEventTypesInput ) -> ( - models.ListWebhookEventTypesResponse200ApplicationJson + models.ListWebhookEventTypesResponse | None - | RawResponse[models.ListWebhookEventTypesResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookEventTypesResponse | None] ): "List webhook event types\n\nLists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -4939,10 +4748,7 @@ def list_webhook_event_types( def query_message_metrics( self, input: QueryMessageMetricsInput - ) -> ( - models.QueryMessageMetricsResponse200ApplicationJson - | RawResponse[models.QueryMessageMetricsResponse200ApplicationJson] - ): + ) -> models.QueryMessageMetricsResponse | RawResponse[models.QueryMessageMetricsResponse]: "Query messaging and voice metrics with SQL\n\nRuns read-only SQL over the Project's message_events table. Get the SQL schema for supported columns, capabilities, and limits." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_QUERY_MESSAGE_METRICS, payload) @@ -4950,10 +4756,7 @@ def query_message_metrics( def revoke_project_api_key( self, input: RevokeProjectApiKeyInput - ) -> ( - models.RevokeProjectApiKeyResponse200ApplicationJson - | RawResponse[models.RevokeProjectApiKeyResponse200ApplicationJson] - ): + ) -> models.ProjectApiKeyResponse | RawResponse[models.ProjectApiKeyResponse]: "Delete a project API key\n\nRevokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_REVOKE_PROJECT_API_KEY, payload) @@ -4962,20 +4765,15 @@ def revoke_project_api_key( def rotate_webhook_signing_secret( self, input: RotateWebhookSigningSecretInput ) -> ( - models.RotateWebhookSigningSecretResponse200ApplicationJson - | RawResponse[models.RotateWebhookSigningSecretResponse200ApplicationJson] + models.RotateWebhookSigningSecretResponse + | RawResponse[models.RotateWebhookSigningSecretResponse] ): "Rotate a webhook signing secret\n\nRotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_ROTATE_WEBHOOK_SIGNING_SECRET, payload) return response if self._raw else response.data - def update( - self, input: UpdateProjectInput - ) -> ( - models.UpdateProjectResponse200ApplicationJson - | RawResponse[models.UpdateProjectResponse200ApplicationJson] - ): + def update(self, input: UpdateProjectInput) -> models.Project | RawResponse[models.Project]: "Update a project\n\nUpdates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_PROJECT, payload) @@ -4983,10 +4781,7 @@ def update( def update_project_api_key( self, input: UpdateProjectApiKeyInput - ) -> ( - models.UpdateProjectApiKeyResponse200ApplicationJson - | RawResponse[models.UpdateProjectApiKeyResponse200ApplicationJson] - ): + ) -> models.ProjectApiKeyResponse | RawResponse[models.ProjectApiKeyResponse]: "Update a project API key's permissions\n\nReplaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_PROJECT_API_KEY, payload) @@ -4994,10 +4789,7 @@ def update_project_api_key( def update_webhook_destination( self, input: UpdateWebhookDestinationInput - ) -> ( - models.UpdateWebhookDestinationResponse200ApplicationJson - | RawResponse[models.UpdateWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Update a webhook destination\n\nUpdates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_WEBHOOK_DESTINATION, payload) @@ -5005,14 +4797,7 @@ def update_webhook_destination( def upload_attachment( self, input: UploadAttachmentInput - ) -> ( - models.UploadAttachmentResponse200ApplicationJson - | models.UploadAttachmentResponse201ApplicationJson - | RawResponse[ - models.UploadAttachmentResponse200ApplicationJson - | models.UploadAttachmentResponse201ApplicationJson - ] - ): + ) -> models.Attachment | RawResponse[models.Attachment]: "Upload an Attachment\n\nUploads a file and returns its Attachment once ready to download." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True, exclude={"body"}) payload["body"] = input.body.root if input.body is not None else None @@ -5027,10 +4812,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def authorize( self, input: DeviceAuthorizeInput | None = None - ) -> ( - models.DeviceAuthorizeResponse200ApplicationJson - | RawResponse[models.DeviceAuthorizeResponse200ApplicationJson] - ): + ) -> models.DeviceAuthorizeResponse | RawResponse[models.DeviceAuthorizeResponse]: "Start Device Authorization\n\nStarts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored." payload = (input or DeviceAuthorizeInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -5040,10 +4822,7 @@ def authorize( def token( self, input: DeviceTokenInput - ) -> ( - models.DeviceTokenResponse200ApplicationJson - | RawResponse[models.DeviceTokenResponse200ApplicationJson] - ): + ) -> models.DeviceTokenResponse | RawResponse[models.DeviceTokenResponse]: "Exchange Device Code or Refresh Token\n\nExchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.\n\nThis SDK method sends uncompressed JSON (application/json). Other request formats described above apply to direct HTTP requests." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_DEVICE_TOKEN, payload) @@ -5059,8 +4838,8 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def begin_invitation_sso( self, input: BeginInvitationSsoInput ) -> ( - models.BeginInvitationSsoResponse200ApplicationJson - | RawResponse[models.BeginInvitationSsoResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate to an invitation's organization SSO connection\n\nReturns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5070,8 +4849,8 @@ def begin_invitation_sso( def begin_organization_authentication( self, input: BeginOrganizationAuthenticationInput ) -> ( - models.BeginOrganizationAuthenticationResponse200ApplicationJson - | RawResponse[models.BeginOrganizationAuthenticationResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate to the current organization SSO connection\n\nReturns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5081,8 +4860,8 @@ def begin_organization_authentication( def begin_organization_closure_authentication( self, input: BeginOrganizationClosureAuthenticationInput ) -> ( - models.BeginOrganizationClosureAuthenticationResponse200ApplicationJson - | RawResponse[models.BeginOrganizationClosureAuthenticationResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate the current Owner to inspect organization closure\n\nReturns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5092,8 +4871,8 @@ def begin_organization_closure_authentication( def begin_organization_sso_admission( self, input: BeginOrganizationSsoAdmissionInput ) -> ( - models.BeginOrganizationSsoAdmissionResponse200ApplicationJson - | RawResponse[models.BeginOrganizationSsoAdmissionResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Begin organization SSO admission for an existing Account\n\nReturns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5103,20 +4882,25 @@ def begin_organization_sso_admission( def create_organization_sso_portal_link( self, input: CreateOrganizationSsoPortalLinkInput ) -> ( - models.CreateOrganizationSsoPortalLinkResponse200ApplicationJson - | RawResponse[models.CreateOrganizationSsoPortalLinkResponse200ApplicationJson] + models.CreateOrganizationSsoPortalLinkResponse + | RawResponse[models.CreateOrganizationSsoPortalLinkResponse] ): "Create organization SSO setup portal\n\nReturns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_ORGANIZATION_SSO_PORTAL_LINK, payload) return response if self._raw else response.data + def disable_organization_sso( + self, input: DisableOrganizationSsoInput + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: + "Turn organization SSO off\n\nDeletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run." + payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) + response = self._transport.request(_OP_DISABLE_ORGANIZATION_SSO, payload) + return response if self._raw else response.data + def get_organization_connection_status( self, input: GetOrganizationConnectionStatusInput - ) -> ( - models.GetOrganizationConnectionStatusResponse200ApplicationJson - | RawResponse[models.GetOrganizationConnectionStatusResponse200ApplicationJson] - ): + ) -> models.OrganizationConnectionStatus | RawResponse[models.OrganizationConnectionStatus]: "Read organization and own membership synchronization\n\nRequires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_ORGANIZATION_CONNECTION_STATUS, payload) @@ -5124,10 +4908,7 @@ def get_organization_connection_status( def get_organization_sso_configuration( self, input: GetOrganizationSsoConfigurationInput - ) -> ( - models.GetOrganizationSsoConfigurationResponse200ApplicationJson - | RawResponse[models.GetOrganizationSsoConfigurationResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Read organization SSO configuration\n\nReturns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_GET_ORGANIZATION_SSO_CONFIGURATION, payload) @@ -5135,10 +4916,7 @@ def get_organization_sso_configuration( def list_oauth_scopes( self, input: ListOauthScopesInput | None = None - ) -> ( - models.ListOauthScopesResponse200ApplicationJson - | RawResponse[models.ListOauthScopesResponse200ApplicationJson] - ): + ) -> models.ListOauthScopesResponse | RawResponse[models.ListOauthScopesResponse]: "List OAuth scopes\n\nLists the business permissions available to OAuth applications." payload = (input or ListOauthScopesInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -5148,10 +4926,7 @@ def list_oauth_scopes( def refresh_organization_sso_connection( self, input: RefreshOrganizationSsoConnectionInput - ) -> ( - models.RefreshOrganizationSsoConnectionResponse200ApplicationJson - | RawResponse[models.RefreshOrganizationSsoConnectionResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Refresh organization SSO connection\n\nRefreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_REFRESH_ORGANIZATION_SSO_CONNECTION, payload) @@ -5159,10 +4934,7 @@ def refresh_organization_sso_connection( def retry_organization_connection_sync( self, input: RetryOrganizationConnectionSyncInput - ) -> ( - models.RetryOrganizationConnectionSyncResponse200ApplicationJson - | RawResponse[models.RetryOrganizationConnectionSyncResponse200ApplicationJson] - ): + ) -> models.OrganizationConnectionStatus | RawResponse[models.OrganizationConnectionStatus]: "Retry own organization connection synchronization\n\nReconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RETRY_ORGANIZATION_CONNECTION_SYNC, payload) @@ -5170,10 +4942,7 @@ def retry_organization_connection_sync( def start_enterprise_login( self, input: StartEnterpriseLoginInput - ) -> ( - models.StartEnterpriseLoginResponse200ApplicationJson - | RawResponse[models.StartEnterpriseLoginResponse200ApplicationJson] - ): + ) -> models.StartEnterpriseLoginResponse | RawResponse[models.StartEnterpriseLoginResponse]: "Start company sign-in without an existing Account\n\nReturns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_START_ENTERPRISE_LOGIN, payload) @@ -5181,10 +4950,7 @@ def start_enterprise_login( def update_organization_sso_policy( self, input: UpdateOrganizationSsoPolicyInput - ) -> ( - models.UpdateOrganizationSsoPolicyResponse200ApplicationJson - | RawResponse[models.UpdateOrganizationSsoPolicyResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Update organization SSO policy\n\nUpdates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_ORGANIZATION_SSO_POLICY, payload) @@ -5198,10 +4964,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def cancel_subscription( self, input: CancelSubscriptionInput - ) -> ( - models.CancelSubscriptionResponse200ApplicationJson - | RawResponse[models.CancelSubscriptionResponse200ApplicationJson] - ): + ) -> models.CancelSubscriptionResponse | RawResponse[models.CancelSubscriptionResponse]: "Cancel a category at the end of its billing period\n\nSchedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CANCEL_SUBSCRIPTION, payload) @@ -5210,12 +4973,9 @@ def cancel_subscription( def change_plan( self, input: ChangePlanInput ) -> ( - models.ChangePlanResponse200ApplicationJson - | models.ChangePlanResponse202ApplicationJson - | RawResponse[ - models.ChangePlanResponse200ApplicationJson - | models.ChangePlanResponse202ApplicationJson - ] + models.TerminalBillingOperation + | models.PendingBillingOperation + | RawResponse[models.TerminalBillingOperation | models.PendingBillingOperation] ): "Purchase or change a category's plan\n\nPurchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5225,8 +4985,8 @@ def change_plan( def create_organization_payment_method_checkout( self, input: CreateOrganizationPaymentMethodCheckoutInput ) -> ( - models.CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson - | RawResponse[models.CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson] + models.CreateOrganizationPaymentMethodCheckoutResponse + | RawResponse[models.CreateOrganizationPaymentMethodCheckoutResponse] ): "Get a payment-method checkout URL for the organization\n\nReturns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5236,8 +4996,8 @@ def create_organization_payment_method_checkout( def create_organization_setup_intent( self, input: CreateOrganizationSetupIntentInput ) -> ( - models.CreateOrganizationSetupIntentResponse200ApplicationJson - | RawResponse[models.CreateOrganizationSetupIntentResponse200ApplicationJson] + models.CreateOrganizationSetupIntentResponse + | RawResponse[models.CreateOrganizationSetupIntentResponse] ): "Create a SetupIntent for an in-app card capture\n\nCreates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5247,8 +5007,8 @@ def create_organization_setup_intent( def get_organization_billing_overview( self, input: GetOrganizationBillingOverviewInput ) -> ( - models.GetOrganizationBillingOverviewResponse200ApplicationJson - | RawResponse[models.GetOrganizationBillingOverviewResponse200ApplicationJson] + models.GetOrganizationBillingOverviewResponse + | RawResponse[models.GetOrganizationBillingOverviewResponse] ): "Get the organization's billing overview\n\nReturns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5258,8 +5018,8 @@ def get_organization_billing_overview( def get_organization_payment_method( self, input: GetOrganizationPaymentMethodInput ) -> ( - models.GetOrganizationPaymentMethodResponse200ApplicationJson - | RawResponse[models.GetOrganizationPaymentMethodResponse200ApplicationJson] + models.GetOrganizationPaymentMethodResponse + | RawResponse[models.GetOrganizationPaymentMethodResponse] ): "Check the organization for a card on file\n\nReports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5268,10 +5028,7 @@ def get_organization_payment_method( def list_invoices( self, input: ListInvoicesInput - ) -> ( - models.ListInvoicesResponse200ApplicationJson - | RawResponse[models.ListInvoicesResponse200ApplicationJson] - ): + ) -> models.ListInvoicesResponse | RawResponse[models.ListInvoicesResponse]: "List invoices\n\nReturns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_INVOICES, payload) @@ -5279,10 +5036,7 @@ def list_invoices( def resume_subscription( self, input: ResumeSubscriptionInput - ) -> ( - models.ResumeSubscriptionResponse200ApplicationJson - | RawResponse[models.ResumeSubscriptionResponse200ApplicationJson] - ): + ) -> models.ResumeSubscriptionResponse | RawResponse[models.ResumeSubscriptionResponse]: "Resume a category scheduled for cancellation\n\nRemoves a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RESUME_SUBSCRIPTION, payload) @@ -5297,8 +5051,8 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def check_project_slug_availability( self, input: CheckProjectSlugAvailabilityInput ) -> ( - models.CheckProjectSlugAvailabilityResponse200ApplicationJson - | RawResponse[models.CheckProjectSlugAvailabilityResponse200ApplicationJson] + models.CheckProjectSlugAvailabilityResponse + | RawResponse[models.CheckProjectSlugAvailabilityResponse] ): "Check slug availability\n\nReports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5307,21 +5061,13 @@ def check_project_slug_availability( def count( self, input: CountProjectsInput - ) -> ( - models.CountProjectsResponse200ApplicationJson - | RawResponse[models.CountProjectsResponse200ApplicationJson] - ): + ) -> models.ProjectCount | RawResponse[models.ProjectCount]: "Count accessible projects\n\nCounts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_COUNT_PROJECTS, payload) return response if self._raw else response.data - def create( - self, input: CreateProjectInput - ) -> ( - models.CreateProjectResponse201ApplicationJson - | RawResponse[models.CreateProjectResponse201ApplicationJson] - ): + def create(self, input: CreateProjectInput) -> models.Project | RawResponse[models.Project]: "Create a project\n\nCreates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_PROJECT, payload) @@ -5330,8 +5076,7 @@ def create( def get_project_closure_status( self, input: GetProjectClosureStatusInput ) -> ( - models.GetProjectClosureStatusResponse200ApplicationJson - | RawResponse[models.GetProjectClosureStatusResponse200ApplicationJson] + models.GetProjectClosureStatusResponse | RawResponse[models.GetProjectClosureStatusResponse] ): "Read project closure progress\n\nReturns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5340,10 +5085,7 @@ def get_project_closure_status( def list( self, input: ListProjectsInput - ) -> ( - models.ListProjectsResponse200ApplicationJson - | RawResponse[models.ListProjectsResponse200ApplicationJson] - ): + ) -> models.ProjectPage | RawResponse[models.ProjectPage]: "List accessible projects\n\nReturns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_LIST_PROJECTS, payload) @@ -5365,10 +5107,7 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def commit_profile_picture( self, input: CommitAccountProfilePictureInput - ) -> ( - models.CommitAccountProfilePictureResponse200ApplicationJson - | RawResponse[models.CommitAccountProfilePictureResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Commit a profile picture\n\nCommits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_COMMIT_ACCOUNT_PROFILE_PICTURE, payload) @@ -5376,10 +5115,7 @@ def commit_profile_picture( def confirm_phone_verification( self, input: ConfirmAccountPhoneVerificationInput - ) -> ( - models.ConfirmAccountPhoneVerificationResponse200ApplicationJson - | RawResponse[models.ConfirmAccountPhoneVerificationResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Confirm a phone number verification\n\nBinds the number once the code is approved. Repeat calls return the bound Account." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CONFIRM_ACCOUNT_PHONE_VERIFICATION, payload) @@ -5388,8 +5124,7 @@ def confirm_phone_verification( def create_account_service_key( self, input: CreateAccountServiceKeyInput ) -> ( - models.CreateAccountServiceKeyResponse201ApplicationJson - | RawResponse[models.CreateAccountServiceKeyResponse201ApplicationJson] + models.CreateAccountServiceKeyResponse | RawResponse[models.CreateAccountServiceKeyResponse] ): "Create an Account Service Key\n\nCreates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5398,10 +5133,7 @@ def create_account_service_key( def create_profile_picture_upload( self, input: CreateAccountProfilePictureUploadInput - ) -> ( - models.CreateAccountProfilePictureUploadResponse201ApplicationJson - | RawResponse[models.CreateAccountProfilePictureUploadResponse201ApplicationJson] - ): + ) -> models.ProfilePictureUpload | RawResponse[models.ProfilePictureUpload]: "Create a profile picture upload\n\nCreates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_CREATE_ACCOUNT_PROFILE_PICTURE_UPLOAD, payload) @@ -5409,10 +5141,7 @@ def create_profile_picture_upload( def delete( self, input: DeleteAccountInput | None = None - ) -> ( - models.DeleteAccountResponse200ApplicationJson - | RawResponse[models.DeleteAccountResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Delete the authenticated account\n\nDeletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier." payload = (input or DeleteAccountInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -5422,10 +5151,7 @@ def delete( def get( self, input: GetAccountInput | None = None - ) -> ( - models.GetAccountResponse200ApplicationJson - | RawResponse[models.GetAccountResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Get the authenticated account\n\nReturns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile." payload = (input or GetAccountInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -5435,10 +5161,7 @@ def get( def list_account_service_keys( self, input: ListAccountServiceKeysInput | None = None - ) -> ( - models.ListAccountServiceKeysResponse200ApplicationJson - | RawResponse[models.ListAccountServiceKeysResponse200ApplicationJson] - ): + ) -> models.ListAccountServiceKeysResponse | RawResponse[models.ListAccountServiceKeysResponse]: "List Account Service Keys\n\nReturns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created." payload = (input or ListAccountServiceKeysInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -5449,8 +5172,8 @@ def list_account_service_keys( def list_authorized_applications( self, input: ListAuthorizedApplicationsInput | None = None ) -> ( - models.ListAuthorizedApplicationsResponse200ApplicationJson - | RawResponse[models.ListAuthorizedApplicationsResponse200ApplicationJson] + models.ListAuthorizedApplicationsResponse + | RawResponse[models.ListAuthorizedApplicationsResponse] ): "List connected applications\n\nLists the OAuth applications authorized by the authenticated user." payload = (input or ListAuthorizedApplicationsInput()).model_dump( @@ -5461,10 +5184,7 @@ def list_authorized_applications( def reset_profile_picture( self, input: ResetAccountProfilePictureInput - ) -> ( - models.ResetAccountProfilePictureResponse200ApplicationJson - | RawResponse[models.ResetAccountProfilePictureResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Remove a profile picture\n\nRemoves the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_RESET_ACCOUNT_PROFILE_PICTURE, payload) @@ -5473,8 +5193,7 @@ def reset_profile_picture( def revoke_account_service_key( self, input: RevokeAccountServiceKeyInput ) -> ( - models.RevokeAccountServiceKeyResponse200ApplicationJson - | RawResponse[models.RevokeAccountServiceKeyResponse200ApplicationJson] + models.RevokeAccountServiceKeyResponse | RawResponse[models.RevokeAccountServiceKeyResponse] ): "Revoke an Account Service Key\n\nRevokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5492,20 +5211,15 @@ def revoke_authorized_application( def start_phone_verification( self, input: StartAccountPhoneVerificationInput ) -> ( - models.StartAccountPhoneVerificationResponse201ApplicationJson - | RawResponse[models.StartAccountPhoneVerificationResponse201ApplicationJson] + models.StartAccountPhoneVerificationResponse + | RawResponse[models.StartAccountPhoneVerificationResponse] ): "Start a phone number verification\n\nSends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_START_ACCOUNT_PHONE_VERIFICATION, payload) return response if self._raw else response.data - def update( - self, input: UpdateAccountInput - ) -> ( - models.UpdateAccountResponse200ApplicationJson - | RawResponse[models.UpdateAccountResponse200ApplicationJson] - ): + def update(self, input: UpdateAccountInput) -> models.Account | RawResponse[models.Account]: "Update the authenticated account\n\nUpdates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = self._transport.request(_OP_UPDATE_ACCOUNT, payload) @@ -5520,8 +5234,8 @@ def __init__(self, transport: SyncTransport, raw: bool = False) -> None: def create_app_installation_request( self, input: CreateAppInstallationRequestInput ) -> ( - models.CreateAppInstallationRequestResponse201ApplicationJson - | RawResponse[models.CreateAppInstallationRequestResponse201ApplicationJson] + models.CreateAppInstallationRequestResponse + | RawResponse[models.CreateAppInstallationRequestResponse] ): "Request an app installation\n\nAuthenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5531,8 +5245,8 @@ def create_app_installation_request( def redeem_app_installation_delivery( self, input: RedeemAppInstallationDeliveryInput ) -> ( - models.RedeemAppInstallationDeliveryResponse200ApplicationJson - | RawResponse[models.RedeemAppInstallationDeliveryResponse200ApplicationJson] + models.RedeemAppInstallationDeliveryResponse + | RawResponse[models.RedeemAppInstallationDeliveryResponse] ): "Redeem an approved installation credential\n\nThe registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5547,10 +5261,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def create( self, input: CreateSharedLineAssignmentInput - ) -> ( - models.CreateSharedLineAssignmentResponse201ApplicationJson - | RawResponse[models.CreateSharedLineAssignmentResponse201ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Create shared line assignment\n\nMaps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_SHARED_LINE_ASSIGNMENT, payload) @@ -5558,10 +5269,7 @@ async def create( async def get( self, input: GetSharedLineAssignmentInput - ) -> ( - models.GetSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.GetSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Get shared line assignment\n\nReads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_SHARED_LINE_ASSIGNMENT, payload) @@ -5569,10 +5277,7 @@ async def get( async def list( self, input: ListSharedLineAssignmentsInput - ) -> ( - models.ListSharedLineAssignmentsResponse200ApplicationJson - | RawResponse[models.ListSharedLineAssignmentsResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignmentPage | RawResponse[models.SharedLineAssignmentPage]: "List shared line assignments\n\nLists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_SHARED_LINE_ASSIGNMENTS, payload) @@ -5580,10 +5285,7 @@ async def list( async def release( self, input: ReleaseSharedLineAssignmentInput - ) -> ( - models.ReleaseSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.ReleaseSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Release shared line assignment\n\nReleases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RELEASE_SHARED_LINE_ASSIGNMENT, payload) @@ -5605,14 +5307,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def assign_sms_line_campaign( self, input: AssignSmsLineCampaignInput - ) -> ( - models.AssignSmsLineCampaignResponse200ApplicationJson - | models.AssignSmsLineCampaignResponse202ApplicationJson - | RawResponse[ - models.AssignSmsLineCampaignResponse200ApplicationJson - | models.AssignSmsLineCampaignResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Assign or replace SMS line campaign\n\nAttach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_ASSIGN_SMS_LINE_CAMPAIGN, payload) @@ -5620,10 +5315,7 @@ async def assign_sms_line_campaign( async def assign_voice_line_profile( self, input: AssignVoiceLineProfileInput - ) -> ( - models.AssignVoiceLineProfileResponse200ApplicationJson - | RawResponse[models.AssignVoiceLineProfileResponse200ApplicationJson] - ): + ) -> models.VoiceLineProfileAssignment | RawResponse[models.VoiceLineProfileAssignment]: "Assign Voice line profile\n\nAssigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_ASSIGN_VOICE_LINE_PROFILE, payload) @@ -5632,8 +5324,8 @@ async def assign_voice_line_profile( async def batch_update_voice_line_profile_assignments( self, input: BatchUpdateVoiceLineProfileAssignmentsInput ) -> ( - models.BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson - | RawResponse[models.BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson] + models.BatchUpdateVoiceLineProfileAssignmentsResponse + | RawResponse[models.BatchUpdateVoiceLineProfileAssignmentsResponse] ): "Batch update Voice line profile assignments\n\nAtomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5644,11 +5336,8 @@ async def batch_update_voice_line_profile_assignments( async def cancel_operation( self, input: CancelOperationInput - ) -> ( - models.CancelOperationResponse200ApplicationJson - | RawResponse[models.CancelOperationResponse200ApplicationJson] - ): - "Cancel operation\n\nWithdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." + ) -> models.Operation | RawResponse[models.Operation]: + "Cancel operation\n\nWithdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CANCEL_OPERATION, payload) return response if self._raw else response.data @@ -5656,12 +5345,8 @@ async def cancel_operation( async def configure_voice_profile_outbound( self, input: ConfigureVoiceProfileOutboundInput ) -> ( - models.ConfigureVoiceProfileOutboundResponse200ApplicationJson - | models.ConfigureVoiceProfileOutboundResponse201ApplicationJson - | RawResponse[ - models.ConfigureVoiceProfileOutboundResponse200ApplicationJson - | models.ConfigureVoiceProfileOutboundResponse201ApplicationJson - ] + models.ConfigureVoiceProfileOutboundResponse + | RawResponse[models.ConfigureVoiceProfileOutboundResponse] ): "Configure Voice profile outbound credential\n\nConfigures a SIP credential for outbound calls from a profile when the shared profile version matches. authentication.algorithm is required: SHA-256 is recommended, while MD5 is a weaker legacy option supported over UDP, TCP, and TLS; TLS is strongly recommended because UDP and TCP do not encrypt SIP signaling. The profileId may identify the default or an additional profile. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5670,10 +5355,7 @@ async def configure_voice_profile_outbound( async def connect_email_domain( self, input: ConnectEmailDomainInput - ) -> ( - models.ConnectEmailDomainResponse202ApplicationJson - | RawResponse[models.ConnectEmailDomainResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Connect email domain\n\nReserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CONNECT_EMAIL_DOMAIN, payload) @@ -5681,21 +5363,15 @@ async def connect_email_domain( async def connect_telegram_bot( self, input: ConnectTelegramBotInput - ) -> ( - models.ConnectTelegramBotResponse202ApplicationJson - | RawResponse[models.ConnectTelegramBotResponse202ApplicationJson] - ): - "Connect Telegram bot\n\nStarts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged." + ) -> models.Operation | RawResponse[models.Operation]: + "Connect Telegram bot\n\nStarts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CONNECT_TELEGRAM_BOT, payload) return response if self._raw else response.data async def connect_whatsapp_business( self, input: ConnectWhatsappBusinessInput - ) -> ( - models.ConnectWhatsappBusinessResponse202ApplicationJson - | RawResponse[models.ConnectWhatsappBusinessResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Connect WhatsApp Business\n\nExchanges the authorization code Embedded Signup returned and connects exactly the selected phone number as one `whatsapp_sender`. Send the WABA id and phone-number id emitted by the same popup attempt; both are treated as selectors and verified against Meta before use. A selected number that matches a non-retired, same-project `voip_line` is linked to it; a number absent from Photon inventory stays unbound; a matching non-retired `cosmos_line`, foreign VoIP line or unassigned VoIP line fails the operation before registration. Connecting is free — no plan requirement — but Billing must report the project's organization as ready with a payment method on file. The Idempotency-Key is required and permanent: replaying the same key returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CONNECT_WHATSAPP_BUSINESS, payload) @@ -5703,14 +5379,7 @@ async def connect_whatsapp_business( async def create_default_voice_profile( self, input: CreateDefaultVoiceProfileInput - ) -> ( - models.CreateDefaultVoiceProfileResponse200ApplicationJson - | models.CreateDefaultVoiceProfileResponse201ApplicationJson - | RawResponse[ - models.CreateDefaultVoiceProfileResponse200ApplicationJson - | models.CreateDefaultVoiceProfileResponse201ApplicationJson - ] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Create default Voice profile\n\nCreates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_DEFAULT_VOICE_PROFILE, payload) @@ -5718,10 +5387,7 @@ async def create_default_voice_profile( async def create_voice_profile( self, input: CreateVoiceProfileInput - ) -> ( - models.CreateVoiceProfileResponse201ApplicationJson - | RawResponse[models.CreateVoiceProfileResponse201ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Create Voice profile\n\nCreates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_VOICE_PROFILE, payload) @@ -5729,10 +5395,7 @@ async def create_voice_profile( async def create_whatsapp_shared_line_assignment( self, input: CreateWhatsappSharedLineAssignmentInput - ) -> ( - models.CreateWhatsappSharedLineAssignmentResponse201ApplicationJson - | RawResponse[models.CreateWhatsappSharedLineAssignmentResponse201ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Create WhatsApp shared line assignment\n\nMaps an end user's phone number onto one of the project's pooled shared WhatsApp lines, consuming a seat from the project's WhatsApp entitlement. The assigned number is allocated by the server. When an email address is supplied the user is sent an invite asynchronously; the response never reports whether that succeeded. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request( @@ -5742,10 +5405,7 @@ async def create_whatsapp_shared_line_assignment( async def create_whatsapp_voip_sender( self, input: CreateWhatsappVoipSenderInput - ) -> ( - models.CreateWhatsappVoipSenderResponse202ApplicationJson - | RawResponse[models.CreateWhatsappVoipSenderResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Create a VoIP-backed WhatsApp sender\n\nRegisters an active, SMS-capable Photon VoIP line on this project's connected WhatsApp Business Account. The account is resolved server-side; callers never select a WABA. The platform creates or reuses the Meta number, requests and consumes the SMS ownership code internally, verifies it, and registers the sender. displayName is optional; when omitted the project agent profile name is snapshotted before acceptance. The VoIP line remains a separate resource and never receives the whatsapp_business ability." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_WHATSAPP_VOIP_SENDER, payload) @@ -5762,8 +5422,8 @@ async def delete_voice_profile( async def delete_voice_profile_inbound( self, input: DeleteVoiceProfileInboundInput ) -> ( - models.DeleteVoiceProfileInboundResponse200ApplicationJson - | RawResponse[models.DeleteVoiceProfileInboundResponse200ApplicationJson] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Remove Voice profile inbound configuration\n\nRemoves a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5773,8 +5433,8 @@ async def delete_voice_profile_inbound( async def delete_voice_profile_outbound( self, input: DeleteVoiceProfileOutboundInput ) -> ( - models.DeleteVoiceProfileOutboundResponse200ApplicationJson - | RawResponse[models.DeleteVoiceProfileOutboundResponse200ApplicationJson] + models.DeleteVoiceProfileOutboundResponse + | RawResponse[models.DeleteVoiceProfileOutboundResponse] ): "Revoke Voice profile outbound credential\n\nRevokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5783,14 +5443,7 @@ async def delete_voice_profile_outbound( async def disconnect_whatsapp_business_account( self, input: DisconnectWhatsappBusinessAccountInput - ) -> ( - models.DisconnectWhatsappBusinessAccountResponse200ApplicationJson - | models.DisconnectWhatsappBusinessAccountResponse202ApplicationJson - | RawResponse[ - models.DisconnectWhatsappBusinessAccountResponse200ApplicationJson - | models.DisconnectWhatsappBusinessAccountResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Disconnect WhatsApp Business account and numbers\n\nDisconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation; provider refusals appear as operation failures and retain the account for retry with a new key. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_DISCONNECT_WHATSAPP_BUSINESS_ACCOUNT, payload) @@ -5798,10 +5451,7 @@ async def disconnect_whatsapp_business_account( async def get_default_voice_profile( self, input: GetDefaultVoiceProfileInput - ) -> ( - models.GetDefaultVoiceProfileResponse200ApplicationJson - | RawResponse[models.GetDefaultVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Get default Voice profile\n\nGets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_DEFAULT_VOICE_PROFILE, payload) @@ -5809,10 +5459,7 @@ async def get_default_voice_profile( async def get_imessage( self, input: GetProjectImessagePlatformInput - ) -> ( - models.GetProjectImessagePlatformResponse200ApplicationJson - | RawResponse[models.GetProjectImessagePlatformResponse200ApplicationJson] - ): + ) -> models.ProjectPlatformSettings | RawResponse[models.ProjectPlatformSettings]: "Get project iMessage platform\n\nReports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_PROJECT_IMESSAGE_PLATFORM, payload) @@ -5820,21 +5467,15 @@ async def get_imessage( async def get_operation( self, input: GetOperationInput - ) -> ( - models.GetOperationResponse200ApplicationJson - | RawResponse[models.GetOperationResponse200ApplicationJson] - ): - "Get operation\n\nReads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." + ) -> models.GetOperationResponse | RawResponse[models.GetOperationResponse]: + "Get operation\n\nReads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_OPERATION, payload) return response if self._raw else response.data async def get_project_whatsapp_platform( self, input: GetProjectWhatsappPlatformInput - ) -> ( - models.GetProjectWhatsappPlatformResponse200ApplicationJson - | RawResponse[models.GetProjectWhatsappPlatformResponse200ApplicationJson] - ): + ) -> models.ProjectPlatformSettings | RawResponse[models.ProjectPlatformSettings]: "Get project WhatsApp platform\n\nReports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_PROJECT_WHATSAPP_PLATFORM, payload) @@ -5842,10 +5483,7 @@ async def get_project_whatsapp_platform( async def get_resource( self, input: GetResourceInput - ) -> ( - models.GetResourceResponse200ApplicationJson - | RawResponse[models.GetResourceResponse200ApplicationJson] - ): + ) -> models.Resource | RawResponse[models.Resource]: "Get resource\n\nReads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_RESOURCE, payload) @@ -5854,20 +5492,17 @@ async def get_resource( async def get_sms_line_campaign_assignment( self, input: GetSmsLineCampaignAssignmentInput ) -> ( - models.GetSmsLineCampaignAssignmentResponse200ApplicationJson - | RawResponse[models.GetSmsLineCampaignAssignmentResponse200ApplicationJson] + models.GetSmsLineCampaignAssignmentResponse + | RawResponse[models.GetSmsLineCampaignAssignmentResponse] ): - "Read SMS line campaign assignment\n\nRead requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." + "Read SMS line campaign assignment\n\nRead the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_SMS_LINE_CAMPAIGN_ASSIGNMENT, payload) return response if self._raw else response.data async def get_voice_line_profile_assignment( self, input: GetVoiceLineProfileAssignmentInput - ) -> ( - models.GetVoiceLineProfileAssignmentResponse200ApplicationJson - | RawResponse[models.GetVoiceLineProfileAssignmentResponse200ApplicationJson] - ): + ) -> models.VoiceLineProfileAssignment | RawResponse[models.VoiceLineProfileAssignment]: "Get Voice line profile assignment\n\nGets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_VOICE_LINE_PROFILE_ASSIGNMENT, payload) @@ -5875,10 +5510,7 @@ async def get_voice_line_profile_assignment( async def get_voice_profile( self, input: GetVoiceProfileInput - ) -> ( - models.GetVoiceProfileResponse200ApplicationJson - | RawResponse[models.GetVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Get Voice profile\n\nGets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_VOICE_PROFILE, payload) @@ -5886,10 +5518,7 @@ async def get_voice_profile( async def get_whatsapp_business_account( self, input: GetWhatsappBusinessAccountInput - ) -> ( - models.GetWhatsappBusinessAccountResponse200ApplicationJson - | RawResponse[models.GetWhatsappBusinessAccountResponse200ApplicationJson] - ): + ) -> models.WhatsappBusinessAccount | RawResponse[models.WhatsappBusinessAccount]: "Get WhatsApp Business account\n\nGets the one WhatsApp Business Account this project has connected, with its number of live senders. Senders are resources and are listed by GET /platforms/resources?ability=whatsapp_business. The account is not a resource and carries no access token. Meta's retained numbers are listed separately by GET /platforms/whatsapp-business/account/phone-numbers. `subscribedAt` is absent until our app is attached to the account's webhooks. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_WHATSAPP_BUSINESS_ACCOUNT, payload) @@ -5898,8 +5527,8 @@ async def get_whatsapp_business_account( async def get_whatsapp_business_verification_code( self, input: GetWhatsappBusinessVerificationCodeInput ) -> ( - models.GetWhatsappBusinessVerificationCodeResponse200ApplicationJson - | RawResponse[models.GetWhatsappBusinessVerificationCodeResponse200ApplicationJson] + models.GetWhatsappBusinessVerificationCodeResponse + | RawResponse[models.GetWhatsappBusinessVerificationCodeResponse] ): "Get WhatsApp Business verification code\n\nReturns the latest six-digit WhatsApp Business ownership code received by SMS for an active Photon VOIP number, but only when its provider timestamp is strictly newer than the required receivedAfter boundary. receivedAfter must be an RFC 3339 timestamp between this request's arrival time and two minutes before it; once it expires, restart Meta's verification flow with a new boundary. A missing newer code is a retryable 404 with Retry-After: 2. Poll after 2, 4, 8, then 10 seconds, applying ±20% jitter and capping later intervals at 10 seconds. Stop when the original boundary is two minutes old. Responses are never cached. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5910,10 +5539,7 @@ async def get_whatsapp_business_verification_code( async def get_whatsapp_shared_line_assignment( self, input: GetWhatsappSharedLineAssignmentInput - ) -> ( - models.GetWhatsappSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.GetWhatsappSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Get WhatsApp shared line assignment\n\nReads one WhatsApp shared line assignment. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_WHATSAPP_SHARED_LINE_ASSIGNMENT, payload) @@ -5922,8 +5548,7 @@ async def get_whatsapp_shared_line_assignment( async def get_whatsapp_signup_config( self, input: GetWhatsappSignupConfigInput ) -> ( - models.GetWhatsappSignupConfigResponse200ApplicationJson - | RawResponse[models.GetWhatsappSignupConfigResponse200ApplicationJson] + models.GetWhatsappSignupConfigResponse | RawResponse[models.GetWhatsappSignupConfigResponse] ): "Get WhatsApp signup config\n\nReturns what the browser needs to open Meta's Embedded Signup popup: the Facebook Login for Business configuration id, the Graph version to run against, and the scopes it will request. Answered in-process rather than forwarded, so the first step of onboarding survives an outage of the private service. Pass `configId` to `FB.login` as `config_id` with `response_type: 'code'` and `override_default_response_type: true`. Do NOT add a `featureType` — omitting it is what keeps the phone-number screen in the flow, and `only_waba_sharing` produces an account with no number that cannot be provisioned. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -5932,10 +5557,7 @@ async def get_whatsapp_signup_config( async def list_number_area_codes( self, input: ListNumberAreaCodesInput - ) -> ( - models.ListNumberAreaCodesResponse200ApplicationJson - | RawResponse[models.ListNumberAreaCodesResponse200ApplicationJson] - ): + ) -> models.ListNumberAreaCodesResponse | RawResponse[models.ListNumberAreaCodesResponse]: "List supported number area codes\n\nLists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_NUMBER_AREA_CODES, payload) @@ -5943,10 +5565,7 @@ async def list_number_area_codes( async def list_number_countries( self, input: ListNumberCountriesInput - ) -> ( - models.ListNumberCountriesResponse200ApplicationJson - | RawResponse[models.ListNumberCountriesResponse200ApplicationJson] - ): + ) -> models.ListNumberCountriesResponse | RawResponse[models.ListNumberCountriesResponse]: "List supported number countries\n\nLists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_NUMBER_COUNTRIES, payload) @@ -5954,21 +5573,15 @@ async def list_number_countries( async def list_operations( self, input: ListOperationsInput - ) -> ( - models.ListOperationsResponse200ApplicationJson - | RawResponse[models.ListOperationsResponse200ApplicationJson] - ): - "List operations\n\nLists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." + ) -> models.OperationPage | RawResponse[models.OperationPage]: + "List operations\n\nLists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_OPERATIONS, payload) return response if self._raw else response.data async def list_project_platforms( self, input: ListProjectPlatformsInput - ) -> ( - models.ListProjectPlatformsResponse200ApplicationJson - | RawResponse[models.ListProjectPlatformsResponse200ApplicationJson] - ): + ) -> models.ListProjectPlatformsResponse | RawResponse[models.ListProjectPlatformsResponse]: "List project platforms\n\nLists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_PROJECT_PLATFORMS, payload) @@ -5976,10 +5589,7 @@ async def list_project_platforms( async def list_resources( self, input: ListResourcesInput - ) -> ( - models.ListResourcesResponse200ApplicationJson - | RawResponse[models.ListResourcesResponse200ApplicationJson] - ): + ) -> models.ResourcePage | RawResponse[models.ResourcePage]: "List resources\n\nLists everything the project holds, oldest first, whatever kind of thing it is — one endpoint and one id shape for numbers, dedicated lines and whatever ships next. Nothing half-built appears here: a resource exists only once it is real, so anything still being provisioned is an operation rather than a resource with a pending flag. Filter by `type`, by `ability` (which matches only abilities that are currently enabled), and by `state` — comma-separated, and absent means every state, including retired ones. `detail` carries a per-type public view: an SMS number's number, a dedicated line's number and whether it is healthy. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_RESOURCES, payload) @@ -5987,10 +5597,7 @@ async def list_resources( async def list_voice_profiles( self, input: ListVoiceProfilesInput - ) -> ( - models.ListVoiceProfilesResponse200ApplicationJson - | RawResponse[models.ListVoiceProfilesResponse200ApplicationJson] - ): + ) -> models.VoiceProfilePage | RawResponse[models.VoiceProfilePage]: "List Voice profiles\n\nLists reusable Voice profiles in this project. Requires platforms:read bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_VOICE_PROFILES, payload) @@ -5999,8 +5606,8 @@ async def list_voice_profiles( async def list_whatsapp_account_phone_numbers( self, input: ListWhatsappAccountPhoneNumbersInput ) -> ( - models.ListWhatsappAccountPhoneNumbersResponse200ApplicationJson - | RawResponse[models.ListWhatsappAccountPhoneNumbersResponse200ApplicationJson] + models.ListWhatsappAccountPhoneNumbersResponse + | RawResponse[models.ListWhatsappAccountPhoneNumbersResponse] ): "List WhatsApp account phone numbers\n\nLists the connected WABA's phone numbers directly from Meta, including numbers whose Photon sender was disconnected. Ownership is photon for a number in this project's current Photon inventory and meta otherwise. Match a Photon SMS number by its E.164 phoneNumber and reuse its existing displayName when reconnecting. A null name is unavailable, not permission to choose a new name. A failed lookup returns an error rather than an empty list. Requires platforms:read on the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6009,10 +5616,7 @@ async def list_whatsapp_account_phone_numbers( async def list_whatsapp_shared_line_assignments( self, input: ListWhatsappSharedLineAssignmentsInput - ) -> ( - models.ListWhatsappSharedLineAssignmentsResponse200ApplicationJson - | RawResponse[models.ListWhatsappSharedLineAssignmentsResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignmentPage | RawResponse[models.SharedLineAssignmentPage]: "List WhatsApp shared line assignments\n\nLists the project's WhatsApp shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_WHATSAPP_SHARED_LINE_ASSIGNMENTS, payload) @@ -6020,32 +5624,23 @@ async def list_whatsapp_shared_line_assignments( async def provision_imessage_dedicated_line( self, input: ProvisionImessageDedicatedLineInput - ) -> ( - models.ProvisionImessageDedicatedLineResponse202ApplicationJson - | RawResponse[models.ProvisionImessageDedicatedLineResponse202ApplicationJson] - ): - "Provision dedicated iMessage line\n\nClaims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." + ) -> models.Operation | RawResponse[models.Operation]: + "Provision dedicated iMessage line\n\nClaims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_PROVISION_IMESSAGE_DEDICATED_LINE, payload) return response if self._raw else response.data async def provision_whatsapp_dedicated_line( self, input: ProvisionWhatsappDedicatedLineInput - ) -> ( - models.ProvisionWhatsappDedicatedLineResponse202ApplicationJson - | RawResponse[models.ProvisionWhatsappDedicatedLineResponse202ApplicationJson] - ): - "Provision dedicated WhatsApp line\n\nProvisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." + ) -> models.Operation | RawResponse[models.Operation]: + "Provision dedicated WhatsApp line\n\nProvisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_PROVISION_WHATSAPP_DEDICATED_LINE, payload) return response if self._raw else response.data async def purchase_sms_number( self, input: PurchaseSmsNumberInput - ) -> ( - models.PurchaseSmsNumberResponse202ApplicationJson - | RawResponse[models.PurchaseSmsNumberResponse202ApplicationJson] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Purchase SMS number\n\nBuys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. Empty inventory keeps the operation running until a number is available or the caller cancels before ordering begins. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_PURCHASE_SMS_NUMBER, payload) @@ -6053,29 +5648,15 @@ async def purchase_sms_number( async def release_imessage_dedicated_line( self, input: ReleaseImessageDedicatedLineInput - ) -> ( - models.ReleaseImessageDedicatedLineResponse200ApplicationJson - | models.ReleaseImessageDedicatedLineResponse202ApplicationJson - | RawResponse[ - models.ReleaseImessageDedicatedLineResponse200ApplicationJson - | models.ReleaseImessageDedicatedLineResponse202ApplicationJson - ] - ): - "Release dedicated iMessage line\n\nRemoves only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." + ) -> models.Operation | RawResponse[models.Operation]: + "Release dedicated iMessage line\n\nRemoves only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RELEASE_IMESSAGE_DEDICATED_LINE, payload) return response if self._raw else response.data async def release_resource( self, input: ReleaseResourceInput - ) -> ( - models.ReleaseResourceResponse200ApplicationJson - | models.ReleaseResourceResponse202ApplicationJson - | RawResponse[ - models.ReleaseResourceResponse200ApplicationJson - | models.ReleaseResourceResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Release resource\n\nGives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RELEASE_RESOURCE, payload) @@ -6083,25 +5664,15 @@ async def release_resource( async def release_whatsapp_dedicated_line( self, input: ReleaseWhatsappDedicatedLineInput - ) -> ( - models.ReleaseWhatsappDedicatedLineResponse200ApplicationJson - | models.ReleaseWhatsappDedicatedLineResponse202ApplicationJson - | RawResponse[ - models.ReleaseWhatsappDedicatedLineResponse200ApplicationJson - | models.ReleaseWhatsappDedicatedLineResponse202ApplicationJson - ] - ): - "Release dedicated WhatsApp line\n\nRemoves only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." + ) -> models.Operation | RawResponse[models.Operation]: + "Release dedicated WhatsApp line\n\nRemoves only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RELEASE_WHATSAPP_DEDICATED_LINE, payload) return response if self._raw else response.data async def release_whatsapp_shared_line_assignment( self, input: ReleaseWhatsappSharedLineAssignmentInput - ) -> ( - models.ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson - | RawResponse[models.ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson] - ): + ) -> models.SharedLineAssignment | RawResponse[models.SharedLineAssignment]: "Release WhatsApp shared line assignment\n\nReleases a WhatsApp shared line assignment, freeing its seat for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request( @@ -6112,12 +5683,8 @@ async def release_whatsapp_shared_line_assignment( async def replace_voice_profile_inbound( self, input: ReplaceVoiceProfileInboundInput ) -> ( - models.ReplaceVoiceProfileInboundResponse200ApplicationJson - | models.ReplaceVoiceProfileInboundResponse201ApplicationJson - | RawResponse[ - models.ReplaceVoiceProfileInboundResponse200ApplicationJson - | models.ReplaceVoiceProfileInboundResponse201ApplicationJson - ] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Create or replace Voice profile inbound configuration\n\nCreates or fully replaces a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. Credentials are required and nullable; null removes destination authentication. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6127,8 +5694,8 @@ async def replace_voice_profile_inbound( async def rotate_voice_profile_outbound_credential( self, input: RotateVoiceProfileOutboundCredentialInput ) -> ( - models.RotateVoiceProfileOutboundCredentialResponse200ApplicationJson - | RawResponse[models.RotateVoiceProfileOutboundCredentialResponse200ApplicationJson] + models.RotateVoiceProfileOutboundCredentialResponse + | RawResponse[models.RotateVoiceProfileOutboundCredentialResponse] ): "Rotate Voice outbound credential\n\nRotates a SIP profile's outbound credential when expectedVersion matches. The profileId may identify the default or an additional profile. Normal rotation gives the previous credential one hour of grace; emergency rotation gives none. The new password is returned once and is never recoverable. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6139,14 +5706,7 @@ async def rotate_voice_profile_outbound_credential( async def unassign_sms_line_campaign( self, input: UnassignSmsLineCampaignInput - ) -> ( - models.UnassignSmsLineCampaignResponse200ApplicationJson - | models.UnassignSmsLineCampaignResponse202ApplicationJson - | RawResponse[ - models.UnassignSmsLineCampaignResponse200ApplicationJson - | models.UnassignSmsLineCampaignResponse202ApplicationJson - ] - ): + ) -> models.Operation | RawResponse[models.Operation]: "Remove SMS line campaign\n\nAny project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UNASSIGN_SMS_LINE_CAMPAIGN, payload) @@ -6162,10 +5722,7 @@ async def unassign_voice_line_profile( async def update_default_voice_profile( self, input: UpdateDefaultVoiceProfileInput - ) -> ( - models.UpdateDefaultVoiceProfileResponse200ApplicationJson - | RawResponse[models.UpdateDefaultVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Update default Voice profile\n\nPatches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_DEFAULT_VOICE_PROFILE, payload) @@ -6173,10 +5730,7 @@ async def update_default_voice_profile( async def update_voice_profile( self, input: UpdateVoiceProfileInput - ) -> ( - models.UpdateVoiceProfileResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileResponse200ApplicationJson] - ): + ) -> models.VoiceProfile | RawResponse[models.VoiceProfile]: "Update Voice profile\n\nPatches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_VOICE_PROFILE, payload) @@ -6185,8 +5739,8 @@ async def update_voice_profile( async def update_voice_profile_inbound( self, input: UpdateVoiceProfileInboundInput ) -> ( - models.UpdateVoiceProfileInboundResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileInboundResponse200ApplicationJson] + models.VoiceProfileInboundConfiguration + | RawResponse[models.VoiceProfileInboundConfiguration] ): "Update Voice profile inbound configuration\n\nUpdates selected fields of a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. At least one of destinationUri or credentials is required. Credential omission preserves destination authentication, null removes it, and an object replaces it atomically. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6196,8 +5750,8 @@ async def update_voice_profile_inbound( async def update_voice_profile_outbound_authentication( self, input: UpdateVoiceProfileOutboundAuthenticationInput ) -> ( - models.UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson - | RawResponse[models.UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson] + models.UpdateVoiceProfileOutboundAuthenticationResponse + | RawResponse[models.UpdateVoiceProfileOutboundAuthenticationResponse] ): "Update Voice profile outbound authentication policy\n\nChanges a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6214,10 +5768,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def commit_avatar( self, input: CommitAgentProfileAvatarInput - ) -> ( - models.CommitAgentProfileAvatarResponse200ApplicationJson - | RawResponse[models.CommitAgentProfileAvatarResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Commit an agent avatar\n\nCommits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_COMMIT_AGENT_PROFILE_AVATAR, payload) @@ -6225,10 +5776,7 @@ async def commit_avatar( async def create_avatar_upload( self, input: CreateAgentProfileAvatarUploadInput - ) -> ( - models.CreateAgentProfileAvatarUploadResponse201ApplicationJson - | RawResponse[models.CreateAgentProfileAvatarUploadResponse201ApplicationJson] - ): + ) -> models.AgentProfileAvatarUpload | RawResponse[models.AgentProfileAvatarUpload]: "Create an agent avatar upload\n\nCreates a ten-minute, Project-bound presigned S3 POST for a JPEG, PNG, or WebP agent avatar up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAgentProfileAvatar with the returned uploadId. Do not cache or log the upload URL or form fields." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_AGENT_PROFILE_AVATAR_UPLOAD, payload) @@ -6236,10 +5784,7 @@ async def create_avatar_upload( async def get( self, input: GetAgentProfileInput - ) -> ( - models.GetAgentProfileResponse200ApplicationJson - | RawResponse[models.GetAgentProfileResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Get an agent profile\n\nReturns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_AGENT_PROFILE, payload) @@ -6247,10 +5792,7 @@ async def get( async def reset_avatar( self, input: ResetAgentProfileAvatarInput - ) -> ( - models.ResetAgentProfileAvatarResponse200ApplicationJson - | RawResponse[models.ResetAgentProfileAvatarResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Reset an agent avatar\n\nReplaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RESET_AGENT_PROFILE_AVATAR, payload) @@ -6258,10 +5800,7 @@ async def reset_avatar( async def update( self, input: UpdateAgentProfileInput - ) -> ( - models.UpdateAgentProfileResponse200ApplicationJson - | RawResponse[models.UpdateAgentProfileResponse200ApplicationJson] - ): + ) -> models.AgentProfile | RawResponse[models.AgentProfile]: "Update an agent profile\n\nUpdates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_AGENT_PROFILE, payload) @@ -6275,10 +5814,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def get_operation( self, input: GetBillingOperationInput - ) -> ( - models.GetBillingOperationResponse200ApplicationJson - | RawResponse[models.GetBillingOperationResponse200ApplicationJson] - ): + ) -> models.BillingOperation | RawResponse[models.BillingOperation]: "Get a billing operation snapshot\n\nReturns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_BILLING_OPERATION, payload) @@ -6286,10 +5822,7 @@ async def get_operation( async def get_overview( self, input: GetBillingOverviewInput - ) -> ( - models.GetBillingOverviewResponse200ApplicationJson - | RawResponse[models.GetBillingOverviewResponse200ApplicationJson] - ): + ) -> models.GetBillingOverviewResponse | RawResponse[models.GetBillingOverviewResponse]: "Get the project's billing overview\n\nReturns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_BILLING_OVERVIEW, payload) @@ -6297,11 +5830,8 @@ async def get_overview( async def list_billing_plans( self, input: ListBillingPlansInput - ) -> ( - models.ListBillingPlansResponse200ApplicationJson - | RawResponse[models.ListBillingPlansResponse200ApplicationJson] - ): - "List billing plans available to a project\n\nLists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." + ) -> models.ListBillingPlansResponse | RawResponse[models.ListBillingPlansResponse]: + "List available billing plans\n\nLists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_BILLING_PLANS, payload) return response if self._raw else response.data @@ -6317,10 +5847,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def create_project_api_key( self, input: CreateProjectApiKeyInput - ) -> ( - models.CreateProjectApiKeyResponse201ApplicationJson - | RawResponse[models.CreateProjectApiKeyResponse201ApplicationJson] - ): + ) -> models.CreateProjectApiKeyResponse | RawResponse[models.CreateProjectApiKeyResponse]: "Create a project API key\n\nCreates a key bound to the selected project using the supplied name, permissions and optional expiry. The secret is returned only in this response and in idempotent replays of it; store it securely because other reads never return it. The key is scoped to this project and does not grant account-level access. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_PROJECT_API_KEY, payload) @@ -6329,8 +5856,8 @@ async def create_project_api_key( async def create_webhook_destination( self, input: CreateWebhookDestinationInput ) -> ( - models.CreateWebhookDestinationResponse201ApplicationJson - | RawResponse[models.CreateWebhookDestinationResponse201ApplicationJson] + models.CreateWebhookDestinationResponse + | RawResponse[models.CreateWebhookDestinationResponse] ): "Create a webhook destination\n\nCreates a webhook destination for the selected project using its URL, payload API version, event selection and other documented settings. The response includes the signing secret, which is returned only in this response and in idempotent replays of it, never by destination reads; store it securely for signature verification. The API version must be selectable and selected event types must belong to that version's catalog. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6339,10 +5866,7 @@ async def create_webhook_destination( async def delete( self, input: DeleteProjectInput - ) -> ( - models.DeleteProjectResponse200ApplicationJson - | RawResponse[models.DeleteProjectResponse200ApplicationJson] - ): + ) -> models.Project | RawResponse[models.Project]: "Delete a project\n\nStarts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_DELETE_PROJECT, payload) @@ -6350,10 +5874,7 @@ async def delete( async def delete_webhook_destination( self, input: DeleteWebhookDestinationInput - ) -> ( - models.DeleteWebhookDestinationResponse200ApplicationJson - | RawResponse[models.DeleteWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Delete a webhook destination\n\nDeletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_DELETE_WEBHOOK_DESTINATION, payload) @@ -6367,12 +5888,7 @@ async def download_attachment( response = await self._transport.request(_OP_DOWNLOAD_ATTACHMENT, payload) return response if self._raw else response.data - async def get( - self, input: GetProjectInput - ) -> ( - models.GetProjectResponse200ApplicationJson - | RawResponse[models.GetProjectResponse200ApplicationJson] - ): + async def get(self, input: GetProjectInput) -> models.Project | RawResponse[models.Project]: "Get a project\n\nReturns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_PROJECT, payload) @@ -6380,10 +5896,7 @@ async def get( async def get_attachment( self, input: GetAttachmentInput - ) -> ( - models.GetAttachmentResponse200ApplicationJson - | RawResponse[models.GetAttachmentResponse200ApplicationJson] - ): + ) -> models.Attachment | RawResponse[models.Attachment]: "Get an Attachment\n\nReturns an Attachment's metadata. Use the content endpoint to download its bytes." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_ATTACHMENT, payload) @@ -6392,8 +5905,8 @@ async def get_attachment( async def get_message_metrics_backfill( self, input: GetMessageMetricsBackfillInput ) -> ( - models.GetMessageMetricsBackfillResponse200ApplicationJson - | RawResponse[models.GetMessageMetricsBackfillResponse200ApplicationJson] + models.GetMessageMetricsBackfillResponse + | RawResponse[models.GetMessageMetricsBackfillResponse] ): "Get Metrics historical backfill status\n\nReturns historical metrics update progress. Completion reflects lastVerifiedAt; queries remain available during updates." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6403,8 +5916,8 @@ async def get_message_metrics_backfill( async def get_message_metrics_sql_schema( self, input: GetMessageMetricsSqlSchemaInput ) -> ( - models.GetMessageMetricsSqlSchemaResponse200ApplicationJson - | RawResponse[models.GetMessageMetricsSqlSchemaResponse200ApplicationJson] + models.GetMessageMetricsSqlSchemaResponse + | RawResponse[models.GetMessageMetricsSqlSchemaResponse] ): "Get messaging and voice metrics SQL schema\n\nReturns the message_events SQL schema, supported queries, and limits for the selected API version." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6413,10 +5926,7 @@ async def get_message_metrics_sql_schema( async def get_webhook_destination( self, input: GetWebhookDestinationInput - ) -> ( - models.GetWebhookDestinationResponse200ApplicationJson - | RawResponse[models.GetWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Get a webhook destination\n\nReturns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_WEBHOOK_DESTINATION, payload) @@ -6424,11 +5934,7 @@ async def get_webhook_destination( async def get_webhook_event_schema( self, input: GetWebhookEventSchemaInput - ) -> ( - models.GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson - | None - | RawResponse[models.GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson | None] - ): + ) -> models.WebhookEventSchema | None | RawResponse[models.WebhookEventSchema | None]: "Get a webhook event schema\n\nReturns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_WEBHOOK_EVENT_SCHEMA, payload) @@ -6436,10 +5942,7 @@ async def get_webhook_event_schema( async def list_attachments( self, input: ListAttachmentsInput - ) -> ( - models.ListAttachmentsResponse200ApplicationJson - | RawResponse[models.ListAttachmentsResponse200ApplicationJson] - ): + ) -> models.AttachmentPage | RawResponse[models.AttachmentPage]: "List Project Attachments\n\nLists the Project's Attachment metadata, with optional time filters." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_ATTACHMENTS, payload) @@ -6447,11 +5950,8 @@ async def list_attachments( async def list_project_api_keys( self, input: ListProjectApiKeysInput - ) -> ( - models.ListProjectApiKeysResponse200ApplicationJson - | RawResponse[models.ListProjectApiKeysResponse200ApplicationJson] - ): - "List project API keys" + ) -> models.ListProjectApiKeysResponse | RawResponse[models.ListProjectApiKeysResponse]: + "List project API keys\n\nLists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_PROJECT_API_KEYS, payload) return response if self._raw else response.data @@ -6459,9 +5959,9 @@ async def list_project_api_keys( async def list_webhook_api_versions( self, input: ListWebhookApiVersionsInput ) -> ( - models.ListWebhookApiVersionsResponse200ApplicationJson + models.ListWebhookApiVersionsResponse | None - | RawResponse[models.ListWebhookApiVersionsResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookApiVersionsResponse | None] ): "List webhook API versions\n\nLists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6470,10 +5970,7 @@ async def list_webhook_api_versions( async def list_webhook_destinations( self, input: ListWebhookDestinationsInput - ) -> ( - models.ListWebhookDestinationsResponse200ApplicationJson - | RawResponse[models.ListWebhookDestinationsResponse200ApplicationJson] - ): + ) -> models.WebhookDestinationPage | RawResponse[models.WebhookDestinationPage]: "List webhook destinations\n\nReturns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_WEBHOOK_DESTINATIONS, payload) @@ -6482,9 +5979,9 @@ async def list_webhook_destinations( async def list_webhook_egress_addresses( self, input: ListWebhookEgressAddressesInput ) -> ( - models.ListWebhookEgressAddressesResponse200ApplicationJson + models.ListWebhookEgressAddressesResponse | None - | RawResponse[models.ListWebhookEgressAddressesResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookEgressAddressesResponse | None] ): "List webhook egress addresses\n\nReturns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6494,9 +5991,9 @@ async def list_webhook_egress_addresses( async def list_webhook_event_types( self, input: ListWebhookEventTypesInput ) -> ( - models.ListWebhookEventTypesResponse200ApplicationJson + models.ListWebhookEventTypesResponse | None - | RawResponse[models.ListWebhookEventTypesResponse200ApplicationJson | None] + | RawResponse[models.ListWebhookEventTypesResponse | None] ): "List webhook event types\n\nLists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6505,10 +6002,7 @@ async def list_webhook_event_types( async def query_message_metrics( self, input: QueryMessageMetricsInput - ) -> ( - models.QueryMessageMetricsResponse200ApplicationJson - | RawResponse[models.QueryMessageMetricsResponse200ApplicationJson] - ): + ) -> models.QueryMessageMetricsResponse | RawResponse[models.QueryMessageMetricsResponse]: "Query messaging and voice metrics with SQL\n\nRuns read-only SQL over the Project's message_events table. Get the SQL schema for supported columns, capabilities, and limits." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_QUERY_MESSAGE_METRICS, payload) @@ -6516,10 +6010,7 @@ async def query_message_metrics( async def revoke_project_api_key( self, input: RevokeProjectApiKeyInput - ) -> ( - models.RevokeProjectApiKeyResponse200ApplicationJson - | RawResponse[models.RevokeProjectApiKeyResponse200ApplicationJson] - ): + ) -> models.ProjectApiKeyResponse | RawResponse[models.ProjectApiKeyResponse]: "Delete a project API key\n\nRevokes the identified key on the selected project and returns its revoked metadata. Repeating the deletion returns the same revokedAt value. This operation does not rotate the key or return a replacement secret. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_REVOKE_PROJECT_API_KEY, payload) @@ -6528,8 +6019,8 @@ async def revoke_project_api_key( async def rotate_webhook_signing_secret( self, input: RotateWebhookSigningSecretInput ) -> ( - models.RotateWebhookSigningSecretResponse200ApplicationJson - | RawResponse[models.RotateWebhookSigningSecretResponse200ApplicationJson] + models.RotateWebhookSigningSecretResponse + | RawResponse[models.RotateWebhookSigningSecretResponse] ): "Rotate a webhook signing secret\n\nRotates the signing secret for the selected project's webhook destination and returns the new secret. The optional overlapSeconds controls the requested overlap with the previous secret according to the documented request constraints. Store the new secret securely and update the receiver's signature verification configuration; it is returned only in this response and in idempotent replays of it, never by destination reads. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6538,10 +6029,7 @@ async def rotate_webhook_signing_secret( async def update( self, input: UpdateProjectInput - ) -> ( - models.UpdateProjectResponse200ApplicationJson - | RawResponse[models.UpdateProjectResponse200ApplicationJson] - ): + ) -> models.Project | RawResponse[models.Project]: "Update a project\n\nUpdates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_PROJECT, payload) @@ -6549,10 +6037,7 @@ async def update( async def update_project_api_key( self, input: UpdateProjectApiKeyInput - ) -> ( - models.UpdateProjectApiKeyResponse200ApplicationJson - | RawResponse[models.UpdateProjectApiKeyResponse200ApplicationJson] - ): + ) -> models.ProjectApiKeyResponse | RawResponse[models.ProjectApiKeyResponse]: "Update a project API key's permissions\n\nReplaces the identified project key's permission list with the supplied permissions and returns the updated metadata. Sending the permission list the key already has leaves it unchanged. This request does not create a new secret or change the key's project binding. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_PROJECT_API_KEY, payload) @@ -6560,10 +6045,7 @@ async def update_project_api_key( async def update_webhook_destination( self, input: UpdateWebhookDestinationInput - ) -> ( - models.UpdateWebhookDestinationResponse200ApplicationJson - | RawResponse[models.UpdateWebhookDestinationResponse200ApplicationJson] - ): + ) -> models.WebhookDestination | RawResponse[models.WebhookDestination]: "Update a webhook destination\n\nUpdates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_WEBHOOK_DESTINATION, payload) @@ -6571,14 +6053,7 @@ async def update_webhook_destination( async def upload_attachment( self, input: UploadAttachmentInput - ) -> ( - models.UploadAttachmentResponse200ApplicationJson - | models.UploadAttachmentResponse201ApplicationJson - | RawResponse[ - models.UploadAttachmentResponse200ApplicationJson - | models.UploadAttachmentResponse201ApplicationJson - ] - ): + ) -> models.Attachment | RawResponse[models.Attachment]: "Upload an Attachment\n\nUploads a file and returns its Attachment once ready to download." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True, exclude={"body"}) payload["body"] = input.body.root if input.body is not None else None @@ -6593,10 +6068,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def authorize( self, input: DeviceAuthorizeInput | None = None - ) -> ( - models.DeviceAuthorizeResponse200ApplicationJson - | RawResponse[models.DeviceAuthorizeResponse200ApplicationJson] - ): + ) -> models.DeviceAuthorizeResponse | RawResponse[models.DeviceAuthorizeResponse]: "Start Device Authorization\n\nStarts the device authorization flow for a CLI or another device without a browser. Show the verification URL and user code, then poll the token endpoint at the returned interval. No request fields are required; any supplied body is ignored." payload = (input or DeviceAuthorizeInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -6606,10 +6078,7 @@ async def authorize( async def token( self, input: DeviceTokenInput - ) -> ( - models.DeviceTokenResponse200ApplicationJson - | RawResponse[models.DeviceTokenResponse200ApplicationJson] - ): + ) -> models.DeviceTokenResponse | RawResponse[models.DeviceTokenResponse]: "Exchange Device Code or Refresh Token\n\nExchanges an authorized device code or a refresh token for an access token and rotating refresh token. Accepts JSON and form-encoded bodies. While polling, wait at least interval seconds and increase the interval on slow_down. Store the new refresh token after every successful grant.\n\nThis SDK method sends uncompressed JSON (application/json). Other request formats described above apply to direct HTTP requests." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_DEVICE_TOKEN, payload) @@ -6625,8 +6094,8 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def begin_invitation_sso( self, input: BeginInvitationSsoInput ) -> ( - models.BeginInvitationSsoResponse200ApplicationJson - | RawResponse[models.BeginInvitationSsoResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate to an invitation's organization SSO connection\n\nReturns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6636,8 +6105,8 @@ async def begin_invitation_sso( async def begin_organization_authentication( self, input: BeginOrganizationAuthenticationInput ) -> ( - models.BeginOrganizationAuthenticationResponse200ApplicationJson - | RawResponse[models.BeginOrganizationAuthenticationResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate to the current organization SSO connection\n\nReturns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6647,8 +6116,8 @@ async def begin_organization_authentication( async def begin_organization_closure_authentication( self, input: BeginOrganizationClosureAuthenticationInput ) -> ( - models.BeginOrganizationClosureAuthenticationResponse200ApplicationJson - | RawResponse[models.BeginOrganizationClosureAuthenticationResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Authenticate the current Owner to inspect organization closure\n\nReturns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6660,8 +6129,8 @@ async def begin_organization_closure_authentication( async def begin_organization_sso_admission( self, input: BeginOrganizationSsoAdmissionInput ) -> ( - models.BeginOrganizationSsoAdmissionResponse200ApplicationJson - | RawResponse[models.BeginOrganizationSsoAdmissionResponse200ApplicationJson] + models.OrganizationAuthenticationRedirect + | RawResponse[models.OrganizationAuthenticationRedirect] ): "Begin organization SSO admission for an existing Account\n\nReturns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6671,20 +6140,25 @@ async def begin_organization_sso_admission( async def create_organization_sso_portal_link( self, input: CreateOrganizationSsoPortalLinkInput ) -> ( - models.CreateOrganizationSsoPortalLinkResponse200ApplicationJson - | RawResponse[models.CreateOrganizationSsoPortalLinkResponse200ApplicationJson] + models.CreateOrganizationSsoPortalLinkResponse + | RawResponse[models.CreateOrganizationSsoPortalLinkResponse] ): "Create organization SSO setup portal\n\nReturns an organization setup portal URL. Supply returnTo and optionally intent, either sso or domain_verification; sso is the default. Open the returned URL to complete the selected setup flow." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_ORGANIZATION_SSO_PORTAL_LINK, payload) return response if self._raw else response.data + async def disable_organization_sso( + self, input: DisableOrganizationSsoInput + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: + "Turn organization SSO off\n\nDeletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run." + payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) + response = await self._transport.request(_OP_DISABLE_ORGANIZATION_SSO, payload) + return response if self._raw else response.data + async def get_organization_connection_status( self, input: GetOrganizationConnectionStatusInput - ) -> ( - models.GetOrganizationConnectionStatusResponse200ApplicationJson - | RawResponse[models.GetOrganizationConnectionStatusResponse200ApplicationJson] - ): + ) -> models.OrganizationConnectionStatus | RawResponse[models.OrganizationConnectionStatus]: "Read organization and own membership synchronization\n\nRequires current human organization membership. Synchronization status does not attest SSO configuration or completed authorization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_ORGANIZATION_CONNECTION_STATUS, payload) @@ -6692,10 +6166,7 @@ async def get_organization_connection_status( async def get_organization_sso_configuration( self, input: GetOrganizationSsoConfigurationInput - ) -> ( - models.GetOrganizationSsoConfigurationResponse200ApplicationJson - | RawResponse[models.GetOrganizationSsoConfigurationResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Read organization SSO configuration\n\nReturns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_GET_ORGANIZATION_SSO_CONFIGURATION, payload) @@ -6703,10 +6174,7 @@ async def get_organization_sso_configuration( async def list_oauth_scopes( self, input: ListOauthScopesInput | None = None - ) -> ( - models.ListOauthScopesResponse200ApplicationJson - | RawResponse[models.ListOauthScopesResponse200ApplicationJson] - ): + ) -> models.ListOauthScopesResponse | RawResponse[models.ListOauthScopesResponse]: "List OAuth scopes\n\nLists the business permissions available to OAuth applications." payload = (input or ListOauthScopesInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -6716,10 +6184,7 @@ async def list_oauth_scopes( async def refresh_organization_sso_connection( self, input: RefreshOrganizationSsoConnectionInput - ) -> ( - models.RefreshOrganizationSsoConnectionResponse200ApplicationJson - | RawResponse[models.RefreshOrganizationSsoConnectionResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Refresh organization SSO connection\n\nRefreshes the selected organization’s SSO connection and returns its current connection state, configuration version and policy synchronization status. This operation takes no request body." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_REFRESH_ORGANIZATION_SSO_CONNECTION, payload) @@ -6727,10 +6192,7 @@ async def refresh_organization_sso_connection( async def retry_organization_connection_sync( self, input: RetryOrganizationConnectionSyncInput - ) -> ( - models.RetryOrganizationConnectionSyncResponse200ApplicationJson - | RawResponse[models.RetryOrganizationConnectionSyncResponse200ApplicationJson] - ): + ) -> models.OrganizationConnectionStatus | RawResponse[models.OrganizationConnectionStatus]: "Retry own organization connection synchronization\n\nReconciles existing local intent. Takes no body and cannot change membership, roles or authentication policy." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RETRY_ORGANIZATION_CONNECTION_SYNC, payload) @@ -6738,10 +6200,7 @@ async def retry_organization_connection_sync( async def start_enterprise_login( self, input: StartEnterpriseLoginInput - ) -> ( - models.StartEnterpriseLoginResponse200ApplicationJson - | RawResponse[models.StartEnterpriseLoginResponse200ApplicationJson] - ): + ) -> models.StartEnterpriseLoginResponse | RawResponse[models.StartEnterpriseLoginResponse]: "Start company sign-in without an existing Account\n\nReturns a sign-in URL without requiring an existing account: the company SSO connection when the target has a ready connection, otherwise ordinary account login. Supply one documented enrollment variant: organizationId with returnTo (optionally invitationToken), invitationToken with returnTo, or retryToken. Open the returned URL to continue authentication; receiving a URL does not complete sign-in. This is a browser flow: the request must come from an allowed Origin, and the retryToken variant also needs the retry cookie set by the failed sign-in, so send it with credentials." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_START_ENTERPRISE_LOGIN, payload) @@ -6749,10 +6208,7 @@ async def start_enterprise_login( async def update_organization_sso_policy( self, input: UpdateOrganizationSsoPolicyInput - ) -> ( - models.UpdateOrganizationSsoPolicyResponse200ApplicationJson - | RawResponse[models.UpdateOrganizationSsoPolicyResponse200ApplicationJson] - ): + ) -> models.OrganizationSsoConfiguration | RawResponse[models.OrganizationSsoConfiguration]: "Update organization SSO policy\n\nUpdates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_ORGANIZATION_SSO_POLICY, payload) @@ -6766,10 +6222,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def cancel_subscription( self, input: CancelSubscriptionInput - ) -> ( - models.CancelSubscriptionResponse200ApplicationJson - | RawResponse[models.CancelSubscriptionResponse200ApplicationJson] - ): + ) -> models.CancelSubscriptionResponse | RawResponse[models.CancelSubscriptionResponse]: "Cancel a category at the end of its billing period\n\nSchedules cancellation of the specified project's billing category at the end of its current period. The category remains active through the returned cancelsAt instant and then stops renewing. This is a scheduled cancellation, not an immediate removal of the remaining period's service. If the category has no active subscription, nothing changes and the response has cancellationScheduled set to false and cancelsAt set to null. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CANCEL_SUBSCRIPTION, payload) @@ -6778,12 +6231,9 @@ async def cancel_subscription( async def change_plan( self, input: ChangePlanInput ) -> ( - models.ChangePlanResponse200ApplicationJson - | models.ChangePlanResponse202ApplicationJson - | RawResponse[ - models.ChangePlanResponse200ApplicationJson - | models.ChangePlanResponse202ApplicationJson - ] + models.TerminalBillingOperation + | models.PendingBillingOperation + | RawResponse[models.TerminalBillingOperation | models.PendingBillingOperation] ): "Purchase or change a category's plan\n\nPurchases or changes the selected project's plan for the supplied category and planCode. A 202 response means the change is pending: poll the returned operation URL and honor Retry-After until it succeeds or fails. A 200 response means the idempotency key resolved to an operation that is already terminal; inspect that result rather than assuming success from the status code alone. Supply the required Idempotency-Key header. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6793,8 +6243,8 @@ async def change_plan( async def create_organization_payment_method_checkout( self, input: CreateOrganizationPaymentMethodCheckoutInput ) -> ( - models.CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson - | RawResponse[models.CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson] + models.CreateOrganizationPaymentMethodCheckoutResponse + | RawResponse[models.CreateOrganizationPaymentMethodCheckoutResponse] ): "Get a payment-method checkout URL for the organization\n\nReturns a hosted payment-method collection URL for the selected organization. An Idempotency-Key header is optional; supply one to make retries safe. Complete the returned checkout flow. Receiving the URL does not mean a card has been saved; check payment-method status afterward." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6806,8 +6256,8 @@ async def create_organization_payment_method_checkout( async def create_organization_setup_intent( self, input: CreateOrganizationSetupIntentInput ) -> ( - models.CreateOrganizationSetupIntentResponse200ApplicationJson - | RawResponse[models.CreateOrganizationSetupIntentResponse200ApplicationJson] + models.CreateOrganizationSetupIntentResponse + | RawResponse[models.CreateOrganizationSetupIntentResponse] ): "Create a SetupIntent for an in-app card capture\n\nCreates payment-provider configuration for collecting a card for the selected organization and returns clientSecret and publishableKey. Supply the required Idempotency-Key header. Complete the provider’s card-collection flow separately and avoid logging the returned client secret." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6817,8 +6267,8 @@ async def create_organization_setup_intent( async def get_organization_billing_overview( self, input: GetOrganizationBillingOverviewInput ) -> ( - models.GetOrganizationBillingOverviewResponse200ApplicationJson - | RawResponse[models.GetOrganizationBillingOverviewResponse200ApplicationJson] + models.GetOrganizationBillingOverviewResponse + | RawResponse[models.GetOrganizationBillingOverviewResponse] ): "Get the organization's billing overview\n\nReturns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6828,8 +6278,8 @@ async def get_organization_billing_overview( async def get_organization_payment_method( self, input: GetOrganizationPaymentMethodInput ) -> ( - models.GetOrganizationPaymentMethodResponse200ApplicationJson - | RawResponse[models.GetOrganizationPaymentMethodResponse200ApplicationJson] + models.GetOrganizationPaymentMethodResponse + | RawResponse[models.GetOrganizationPaymentMethodResponse] ): "Check the organization for a card on file\n\nReports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6838,10 +6288,7 @@ async def get_organization_payment_method( async def list_invoices( self, input: ListInvoicesInput - ) -> ( - models.ListInvoicesResponse200ApplicationJson - | RawResponse[models.ListInvoicesResponse200ApplicationJson] - ): + ) -> models.ListInvoicesResponse | RawResponse[models.ListInvoicesResponse]: "List invoices\n\nReturns a single page of the selected organization's invoices; invoices with a zero total are excluded. Use the documented invoice fields to inspect each invoice's billing state. Listing invoices does not make a payment or modify a subscription." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_INVOICES, payload) @@ -6849,10 +6296,7 @@ async def list_invoices( async def resume_subscription( self, input: ResumeSubscriptionInput - ) -> ( - models.ResumeSubscriptionResponse200ApplicationJson - | RawResponse[models.ResumeSubscriptionResponse200ApplicationJson] - ): + ) -> models.ResumeSubscriptionResponse | RawResponse[models.ResumeSubscriptionResponse]: "Resume a category scheduled for cancellation\n\nRemoves a scheduled cancellation for the specified billing category on the selected project so it can renew normally. This operation resumes a category scheduled to cancel; it is separate from purchasing or changing a plan. Supply both organizationId and projectId to select the project within its organization." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RESUME_SUBSCRIPTION, payload) @@ -6867,8 +6311,8 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def check_project_slug_availability( self, input: CheckProjectSlugAvailabilityInput ) -> ( - models.CheckProjectSlugAvailabilityResponse200ApplicationJson - | RawResponse[models.CheckProjectSlugAvailabilityResponse200ApplicationJson] + models.CheckProjectSlugAvailabilityResponse + | RawResponse[models.CheckProjectSlugAvailabilityResponse] ): "Check slug availability\n\nReports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6877,10 +6321,7 @@ async def check_project_slug_availability( async def count( self, input: CountProjectsInput - ) -> ( - models.CountProjectsResponse200ApplicationJson - | RawResponse[models.CountProjectsResponse200ApplicationJson] - ): + ) -> models.ProjectCount | RawResponse[models.ProjectCount]: "Count accessible projects\n\nCounts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_COUNT_PROJECTS, payload) @@ -6888,10 +6329,7 @@ async def count( async def create( self, input: CreateProjectInput - ) -> ( - models.CreateProjectResponse201ApplicationJson - | RawResponse[models.CreateProjectResponse201ApplicationJson] - ): + ) -> models.Project | RawResponse[models.Project]: "Create a project\n\nCreates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_PROJECT, payload) @@ -6900,8 +6338,7 @@ async def create( async def get_project_closure_status( self, input: GetProjectClosureStatusInput ) -> ( - models.GetProjectClosureStatusResponse200ApplicationJson - | RawResponse[models.GetProjectClosureStatusResponse200ApplicationJson] + models.GetProjectClosureStatusResponse | RawResponse[models.GetProjectClosureStatusResponse] ): "Read project closure progress\n\nReturns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6910,10 +6347,7 @@ async def get_project_closure_status( async def list( self, input: ListProjectsInput - ) -> ( - models.ListProjectsResponse200ApplicationJson - | RawResponse[models.ListProjectsResponse200ApplicationJson] - ): + ) -> models.ProjectPage | RawResponse[models.ProjectPage]: "List accessible projects\n\nReturns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_LIST_PROJECTS, payload) @@ -6935,10 +6369,7 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def commit_profile_picture( self, input: CommitAccountProfilePictureInput - ) -> ( - models.CommitAccountProfilePictureResponse200ApplicationJson - | RawResponse[models.CommitAccountProfilePictureResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Commit a profile picture\n\nCommits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_COMMIT_ACCOUNT_PROFILE_PICTURE, payload) @@ -6946,10 +6377,7 @@ async def commit_profile_picture( async def confirm_phone_verification( self, input: ConfirmAccountPhoneVerificationInput - ) -> ( - models.ConfirmAccountPhoneVerificationResponse200ApplicationJson - | RawResponse[models.ConfirmAccountPhoneVerificationResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Confirm a phone number verification\n\nBinds the number once the code is approved. Repeat calls return the bound Account." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CONFIRM_ACCOUNT_PHONE_VERIFICATION, payload) @@ -6958,8 +6386,7 @@ async def confirm_phone_verification( async def create_account_service_key( self, input: CreateAccountServiceKeyInput ) -> ( - models.CreateAccountServiceKeyResponse201ApplicationJson - | RawResponse[models.CreateAccountServiceKeyResponse201ApplicationJson] + models.CreateAccountServiceKeyResponse | RawResponse[models.CreateAccountServiceKeyResponse] ): "Create an Account Service Key\n\nCreates a service key for the authenticated account with the supplied name and optional expiresAt. Returns key metadata and a one-time credential; store the credential securely because it cannot be retrieved through the listing endpoint. These credentials act as the account and must not be distributed as project-scoped keys. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -6968,10 +6395,7 @@ async def create_account_service_key( async def create_profile_picture_upload( self, input: CreateAccountProfilePictureUploadInput - ) -> ( - models.CreateAccountProfilePictureUploadResponse201ApplicationJson - | RawResponse[models.CreateAccountProfilePictureUploadResponse201ApplicationJson] - ): + ) -> models.ProfilePictureUpload | RawResponse[models.ProfilePictureUpload]: "Create a profile picture upload\n\nCreates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_CREATE_ACCOUNT_PROFILE_PICTURE_UPLOAD, payload) @@ -6979,10 +6403,7 @@ async def create_profile_picture_upload( async def delete( self, input: DeleteAccountInput | None = None - ) -> ( - models.DeleteAccountResponse200ApplicationJson - | RawResponse[models.DeleteAccountResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Delete the authenticated account\n\nDeletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier." payload = (input or DeleteAccountInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -6992,10 +6413,7 @@ async def delete( async def get( self, input: GetAccountInput | None = None - ) -> ( - models.GetAccountResponse200ApplicationJson - | RawResponse[models.GetAccountResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Get the authenticated account\n\nReturns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile." payload = (input or GetAccountInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -7005,10 +6423,7 @@ async def get( async def list_account_service_keys( self, input: ListAccountServiceKeysInput | None = None - ) -> ( - models.ListAccountServiceKeysResponse200ApplicationJson - | RawResponse[models.ListAccountServiceKeysResponse200ApplicationJson] - ): + ) -> models.ListAccountServiceKeysResponse | RawResponse[models.ListAccountServiceKeysResponse]: "List Account Service Keys\n\nReturns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created." payload = (input or ListAccountServiceKeysInput()).model_dump( mode="json", by_alias=True, exclude_unset=True @@ -7019,8 +6434,8 @@ async def list_account_service_keys( async def list_authorized_applications( self, input: ListAuthorizedApplicationsInput | None = None ) -> ( - models.ListAuthorizedApplicationsResponse200ApplicationJson - | RawResponse[models.ListAuthorizedApplicationsResponse200ApplicationJson] + models.ListAuthorizedApplicationsResponse + | RawResponse[models.ListAuthorizedApplicationsResponse] ): "List connected applications\n\nLists the OAuth applications authorized by the authenticated user." payload = (input or ListAuthorizedApplicationsInput()).model_dump( @@ -7031,10 +6446,7 @@ async def list_authorized_applications( async def reset_profile_picture( self, input: ResetAccountProfilePictureInput - ) -> ( - models.ResetAccountProfilePictureResponse200ApplicationJson - | RawResponse[models.ResetAccountProfilePictureResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Remove a profile picture\n\nRemoves the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_RESET_ACCOUNT_PROFILE_PICTURE, payload) @@ -7043,8 +6455,7 @@ async def reset_profile_picture( async def revoke_account_service_key( self, input: RevokeAccountServiceKeyInput ) -> ( - models.RevokeAccountServiceKeyResponse200ApplicationJson - | RawResponse[models.RevokeAccountServiceKeyResponse200ApplicationJson] + models.RevokeAccountServiceKeyResponse | RawResponse[models.RevokeAccountServiceKeyResponse] ): "Revoke an Account Service Key\n\nRevokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -7062,8 +6473,8 @@ async def revoke_authorized_application( async def start_phone_verification( self, input: StartAccountPhoneVerificationInput ) -> ( - models.StartAccountPhoneVerificationResponse201ApplicationJson - | RawResponse[models.StartAccountPhoneVerificationResponse201ApplicationJson] + models.StartAccountPhoneVerificationResponse + | RawResponse[models.StartAccountPhoneVerificationResponse] ): "Start a phone number verification\n\nSends an SMS code. Answers CAPTCHA_REQUIRED with the widget to render when no solved challenge accompanies the request; retry with the returned challengeContext and a token. Rate limited per account, per destination number, and globally; a rejection carries Retry-After." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -7072,10 +6483,7 @@ async def start_phone_verification( async def update( self, input: UpdateAccountInput - ) -> ( - models.UpdateAccountResponse200ApplicationJson - | RawResponse[models.UpdateAccountResponse200ApplicationJson] - ): + ) -> models.Account | RawResponse[models.Account]: "Update the authenticated account\n\nUpdates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) response = await self._transport.request(_OP_UPDATE_ACCOUNT, payload) @@ -7090,8 +6498,8 @@ def __init__(self, transport: AsyncTransport, raw: bool = False) -> None: async def create_app_installation_request( self, input: CreateAppInstallationRequestInput ) -> ( - models.CreateAppInstallationRequestResponse201ApplicationJson - | RawResponse[models.CreateAppInstallationRequestResponse201ApplicationJson] + models.CreateAppInstallationRequestResponse + | RawResponse[models.CreateAppInstallationRequestResponse] ): "Request an app installation\n\nAuthenticates a registered app backend using a short-lived signed client assertion. Creates request metadata only; customer approval is still required." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) @@ -7101,8 +6509,8 @@ async def create_app_installation_request( async def redeem_app_installation_delivery( self, input: RedeemAppInstallationDeliveryInput ) -> ( - models.RedeemAppInstallationDeliveryResponse200ApplicationJson - | RawResponse[models.RedeemAppInstallationDeliveryResponse200ApplicationJson] + models.RedeemAppInstallationDeliveryResponse + | RawResponse[models.RedeemAppInstallationDeliveryResponse] ): "Redeem an approved installation credential\n\nThe registered app backend authenticates with a signed client assertion and a single-use code. Plaintext is returned only once; retries return status and never create another credential." payload = input.model_dump(mode="json", by_alias=True, exclude_unset=True) diff --git a/packages/rust/Cargo.toml b/packages/rust/Cargo.toml index 345fc6c..bf19388 100644 --- a/packages/rust/Cargo.toml +++ b/packages/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "photonhq-api" -version = "0.1.1" +version = "0.2.0" description = "Spargen-generated Photon OpenAPI 3.1 client" edition.workspace = true license.workspace = true diff --git a/packages/rust/README.md b/packages/rust/README.md index 2899743..48e3301 100644 --- a/packages/rust/README.md +++ b/packages/rust/README.md @@ -4,13 +4,6 @@ Rust client for the Photon API, generated from the public OpenAPI contract. Requires Rust 1.88+. The Cargo package is `photonhq-api`; the library is `photon_ai_api`. -> **Preview release.** This version is generated from the current production -> contract before all of its schemas have stable names. Types the contract -> does not name yet have names derived from their operation (for example -> `ListProjectsResponse200ApplicationJson`) or carry a version prefix such as -> `Photon20260701_`. These type names change in 0.2.0, when the contract -> names them; the rename does not change requests, responses or method names. - ## Installation ```sh diff --git a/packages/rust/src/generated.rs b/packages/rust/src/generated.rs index 93fcab5..1652eb5 100644 --- a/packages/rust/src/generated.rs +++ b/packages/rust/src/generated.rs @@ -1,6 +1,6 @@ // Equivalent public models and headers share definitions; request models remain distinct. -// input-sha256: d250bbd79a62ed4b88e56ceed7a2b0b34805853e256a5dd697105c583a638f9b -// spargen-content-sha256-before-sharing: 07282d9754543e5b09796803064dc7e2d0428af997cd5968de45da4c0035d4cd +// input-sha256: 2498a1d1277e1b7c96827213008a056f6d0d600492ac890eed75564675e10efe +// spargen-content-sha256-before-sharing: a0799b171503b85ad1bf0e1ef0dc530803c9c56eb93e8793f6ec59242262c500 // @generated by spargen 0.2.2 // source: openapi/sdk.json // deterministic: same spargen version + spec + config => same bytes @@ -4765,6 +4765,24 @@ pub mod types { ) } } + fn const_organization_sso_required_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("ORGANIZATION_SSO_REQUIRED") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"ORGANIZATION_SSO_REQUIRED\"", + ), + ) + } + } fn const_organization_sync_unavailable_ser( value: &T, serializer: S, @@ -4891,6 +4909,24 @@ pub mod types { ) } } + fn const_organization_sso_required_a764948f_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("Organization SSO Required") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"Organization SSO Required\"", + ), + ) + } + } fn const_organization_synchronization_unavailable_ser( value: &T, serializer: S, @@ -5059,6 +5095,24 @@ pub mod types { Err(serde::ser::Error::custom("expected the constant \"Project Not Found\"")) } } + fn const_query_concurrency_limit_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("QUERY_CONCURRENCY_LIMIT") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"QUERY_CONCURRENCY_LIMIT\"", + ), + ) + } + } fn const_query_resource_limit_ser( value: &T, serializer: S, @@ -5077,6 +5131,24 @@ pub mod types { ) } } + fn const_query_concurrency_limit_9bfa3db6_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("Query Concurrency Limit") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"Query Concurrency Limit\"", + ), + ) + } + } fn const_query_resource_limit_d7d34c69_ser( value: &T, serializer: S, @@ -5503,6 +5575,42 @@ pub mod types { ) } } + fn const_sso_subscription_required_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("SSO Subscription Required") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"SSO Subscription Required\"", + ), + ) + } + } + fn const_sso_subscription_required_789dcc21_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("SSO_SUBSCRIPTION_REQUIRED") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"SSO_SUBSCRIPTION_REQUIRED\"", + ), + ) + } + } fn const_shared_line_cap_exceeded_fd01c974_ser( value: &T, serializer: S, @@ -5784,6 +5892,24 @@ pub mod types { ) } } + fn const_voice_default_profile_deletion_forbidden_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN\"", + ), + ) + } + } fn const_voice_default_profile_exists_ser( value: &T, serializer: S, @@ -5964,6 +6090,24 @@ pub mod types { ) } } + fn const_voice_default_profile_deletion_forbidden_7ab56977_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value.matches_const("Voice Default Profile Deletion Forbidden") { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"Voice Default Profile Deletion Forbidden\"", + ), + ) + } + } fn const_voice_default_profile_exists_068764f8_ser( value: &T, serializer: S, @@ -7538,6 +7682,28 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_organization_sso_required_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value + .matches_const( + "https://photon.codes/docs/problems/organization-sso-required", + ) + { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/organization-sso-required\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_organization_sync_unavailable_ser( value: &T, serializer: S, @@ -7654,6 +7820,26 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_query_concurrency_limit_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value + .matches_const("https://photon.codes/docs/problems/query-concurrency-limit") + { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/query-concurrency-limit\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_query_resource_limit_ser( value: &T, serializer: S, @@ -8036,6 +8222,28 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_sso_subscription_required_ser( + value: &T, + serializer: S, + ) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value + .matches_const( + "https://photon.codes/docs/problems/sso-subscription-required", + ) + { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/sso-subscription-required\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_telegram_project_deleted_ser( value: &T, serializer: S, @@ -8173,6 +8381,28 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_voice_default_profile_deletion_forbidden_ser< + S, + T, + >(value: &T, serializer: S) -> Result + where + S: serde::Serializer, + T: Serialize + ConstField, + { + if value + .matches_const( + "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden", + ) + { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_voice_default_profile_exists_ser( value: &T, serializer: S, @@ -8679,20 +8909,6 @@ pub mod types { Err(serde::ser::Error::custom("expected the constant \"message\"")) } } - fn const_message_events_ser( - value: &T, - serializer: S, - ) -> Result - where - S: serde::Serializer, - T: Serialize + ConstField, - { - if value.matches_const("message_events") { - value.serialize(serializer) - } else { - Err(serde::ser::Error::custom("expected the constant \"message_events\"")) - } - } fn const_organization_ser(value: &T, serializer: S) -> Result where S: serde::Serializer, @@ -10307,6 +10523,24 @@ pub mod types { ) } } + fn const_organization_sso_required_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("ORGANIZATION_SSO_REQUIRED") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"ORGANIZATION_SSO_REQUIRED\"", + ), + ) + } + } fn const_organization_sync_unavailable_de<'de, D, T>( deserializer: D, ) -> Result @@ -10431,6 +10665,24 @@ pub mod types { ) } } + fn const_organization_sso_required_a764948f_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("Organization SSO Required") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"Organization SSO Required\"", + ), + ) + } + } fn const_organization_synchronization_unavailable_de<'de, D, T>( deserializer: D, ) -> Result @@ -10587,6 +10839,24 @@ pub mod types { Err(serde::de::Error::custom("expected the constant \"Project Not Found\"")) } } + fn const_query_concurrency_limit_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("QUERY_CONCURRENCY_LIMIT") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"QUERY_CONCURRENCY_LIMIT\"", + ), + ) + } + } fn const_query_resource_limit_de<'de, D, T>(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -10603,6 +10873,24 @@ pub mod types { ) } } + fn const_query_concurrency_limit_9bfa3db6_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("Query Concurrency Limit") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"Query Concurrency Limit\"", + ), + ) + } + } fn const_query_resource_limit_d7d34c69_de<'de, D, T>( deserializer: D, ) -> Result @@ -11007,6 +11295,42 @@ pub mod types { ) } } + fn const_sso_subscription_required_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("SSO Subscription Required") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"SSO Subscription Required\"", + ), + ) + } + } + fn const_sso_subscription_required_789dcc21_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("SSO_SUBSCRIPTION_REQUIRED") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"SSO_SUBSCRIPTION_REQUIRED\"", + ), + ) + } + } fn const_shared_line_cap_exceeded_fd01c974_de<'de, D, T>( deserializer: D, ) -> Result @@ -11275,6 +11599,24 @@ pub mod types { ) } } + fn const_voice_default_profile_deletion_forbidden_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN\"", + ), + ) + } + } fn const_voice_default_profile_exists_de<'de, D, T>( deserializer: D, ) -> Result @@ -11453,6 +11795,24 @@ pub mod types { ) } } + fn const_voice_default_profile_deletion_forbidden_7ab56977_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value.matches_const("Voice Default Profile Deletion Forbidden") { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"Voice Default Profile Deletion Forbidden\"", + ), + ) + } + } fn const_voice_default_profile_exists_068764f8_de<'de, D, T>( deserializer: D, ) -> Result @@ -13051,6 +13411,28 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_organization_sso_required_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value + .matches_const( + "https://photon.codes/docs/problems/organization-sso-required", + ) + { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/organization-sso-required\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_organization_sync_unavailable_de< 'de, D, @@ -13169,6 +13551,26 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_query_concurrency_limit_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value + .matches_const("https://photon.codes/docs/problems/query-concurrency-limit") + { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/query-concurrency-limit\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_query_resource_limit_de<'de, D, T>( deserializer: D, ) -> Result @@ -13563,6 +13965,28 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_sso_subscription_required_de<'de, D, T>( + deserializer: D, + ) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value + .matches_const( + "https://photon.codes/docs/problems/sso-subscription-required", + ) + { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/sso-subscription-required\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_telegram_project_deleted_de<'de, D, T>( deserializer: D, ) -> Result @@ -13704,6 +14128,30 @@ pub mod types { ) } } + fn const_https_photon_codes_docs_problems_voice_default_profile_deletion_forbidden_de< + 'de, + D, + T, + >(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + T: Deserialize<'de> + ConstField, + { + let value = T::deserialize(deserializer)?; + if value + .matches_const( + "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden", + ) + { + Ok(value) + } else { + Err( + serde::de::Error::custom( + "expected the constant \"https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden\"", + ), + ) + } + } fn const_https_photon_codes_docs_problems_voice_default_profile_exists_de<'de, D, T>( deserializer: D, ) -> Result @@ -14237,18 +14685,6 @@ pub mod types { Err(serde::de::Error::custom("expected the constant \"message\"")) } } - fn const_message_events_de<'de, D, T>(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - T: Deserialize<'de> + ConstField, - { - let value = T::deserialize(deserializer)?; - if value.matches_const("message_events") { - Ok(value) - } else { - Err(serde::de::Error::custom("expected the constant \"message_events\"")) - } - } fn const_organization_de<'de, D, T>(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -14444,73 +14880,221 @@ pub mod types { super::support::deserialize_normalized::(deserializer, normalize) } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignRequestApplicationJson { - #[serde(rename = "campaignId")] - pub campaign_id: String, + pub struct Account { + #[serde(rename = "accountId")] + pub account_id: String, + #[serde(rename = "createdAt")] + pub created_at: Option, + #[serde(rename = "deletedAt")] + pub deleted_at: Option, + #[serde(rename = "email")] + pub email: String, + #[serde(rename = "firstName")] + pub first_name: Option, + #[serde(rename = "lastName")] + pub last_name: Option, + #[serde(rename = "phoneNumber")] + pub phone_number: Option, + #[serde(rename = "phoneVerifiedAt")] + pub phone_verified_at: Option, + #[serde(rename = "pictureUrl")] + pub picture_url: String, + #[serde(rename = "updatedAt")] + pub updated_at: Option, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AccountDeletedProblem { #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", + rename = "code", + deserialize_with = "const_account_deleted_de", + serialize_with = "const_account_deleted_ser", )] - pub expected_version: i64, + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_account_deleted_7029ef3c_de", + serialize_with = "const_account_deleted_7029ef3c_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_account_deleted_de", + serialize_with = "const_https_photon_codes_docs_problems_account_deleted_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignRequestApplicationJson { + #[derive(Debug, Clone)] + pub enum JsonValue { + JsonValueVariant0(Box), + JsonValueVariant1(Box), + JsonValueVariant2(Box), + JsonValueVariant3(Box>>), + JsonValueVariant4(Box>>), + } + impl<'de> serde::Deserialize<'de> for JsonValue { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["campaignId", "expectedVersion"])?; - AssignSmsLineCampaignRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignRequestApplicationJson::deserialize(deserializer) + let value = serde_json::Value::deserialize(deserializer)?; + if value.is_string() { + return serde_json::from_value(value) + .map(JsonValue::JsonValueVariant0) + .map_err(serde::de::Error::custom); + } + if value.is_number() { + return serde_json::from_value(value) + .map(JsonValue::JsonValueVariant1) + .map_err(serde::de::Error::custom); } + if value.is_boolean() { + return serde_json::from_value(value) + .map(JsonValue::JsonValueVariant2) + .map_err(serde::de::Error::custom); + } + if value.is_array() { + return serde_json::from_value(value) + .map(JsonValue::JsonValueVariant3) + .map_err(serde::de::Error::custom); + } + if value.is_object() { + return serde_json::from_value(value) + .map(JsonValue::JsonValueVariant4) + .map_err(serde::de::Error::custom); + } + Err( + serde::de::Error::custom( + "data did not match any variant of union JsonValue", + ), + ) } } - impl serde::Serialize for AssignSmsLineCampaignRequestApplicationJson { + impl serde::Serialize for JsonValue { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - AssignSmsLineCampaignRequestApplicationJson::serialize(self, serializer) + match self { + JsonValue::JsonValueVariant0(inner) => inner.serialize(serializer), + JsonValue::JsonValueVariant1(inner) => inner.serialize(serializer), + JsonValue::JsonValueVariant2(inner) => inner.serialize(serializer), + JsonValue::JsonValueVariant3(inner) => inner.serialize(serializer), + JsonValue::JsonValueVariant4(inner) => inner.serialize(serializer), + } } } #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AccountNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_account_not_found_de", + serialize_with = "const_account_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_account_not_found_db03c960_de", + serialize_with = "const_account_not_found_db03c960_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_account_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_account_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AccountOwnsOrganizationsProblem { + #[serde( + rename = "code", + deserialize_with = "const_account_owns_organizations_de", + serialize_with = "const_account_owns_organizations_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_account_owns_organizations_04e4af1e_de", + serialize_with = "const_account_owns_organizations_04e4af1e_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_account_owns_organizations_de", + serialize_with = "const_https_photon_codes_docs_problems_account_owns_organizations_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse200ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, + pub struct AccountServiceKey { + #[serde(rename = "accountId")] + pub account_id: String, #[serde(rename = "createdAt")] pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: AssignSmsLineCampaignResponse200ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: AssignSmsLineCampaignResponse200ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, + #[serde(rename = "expiresAt")] + pub expires_at: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "revokedAt")] + pub revoked_at: Option, + #[serde(rename = "serviceKeyId")] + pub service_key_id: String, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for AccountServiceKey { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -14522,48 +15106,115 @@ pub mod types { >( &value, &[ - "cancellable", + "accountId", "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", + "expiresAt", + "name", + "revokedAt", + "serviceKeyId", ], )?; - AssignSmsLineCampaignResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) + AccountServiceKey::deserialize(value).map_err(serde::de::Error::custom) } else { - AssignSmsLineCampaignResponse200ApplicationJson::deserialize( - deserializer, - ) + AccountServiceKey::deserialize(deserializer) } } } - impl serde::Serialize for AssignSmsLineCampaignResponse200ApplicationJson { + impl serde::Serialize for AccountServiceKey { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - AssignSmsLineCampaignResponse200ApplicationJson::serialize(self, serializer) + AccountServiceKey::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse200ApplicationJsonerror { - #[serde(rename = "code")] + pub struct AccountServiceKeyLimitReachedProblem { + #[serde( + rename = "code", + deserialize_with = "const_account_service_key_limit_reached_de", + serialize_with = "const_account_service_key_limit_reached_ser", + )] pub code: String, - #[serde(rename = "detail")] - pub detail: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_account_service_key_limit_reached_ade428f0_de", + serialize_with = "const_account_service_key_limit_reached_ade428f0_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_account_service_key_limit_reached_de", + serialize_with = "const_https_photon_codes_docs_problems_account_service_key_limit_reached_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse200ApplicationJsonerror { + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AccountServiceKeyNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_account_service_key_not_found_de", + serialize_with = "const_account_service_key_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_account_service_key_not_found_36cf2448_de", + serialize_with = "const_account_service_key_not_found_36cf2448_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_account_service_key_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_account_service_key_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct AgentProfile { + #[serde(rename = "avatarUrl")] + pub avatar_url: String, + #[serde(rename = "firstName")] + pub first_name: String, + #[serde(rename = "lastName")] + pub last_name: Option, + } + impl<'de> serde::Deserialize<'de> for AgentProfile { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -14572,189 +15223,469 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["code", "detail"])?; - AssignSmsLineCampaignResponse200ApplicationJsonerror::deserialize(value) - .map_err(serde::de::Error::custom) + >(&value, &["avatarUrl", "firstName", "lastName"])?; + AgentProfile::deserialize(value).map_err(serde::de::Error::custom) } else { - AssignSmsLineCampaignResponse200ApplicationJsonerror::deserialize( - deserializer, - ) + AgentProfile::deserialize(deserializer) } } } - impl serde::Serialize for AssignSmsLineCampaignResponse200ApplicationJsonerror { + impl serde::Serialize for AgentProfile { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - AssignSmsLineCampaignResponse200ApplicationJsonerror::serialize( - self, - serializer, - ) + AgentProfile::serialize(self, serializer) } } - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] - pub enum AssignSmsLineCampaignResponse200ApplicationJsonstate { - ///`pending` - Pending, - ///`running` - Running, - ///`succeeded` - Succeeded, - ///`failed` - Failed, - ///`cancelled` - Cancelled, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl AssignSmsLineCampaignResponse200ApplicationJsonstate { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Pending => "pending", - Self::Running => "running", - Self::Succeeded => "succeeded", - Self::Failed => "failed", - Self::Cancelled => "cancelled", - Self::Unknown(value) => value, - } - } + pub enum AgentProfileAvatarContentType { + #[serde(rename = "image/jpeg")] + ImageJpeg, + #[serde(rename = "image/png")] + ImagePng, + #[serde(rename = "image/webp")] + ImageWebp, } - impl std::fmt::Display for AssignSmsLineCampaignResponse200ApplicationJsonstate { + impl std::fmt::Display for AgentProfileAvatarContentType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) + f.write_str( + match self { + AgentProfileAvatarContentType::ImageJpeg => "image/jpeg", + AgentProfileAvatarContentType::ImagePng => "image/png", + AgentProfileAvatarContentType::ImageWebp => "image/webp", + }, + ) } } - impl serde::Serialize for AssignSmsLineCampaignResponse200ApplicationJsonstate { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct AgentProfileAvatarUpload { + #[serde(rename = "expiresAt")] + pub expires_at: DateTime, + #[serde(rename = "formFields")] + pub form_fields: AgentProfileAvatarUploadFormFields, + #[serde(rename = "uploadId")] + pub upload_id: String, + #[serde(rename = "uploadUrl")] + pub upload_url: String, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse200ApplicationJsonstate { + impl<'de> serde::Deserialize<'de> for AgentProfileAvatarUpload { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "pending" => Ok(Self::Pending), - "running" => Ok(Self::Running), - "succeeded" => Ok(Self::Succeeded), - "failed" => Ok(Self::Failed), - "cancelled" => Ok(Self::Cancelled), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `pending`, `running`, `succeeded`, `failed`, `cancelled`", - ), - ) - } - _ => Ok(Self::Unknown(value)), + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["expiresAt", "formFields", "uploadId", "uploadUrl"])?; + AgentProfileAvatarUpload::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + AgentProfileAvatarUpload::deserialize(deserializer) } } } - #[derive(Debug, Clone, PartialEq, Eq)] + impl serde::Serialize for AgentProfileAvatarUpload { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + AgentProfileAvatarUpload::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AgentProfileAvatarUploadFormFields { + #[serde(flatten)] + pub additional: BTreeMap, + } + pub type AllWebhookEvents = Vec; + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] - pub enum AssignSmsLineCampaignResponse200ApplicationJsontype { - ///`resource.provision` - ResourceProvision, - ///`resource.release` - ResourceRelease, - ///`whatsapp.account.disconnect` - WhatsappAccountDisconnect, - ///`sms.campaign.assign` - SmsCampaignAssign, - ///`sms.campaign.unassign` - SmsCampaignUnassign, - /// A value this version of the client does not know, kept as received. - Unknown(String), + pub enum WebhookEventWildcard { + #[serde(rename = "*")] + Asterisk, } - impl AssignSmsLineCampaignResponse200ApplicationJsontype { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::ResourceProvision => "resource.provision", - Self::ResourceRelease => "resource.release", - Self::WhatsappAccountDisconnect => "whatsapp.account.disconnect", - Self::SmsCampaignAssign => "sms.campaign.assign", - Self::SmsCampaignUnassign => "sms.campaign.unassign", - Self::Unknown(value) => value, - } + impl std::fmt::Display for WebhookEventWildcard { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + WebhookEventWildcard::Asterisk => "*", + }, + ) } } - impl std::fmt::Display for AssignSmsLineCampaignResponse200ApplicationJsontype { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ApiKey { + #[serde(rename = "apiKeyId")] + pub api_key_id: String, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "createdByAccountId")] + pub created_by_account_id: String, + #[serde(rename = "expiresAt")] + pub expires_at: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "permissions")] + pub permissions: Vec, + #[serde(rename = "permissionsUpdatedAt")] + pub permissions_updated_at: Option, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "revokedAt")] + pub revoked_at: Option, + } + impl<'de> serde::Deserialize<'de> for ApiKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "apiKeyId", + "createdAt", + "createdByAccountId", + "expiresAt", + "name", + "permissions", + "permissionsUpdatedAt", + "projectId", + "revokedAt", + ], + )?; + ApiKey::deserialize(value).map_err(serde::de::Error::custom) + } else { + ApiKey::deserialize(deserializer) + } } } - impl serde::Serialize for AssignSmsLineCampaignResponse200ApplicationJsontype { + impl serde::Serialize for ApiKey { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - serializer.serialize_str(self.as_str()) + ApiKey::serialize(self, serializer) } } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse200ApplicationJsontype { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "resource.provision" => Ok(Self::ResourceProvision), - "resource.release" => Ok(Self::ResourceRelease), - "whatsapp.account.disconnect" => Ok(Self::WhatsappAccountDisconnect), - "sms.campaign.assign" => Ok(Self::SmsCampaignAssign), - "sms.campaign.unassign" => Ok(Self::SmsCampaignUnassign), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `resource.provision`, `resource.release`, `whatsapp.account.disconnect`, `sms.campaign.assign`, `sms.campaign.unassign`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ApiKeyLimitReachedProblem { + #[serde( + rename = "code", + deserialize_with = "const_api_key_limit_reached_0e20741b_de", + serialize_with = "const_api_key_limit_reached_0e20741b_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_api_key_limit_reached_de", + serialize_with = "const_api_key_limit_reached_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_api_key_limit_reached_de", + serialize_with = "const_https_photon_codes_docs_problems_api_key_limit_reached_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ApiKeyNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_api_key_not_found_0af29523_de", + serialize_with = "const_api_key_not_found_0af29523_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_api_key_not_found_de", + serialize_with = "const_api_key_not_found_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_api_key_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_api_key_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum ApiKeyPermission { + #[serde(rename = "events:read")] + EventsRead, + #[serde(rename = "events:write")] + EventsWrite, + #[serde(rename = "platforms:read")] + PlatformsRead, + #[serde(rename = "platforms:write")] + PlatformsWrite, + #[serde(rename = "project:read")] + ProjectRead, + #[serde(rename = "project:write")] + ProjectWrite, + } + impl std::fmt::Display for ApiKeyPermission { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + ApiKeyPermission::EventsRead => "events:read", + ApiKeyPermission::EventsWrite => "events:write", + ApiKeyPermission::PlatformsRead => "platforms:read", + ApiKeyPermission::PlatformsWrite => "platforms:write", + ApiKeyPermission::ProjectRead => "project:read", + ApiKeyPermission::ProjectWrite => "project:write", + }, + ) } } - pub use self::AssignSmsLineCampaignResponse200ApplicationJson as AssignSmsLineCampaignResponse202ApplicationJson; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonerror as AssignSmsLineCampaignResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as AssignSmsLineCampaignResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as AssignSmsLineCampaignResponse202ApplicationJsontype; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ApiKeyRevokedProblem { + #[serde( + rename = "code", + deserialize_with = "const_api_key_revoked_de77a00f_de", + serialize_with = "const_api_key_revoked_de77a00f_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_api_key_revoked_de", + serialize_with = "const_api_key_revoked_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_api_key_revoked_de", + serialize_with = "const_https_photon_codes_docs_problems_api_key_revoked_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AppInstallationAssertionInvalidProblem { + #[serde( + rename = "code", + deserialize_with = "const_app_installation_assertion_invalid_de", + serialize_with = "const_app_installation_assertion_invalid_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_invalid_installation_client_assertion_de", + serialize_with = "const_invalid_installation_client_assertion_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_invalid_de", + serialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_invalid_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AppInstallationAssertionReplayedProblem { + #[serde( + rename = "code", + deserialize_with = "const_app_installation_assertion_replayed_de", + serialize_with = "const_app_installation_assertion_replayed_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_installation_assertion_already_used_de", + serialize_with = "const_installation_assertion_already_used_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_replayed_de", + serialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_replayed_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AppInstallationConfigChangedProblem { + #[serde( + rename = "code", + deserialize_with = "const_app_installation_config_changed_de", + serialize_with = "const_app_installation_config_changed_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_installation_app_configuration_changed_de", + serialize_with = "const_installation_app_configuration_changed_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_app_installation_config_changed_de", + serialize_with = "const_https_photon_codes_docs_problems_app_installation_config_changed_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AppInstallationDeliveryUnavailableProblem { + #[serde( + rename = "code", + deserialize_with = "const_app_installation_delivery_unavailable_de", + serialize_with = "const_app_installation_delivery_unavailable_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_installation_delivery_unavailable_de", + serialize_with = "const_installation_delivery_unavailable_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_app_installation_delivery_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_app_installation_delivery_unavailable_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse400ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum AssignSmsLineCampaignBadRequestProblem { + SmsCampaignInvalidRequestProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), AssignSmsLineCampaignBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -14770,24 +15701,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/sms-campaign-invalid-request", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -14808,7 +15731,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignBadRequestProblem::SmsCampaignInvalidRequestProblem( inner, ), )); @@ -14825,24 +15748,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -14863,7 +15778,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -14880,24 +15795,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -14918,7 +15825,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( + AssignSmsLineCampaignBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -14976,54 +15883,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignBadRequestProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignBadRequestProblem::SmsCampaignInvalidRequestProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse400ApplicationProblemPlusJson::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( + AssignSmsLineCampaignBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -15032,24 +15930,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -15058,24 +15948,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -15095,15 +15977,14 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignBadRequestProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0 { + pub struct SmsCampaignInvalidRequestProblem { #[serde( rename = "code", deserialize_with = "const_sms_campaign_invalid_request_de", @@ -15137,56 +16018,11 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_invalid_request_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 { + pub struct IdempotencyKeyRequiredProblem { #[serde( rename = "code", deserialize_with = "const_idempotency_key_required_de", @@ -15220,56 +16056,11 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_idempotency_key_required_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 { + pub struct IdempotencyKeyInvalidProblem { #[serde( rename = "code", deserialize_with = "const_idempotency_key_invalid_de", @@ -15303,111 +16094,52 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_idempotency_key_invalid_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse403ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( - Box, + pub enum AssignSmsLineCampaignConflictProblem { + ProjectClosingProblem(Box), + SmsLineUnsupportedProblem(Box), + SmsCampaignNotReadyProblem(Box), + SmsCampaignVersionConflictProblem(Box), + SmsCampaignCapacityExceededProblem(Box), + SmsCampaignReconciliationRequiredProblem( + Box, ), + SmsCampaignMutationInProgressProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), AssignSmsLineCampaignConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -15428,7 +16160,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignConflictProblem::ProjectClosingProblem( inner, ), )); @@ -15436,27 +16168,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SMS_LINE_UNSUPPORTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SMS line unsupported") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/sms-line-unsupported", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -15469,7 +16199,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -15477,7 +16207,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + AssignSmsLineCampaignConflictProblem::SmsLineUnsupportedProblem( inner, ), )); @@ -15485,33 +16215,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("SMS_CAMPAIGN_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Campaign not ready") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/sms-campaign-not-ready", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -15532,7 +16254,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( + AssignSmsLineCampaignConflictProblem::SmsCampaignNotReadyProblem( inner, ), )); @@ -15540,33 +16262,121 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Assignment version conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "https://photon.codes/docs/problems/sms-campaign-version-conflict", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignSmsLineCampaignConflictProblem::SmsCampaignVersionConflictProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign number capacity exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignSmsLineCampaignConflictProblem::SmsCampaignCapacityExceededProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign reconciliation required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", )) .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -15587,7 +16397,54 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( + AssignSmsLineCampaignConflictProblem::SmsCampaignReconciliationRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment mutation in progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1130u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignSmsLineCampaignConflictProblem::SmsCampaignMutationInProgressProblem( inner, ), )); @@ -15605,38 +16462,73 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SMS_LINE_UNSUPPORTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SMS line unsupported") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/sms-line-unsupported", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("SMS_CAMPAIGN_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Campaign not ready") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/sms-campaign-not-ready", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Assignment version conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "https://photon.codes/docs/problems/sms-campaign-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign number capacity exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign reconciliation required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment mutation in progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", ) { (match_count, selected) = select(true); @@ -15648,57 +16540,73 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignConflictProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignSmsLineCampaignConflictProblem::SmsLineUnsupportedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + AssignSmsLineCampaignConflictProblem::SmsCampaignNotReadyProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( + AssignSmsLineCampaignConflictProblem::SmsCampaignVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse403ApplicationProblemPlusJson::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( + AssignSmsLineCampaignConflictProblem::SmsCampaignCapacityExceededProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + AssignSmsLineCampaignConflictProblem::SmsCampaignReconciliationRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + AssignSmsLineCampaignConflictProblem::SmsCampaignMutationInProgressProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -15707,16 +16615,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -15725,24 +16633,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -15751,24 +16651,52 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -15788,19 +16716,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignConflictProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 { + pub struct ProjectClosingProblem { #[serde( rename = "code", - deserialize_with = "const_forbidden_de", - serialize_with = "const_forbidden_ser", + deserialize_with = "const_project_closing_de", + serialize_with = "const_project_closing_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -15820,136 +16747,63 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_forbidden_f216948f_de", - serialize_with = "const_forbidden_f216948f_ser", + deserialize_with = "const_project_is_closing_de", + serialize_with = "const_project_is_closing_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_forbidden_de", - serialize_with = "const_https_photon_codes_docs_problems_forbidden_ser", + deserialize_with = "const_https_photon_codes_docs_problems_project_closing_de", + serialize_with = "const_https_photon_codes_docs_problems_project_closing_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AuthorizationProblemInsufficientScope403 { + pub struct SmsLineUnsupportedProblem { #[serde( rename = "code", - deserialize_with = "const_insufficient_scope_de", - serialize_with = "const_insufficient_scope_ser", + deserialize_with = "const_sms_line_unsupported_b0b4b17e_de", + serialize_with = "const_sms_line_unsupported_b0b4b17e_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] pub detail: Option, #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] pub request_id: Option, #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] pub status: i64, #[serde( rename = "title", - deserialize_with = "const_insufficient_scope_fca53d85_de", - serialize_with = "const_insufficient_scope_fca53d85_ser", + deserialize_with = "const_sms_line_unsupported_de", + serialize_with = "const_sms_line_unsupported_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_insufficient_scope_de", - serialize_with = "const_https_photon_codes_docs_problems_insufficient_scope_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_line_unsupported_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_line_unsupported_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> for AuthorizationProblemInsufficientScope403 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "requestId", - "status", - "title", - "type", - ], - )?; - AuthorizationProblemInsufficientScope403::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - AuthorizationProblemInsufficientScope403::deserialize(deserializer) - } - } - } - impl serde::Serialize for AuthorizationProblemInsufficientScope403 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AuthorizationProblemInsufficientScope403::serialize(self, serializer) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 { + pub struct SmsCampaignNotReadyProblem { #[serde( rename = "code", - deserialize_with = "const_resource_mismatch_de", - serialize_with = "const_resource_mismatch_ser", + deserialize_with = "const_sms_campaign_not_ready_de", + serialize_with = "const_sms_campaign_not_ready_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -15969,70 +16823,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_resource_mismatch_c97fe74e_de", - serialize_with = "const_resource_mismatch_c97fe74e_ser", + deserialize_with = "const_campaign_not_ready_de", + serialize_with = "const_campaign_not_ready_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_resource_mismatch_de", - serialize_with = "const_https_photon_codes_docs_problems_resource_mismatch_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_ready_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_ready_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3 { + pub struct SmsCampaignVersionConflictProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_organization_mismatch_de", - serialize_with = "const_sms_campaign_organization_mismatch_ser", + deserialize_with = "const_sms_campaign_version_conflict_de", + serialize_with = "const_sms_campaign_version_conflict_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -16052,339 +16861,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_campaign_belongs_to_another_organization_de", - serialize_with = "const_campaign_belongs_to_another_organization_ser", + deserialize_with = "const_assignment_version_conflict_de", + serialize_with = "const_assignment_version_conflict_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_organization_mismatch_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_organization_mismatch_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_version_conflict_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_version_conflict_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse404ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-found", - )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line not found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-line-not-found", - )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/sms-campaign-not-found") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line not found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/sms-line-not-found") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse404ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse404ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse404ApplicationProblemPlusJson::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse404ApplicationProblemPlusJson", - ), - ) - } - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0 { + pub struct SmsCampaignCapacityExceededProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_not_found_de", - serialize_with = "const_sms_campaign_not_found_ser", + deserialize_with = "const_sms_campaign_capacity_exceeded_de", + serialize_with = "const_sms_campaign_capacity_exceeded_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -16404,70 +16899,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_campaign_not_found_de", - serialize_with = "const_campaign_not_found_ser", + deserialize_with = "const_campaign_number_capacity_exhausted_de", + serialize_with = "const_campaign_number_capacity_exhausted_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_found_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_capacity_exceeded_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_capacity_exceeded_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1 { + pub struct SmsCampaignReconciliationRequiredProblem { #[serde( rename = "code", - deserialize_with = "const_sms_line_not_found_55eb713f_de", - serialize_with = "const_sms_line_not_found_55eb713f_ser", + deserialize_with = "const_sms_campaign_reconciliation_required_de", + serialize_with = "const_sms_campaign_reconciliation_required_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -16487,243 +16937,101 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_sms_line_not_found_de", - serialize_with = "const_sms_line_not_found_ser", + deserialize_with = "const_campaign_reconciliation_required_de", + serialize_with = "const_campaign_reconciliation_required_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_line_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_line_not_found_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_reconciliation_required_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_reconciliation_required_ser", )] pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct SmsCampaignMutationInProgressProblem { + #[serde( + rename = "code", + deserialize_with = "const_sms_campaign_mutation_in_progress_de", + serialize_with = "const_sms_campaign_mutation_in_progress_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "operationUrl")] + pub operation_url: String, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_assignment_mutation_in_progress_de", + serialize_with = "const_assignment_mutation_in_progress_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_mutation_in_progress_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_mutation_in_progress_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse409ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( - Box, - ), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( - Box, + pub enum AssignSmsLineCampaignForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + SmsCampaignOrganizationMismatchProblem( + Box, ), } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), AssignSmsLineCampaignForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", - )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -16743,7 +17051,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( + AssignSmsLineCampaignForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -16751,33 +17059,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -16798,7 +17098,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( + AssignSmsLineCampaignForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -16806,33 +17106,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate) .ok() } @@ -16853,7 +17145,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( + AssignSmsLineCampaignForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -16861,33 +17153,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate) .ok() } @@ -16908,7 +17192,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( + AssignSmsLineCampaignForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -16916,33 +17200,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("Campaign belongs to another organization") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate) .ok() } @@ -16963,7 +17239,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( + AssignSmsLineCampaignForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ), )); @@ -16981,73 +17257,48 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - ) + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("Campaign belongs to another organization") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", ) { (match_count, selected) = select(true); @@ -17059,144 +17310,66 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignForbiddenProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( + AssignSmsLineCampaignForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignSmsLineCampaignForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( + AssignSmsLineCampaignForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse409ApplicationProblemPlusJson::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( + AssignSmsLineCampaignForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignSmsLineCampaignForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -17205,24 +17378,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate) .ok() } @@ -17231,25 +17396,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -17257,24 +17412,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate) .ok() } @@ -17294,19 +17441,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignForbiddenProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 { + pub struct ForbiddenProblem { #[serde( rename = "code", - deserialize_with = "const_project_closing_de", - serialize_with = "const_project_closing_ser", + deserialize_with = "const_forbidden_de", + serialize_with = "const_forbidden_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17326,70 +17472,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_project_is_closing_de", - serialize_with = "const_project_is_closing_ser", + deserialize_with = "const_forbidden_f216948f_de", + serialize_with = "const_forbidden_f216948f_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_closing_de", - serialize_with = "const_https_photon_codes_docs_problems_project_closing_ser", + deserialize_with = "const_https_photon_codes_docs_problems_forbidden_de", + serialize_with = "const_https_photon_codes_docs_problems_forbidden_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1 { + pub struct InsufficientScopeProblem { #[serde( rename = "code", - deserialize_with = "const_sms_line_unsupported_b0b4b17e_de", - serialize_with = "const_sms_line_unsupported_b0b4b17e_ser", + deserialize_with = "const_insufficient_scope_de", + serialize_with = "const_insufficient_scope_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17409,70 +17510,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_sms_line_unsupported_de", - serialize_with = "const_sms_line_unsupported_ser", + deserialize_with = "const_insufficient_scope_fca53d85_de", + serialize_with = "const_insufficient_scope_fca53d85_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_line_unsupported_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_line_unsupported_ser", + deserialize_with = "const_https_photon_codes_docs_problems_insufficient_scope_de", + serialize_with = "const_https_photon_codes_docs_problems_insufficient_scope_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2 { + pub struct OrganizationSsoRequiredProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_not_ready_de", - serialize_with = "const_sms_campaign_not_ready_ser", + deserialize_with = "const_organization_sso_required_de", + serialize_with = "const_organization_sso_required_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17492,70 +17548,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_campaign_not_ready_de", - serialize_with = "const_campaign_not_ready_ser", + deserialize_with = "const_organization_sso_required_a764948f_de", + serialize_with = "const_organization_sso_required_a764948f_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_ready_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_ready_ser", + deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_required_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_sso_required_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3 { + pub struct ResourceMismatchProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_version_conflict_de", - serialize_with = "const_sms_campaign_version_conflict_ser", + deserialize_with = "const_resource_mismatch_de", + serialize_with = "const_resource_mismatch_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17575,70 +17586,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_assignment_version_conflict_de", - serialize_with = "const_assignment_version_conflict_ser", + deserialize_with = "const_resource_mismatch_c97fe74e_de", + serialize_with = "const_resource_mismatch_c97fe74e_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_version_conflict_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_version_conflict_ser", + deserialize_with = "const_https_photon_codes_docs_problems_resource_mismatch_de", + serialize_with = "const_https_photon_codes_docs_problems_resource_mismatch_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4 { + pub struct SmsCampaignOrganizationMismatchProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_mutation_in_progress_de", - serialize_with = "const_sms_campaign_mutation_in_progress_ser", + deserialize_with = "const_sms_campaign_organization_mismatch_de", + serialize_with = "const_sms_campaign_organization_mismatch_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17658,236 +17624,249 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_assignment_mutation_in_progress_de", - serialize_with = "const_assignment_mutation_in_progress_ser", + deserialize_with = "const_campaign_belongs_to_another_organization_de", + serialize_with = "const_campaign_belongs_to_another_organization_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_mutation_in_progress_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_mutation_in_progress_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_organization_mismatch_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_organization_mismatch_ser", )] pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5 { - #[serde( - rename = "code", - deserialize_with = "const_sms_campaign_capacity_exceeded_de", - serialize_with = "const_sms_campaign_capacity_exceeded_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_campaign_number_capacity_exhausted_de", - serialize_with = "const_campaign_number_capacity_exhausted_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_capacity_exceeded_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_capacity_exceeded_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum AssignSmsLineCampaignGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5 { + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), AssignSmsLineCampaignGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignSmsLineCampaignGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignSmsLineCampaignGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union AssignSmsLineCampaignGatewayTimeoutProblem", + )) } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union AssignSmsLineCampaignGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5 { + impl serde::Serialize for AssignSmsLineCampaignGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6 { - #[serde( - rename = "code", - deserialize_with = "const_sms_campaign_reconciliation_required_de", - serialize_with = "const_sms_campaign_reconciliation_required_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_campaign_reconciliation_required_de", - serialize_with = "const_campaign_reconciliation_required_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_reconciliation_required_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_reconciliation_required_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = match self { + AssignSmsLineCampaignGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + AssignSmsLineCampaignGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) } else { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6::deserialize( - deserializer, + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse422ApplicationProblemPlusJson { + pub struct RequestTimeoutProblem { #[serde( rename = "code", - deserialize_with = "const_idempotency_key_reused_de", - serialize_with = "const_idempotency_key_reused_ser", + deserialize_with = "const_request_timeout_de", + serialize_with = "const_request_timeout_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17907,70 +17886,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_idempotency_key_reused_2719cc28_de", - serialize_with = "const_idempotency_key_reused_2719cc28_ser", + deserialize_with = "const_request_timeout_e5b334c4_de", + serialize_with = "const_request_timeout_e5b334c4_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_idempotency_key_reused_de", - serialize_with = "const_https_photon_codes_docs_problems_idempotency_key_reused_ser", + deserialize_with = "const_https_photon_codes_docs_problems_request_timeout_de", + serialize_with = "const_https_photon_codes_docs_problems_request_timeout_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse422ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse422ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse422ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse422ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse422ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse429ApplicationProblemPlusJson { + pub struct UpstreamTimeoutProblem { #[serde( rename = "code", - deserialize_with = "const_rate_limited_de", - serialize_with = "const_rate_limited_ser", + deserialize_with = "const_upstream_timeout_de", + serialize_with = "const_upstream_timeout_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -17990,82 +17924,33 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_too_many_requests_de", - serialize_with = "const_too_many_requests_ser", + deserialize_with = "const_upstream_service_timeout_de", + serialize_with = "const_upstream_service_timeout_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_rate_limited_de", - serialize_with = "const_https_photon_codes_docs_problems_rate_limited_ser", + deserialize_with = "const_https_photon_codes_docs_problems_upstream_timeout_de", + serialize_with = "const_https_photon_codes_docs_problems_upstream_timeout_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse429ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse429ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse429ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse429ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse429ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum AssignSmsLineCampaignInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse500ApplicationProblemPlusJson { + for AssignSmsLineCampaignInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), AssignSmsLineCampaignInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -18079,16 +17964,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -18101,7 +17986,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -18109,7 +17994,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + AssignSmsLineCampaignInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -18126,24 +18011,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -18164,7 +18041,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse500ApplicationProblemPlusJson::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -18210,44 +18087,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse500ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + AssignSmsLineCampaignInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse500ApplicationProblemPlusJson::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -18255,24 +18129,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -18292,15 +18158,14 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignInternalServerErrorProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PhotonProblemInternalError500 { + pub struct InternalErrorProblem { #[serde( rename = "code", deserialize_with = "const_internal_error_de", @@ -18311,6 +18176,13 @@ pub mod types { pub detail: Option, #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] pub request_id: Option, #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] @@ -18327,46 +18199,11 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_internal_error_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> for PhotonProblemInternalError500 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "requestId", - "status", - "title", - "type", - ], - )?; - PhotonProblemInternalError500::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PhotonProblemInternalError500::deserialize(deserializer) - } - } - } - impl serde::Serialize for PhotonProblemInternalError500 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PhotonProblemInternalError500::serialize(self, serializer) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 { + pub struct InvalidAuthContextProblem { #[serde( rename = "code", deserialize_with = "const_invalid_auth_context_de", @@ -18400,190 +18237,45 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_invalid_auth_context_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse502ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_upstream_failure_de", - serialize_with = "const_upstream_failure_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_upstream_service_failure_de", - serialize_with = "const_upstream_service_failure_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_failure_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_failure_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse502ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse502ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse502ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse502ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse502ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse503ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum AssignSmsLineCampaignNotFoundProblem { + SmsCampaignNotFoundProblem(Box), + SmsLineNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), AssignSmsLineCampaignNotFoundProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("SMS_CAMPAIGN_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Campaign not found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + "https://photon.codes/docs/problems/sms-campaign-not-found", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -18604,7 +18296,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignNotFoundProblem::SmsCampaignNotFoundProblem( inner, ), )); @@ -18612,33 +18304,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("SMS_LINE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("SMS line not found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/sms-line-not-found", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -18659,7 +18343,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignNotFoundProblem::SmsLineNotFoundProblem( inner, ), )); @@ -18678,25 +18362,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("SMS_CAMPAIGN_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Campaign not found") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - ) + == Some("https://photon.codes/docs/problems/sms-campaign-not-found") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("SMS_LINE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("SMS line not found") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-unavailable", - ) + == Some("https://photon.codes/docs/problems/sms-line-not-found") { (match_count, selected) = select(true); } @@ -18707,51 +18387,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignNotFoundProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse503ApplicationProblemPlusJson::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignNotFoundProblem::SmsCampaignNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + AssignSmsLineCampaignNotFoundProblem::SmsLineNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -18760,25 +18431,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -18797,19 +18458,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignNotFoundProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0 { + pub struct SmsCampaignNotFoundProblem { #[serde( rename = "code", - deserialize_with = "const_sms_campaign_context_unavailable_de", - serialize_with = "const_sms_campaign_context_unavailable_ser", + deserialize_with = "const_sms_campaign_not_found_de", + serialize_with = "const_sms_campaign_not_found_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -18829,70 +18489,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_campaign_context_unavailable_de", - serialize_with = "const_campaign_context_unavailable_ser", + deserialize_with = "const_campaign_not_found_de", + serialize_with = "const_campaign_not_found_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_context_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_context_unavailable_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_not_found_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 { + pub struct SmsLineNotFoundProblem { #[serde( rename = "code", - deserialize_with = "const_upstream_unavailable_de", - serialize_with = "const_upstream_unavailable_ser", + deserialize_with = "const_sms_line_not_found_55eb713f_de", + serialize_with = "const_sms_line_not_found_55eb713f_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -18912,19 +18527,31 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_upstream_service_unavailable_de", - serialize_with = "const_upstream_service_unavailable_ser", + deserialize_with = "const_sms_line_not_found_de", + serialize_with = "const_sms_line_not_found_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_line_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_line_not_found_ser", )] pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 { + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct AssignSmsLineCampaignRequest { + #[serde(rename = "campaignId")] + pub campaign_id: String, + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + } + impl<'de> serde::Deserialize<'de> for AssignSmsLineCampaignRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -18933,96 +18560,61 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) + >(&value, &["campaignId", "expectedVersion"])?; + AssignSmsLineCampaignRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) + AssignSmsLineCampaignRequest::deserialize(deserializer) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 { + impl serde::Serialize for AssignSmsLineCampaignRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) + AssignSmsLineCampaignRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum AssignSmsLineCampaignResponse504ApplicationProblemPlusJson { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum AssignSmsLineCampaignServiceUnavailableProblem { + SmsCampaignContextUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJson { + for AssignSmsLineCampaignServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), AssignSmsLineCampaignServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Campaign context unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -19043,7 +18635,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( inner, ), )); @@ -19051,33 +18643,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -19098,7 +18682,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -19117,21 +18701,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Campaign context unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -19142,51 +18730,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignSmsLineCampaignServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJson { + impl serde::Serialize for AssignSmsLineCampaignServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( + AssignSmsLineCampaignServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignSmsLineCampaignResponse504ApplicationProblemPlusJson::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( + AssignSmsLineCampaignServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -19195,24 +18774,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -19232,19 +18803,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignSmsLineCampaignServiceUnavailableProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 { + pub struct SmsCampaignContextUnavailableProblem { #[serde( rename = "code", - deserialize_with = "const_request_timeout_de", - serialize_with = "const_request_timeout_ser", + deserialize_with = "const_sms_campaign_context_unavailable_de", + serialize_with = "const_sms_campaign_context_unavailable_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -19264,70 +18834,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_request_timeout_e5b334c4_de", - serialize_with = "const_request_timeout_e5b334c4_ser", + deserialize_with = "const_campaign_context_unavailable_de", + serialize_with = "const_campaign_context_unavailable_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_request_timeout_de", - serialize_with = "const_https_photon_codes_docs_problems_request_timeout_ser", + deserialize_with = "const_https_photon_codes_docs_problems_sms_campaign_context_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_sms_campaign_context_unavailable_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 { + pub struct UpstreamUnavailableProblem { #[serde( rename = "code", - deserialize_with = "const_upstream_timeout_de", - serialize_with = "const_upstream_timeout_ser", + deserialize_with = "const_upstream_unavailable_de", + serialize_with = "const_upstream_unavailable_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -19347,216 +18872,60 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_upstream_service_timeout_de", - serialize_with = "const_upstream_service_timeout_ser", + deserialize_with = "const_upstream_service_unavailable_de", + serialize_with = "const_upstream_service_unavailable_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_timeout_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_timeout_ser", + deserialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_ser", )] pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileRequestApplicationJson { - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - #[serde(rename = "profileId")] - pub profile_id: String, - } - impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["expectedVersion", "profileId"])?; - AssignVoiceLineProfileRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for AssignVoiceLineProfileRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse200ApplicationJson { - #[serde(rename = "profileId", default, skip_serializing_if = "Option::is_none")] - pub profile_id: Option, - #[serde( - rename = "profileVersion", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub profile_version: Option, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId")] - pub resource_id: String, - #[serde( - rename = "resourceVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub resource_version: i64, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "profileId", - "profileVersion", - "projectId", - "resourceId", - "resourceVersion", - "updatedAt", - ], - )?; - AssignVoiceLineProfileResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for AssignVoiceLineProfileResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone)] - pub enum AssignVoiceLineProfileResponse403ApplicationProblemPlusJson { - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse403ApplicationProblemPlusJson { + #[derive(Debug, Clone)] + pub enum AssignVoiceLineProfileConflictProblem { + ProjectClosingProblem(Box), + VoiceDefaultProfileAssignmentForbiddenProblem( + Box, + ), + VoiceProfileVersionConflictProblem(Box), + } + impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), AssignVoiceLineProfileConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -19577,7 +18946,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( + AssignVoiceLineProfileConflictProblem::ProjectClosingProblem( inner, ), )); @@ -19585,27 +18954,27 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Default Profile Assignment Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -19618,7 +18987,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -19626,7 +18995,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + AssignVoiceLineProfileConflictProblem::VoiceDefaultProfileAssignmentForbiddenProblem( inner, ), )); @@ -19634,33 +19003,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -19681,7 +19042,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( + AssignVoiceLineProfileConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -19699,29 +19060,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Default Profile Assignment Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) { (match_count, selected) = select(true); } @@ -19732,99 +19098,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileConflictProblem", ), ) } } } - impl serde::Serialize - for AssignVoiceLineProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for AssignVoiceLineProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + AssignVoiceLineProfileConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignVoiceLineProfileConflictProblem::VoiceDefaultProfileAssignmentForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse403ApplicationProblemPlusJson::AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( + AssignVoiceLineProfileConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -19832,245 +19143,16 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignVoiceLineProfileResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone)] - pub enum AssignVoiceLineProfileResponse404ApplicationProblemPlusJson { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-not-found", - )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Not Found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-not-found", - )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-not-found") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_NOT_FOUND") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Not Found") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-not-found", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse404ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse404ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse404ApplicationProblemPlusJson::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -20079,24 +19161,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -20116,19 +19190,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignVoiceLineProfileResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignVoiceLineProfileConflictProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 { + pub struct VoiceDefaultProfileAssignmentForbiddenProblem { #[serde( rename = "code", - deserialize_with = "const_resource_not_found_de", - serialize_with = "const_resource_not_found_ser", + deserialize_with = "const_voice_default_profile_assignment_forbidden_de", + serialize_with = "const_voice_default_profile_assignment_forbidden_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -20148,70 +19221,25 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_resource_not_found_804e32a7_de", - serialize_with = "const_resource_not_found_804e32a7_ser", + deserialize_with = "const_voice_default_profile_assignment_forbidden_ba541440_de", + serialize_with = "const_voice_default_profile_assignment_forbidden_ba541440_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_resource_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_resource_not_found_ser", + deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_assignment_forbidden_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_assignment_forbidden_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 { + pub struct VoiceProfileVersionConflictProblem { #[serde( rename = "code", - deserialize_with = "const_voice_profile_not_found_de", - serialize_with = "const_voice_profile_not_found_ser", + deserialize_with = "const_voice_profile_version_conflict_de", + serialize_with = "const_voice_profile_version_conflict_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -20231,120 +19259,102 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_voice_profile_not_found_6a9e6744_de", - serialize_with = "const_voice_profile_not_found_6a9e6744_ser", + deserialize_with = "const_voice_profile_version_conflict_9747ec09_de", + serialize_with = "const_voice_profile_version_conflict_9747ec09_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_ser", + deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_version_conflict_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_profile_version_conflict_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum AssignVoiceLineProfileResponse409ApplicationProblemPlusJson { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum AssignVoiceLineProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), AssignVoiceLineProfileForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignVoiceLineProfileForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -20365,7 +19375,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0( + AssignVoiceLineProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -20373,33 +19383,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Assignment Forbidden") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -20420,7 +19422,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -20428,33 +19430,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -20475,7 +19469,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2( + AssignVoiceLineProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -20493,34 +19487,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Assignment Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -20531,54 +19530,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for AssignVoiceLineProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0( + AssignVoiceLineProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignVoiceLineProfileForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse409ApplicationProblemPlusJson::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2( + AssignVoiceLineProfileForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -20587,24 +19595,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -20613,25 +19613,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -20650,433 +19640,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignVoiceLineProfileResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignVoiceLineProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_voice_default_profile_assignment_forbidden_de", - serialize_with = "const_voice_default_profile_assignment_forbidden_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_default_profile_assignment_forbidden_ba541440_de", - serialize_with = "const_voice_default_profile_assignment_forbidden_ba541440_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_assignment_forbidden_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_assignment_forbidden_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 { - #[serde( - rename = "code", - deserialize_with = "const_voice_profile_version_conflict_de", - serialize_with = "const_voice_profile_version_conflict_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_profile_version_conflict_9747ec09_de", - serialize_with = "const_voice_profile_version_conflict_9747ec09_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_version_conflict_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_profile_version_conflict_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse422ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_validation_failed_de", - serialize_with = "const_validation_failed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "issues")] - pub issues: Vec< - AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem, - >, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_request_validation_failed_de", - serialize_with = "const_request_validation_failed_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_validation_failed_de", - serialize_with = "const_https_photon_codes_docs_problems_validation_failed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "issues", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - AssignVoiceLineProfileResponse422ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse422ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse422ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation { - ///`body` - Body, - ///`cookie` - Cookie, - ///`form` - Form, - ///`header` - Header, - ///`json` - Json, - ///`param` - Param, - ///`query` - Query, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Body => "body", - Self::Cookie => "cookie", - Self::Form => "form", - Self::Header => "header", - Self::Json => "json", - Self::Param => "param", - Self::Query => "query", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "body" => Ok(Self::Body), - "cookie" => Ok(Self::Cookie), - "form" => Ok(Self::Form), - "header" => Ok(Self::Header), - "json" => Ok(Self::Json), - "param" => Ok(Self::Param), - "query" => Ok(Self::Query), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `body`, `cookie`, `form`, `header`, `json`, `param`, `query`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "location")] - pub location: AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation, - #[serde(rename = "message")] - pub message: String, - #[serde(rename = "path")] - pub path: String, - } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "location", "message", "path"])?; - AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as AssignVoiceLineProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum AssignVoiceLineProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum AssignVoiceLineProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignVoiceLineProfileResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), AssignVoiceLineProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -21089,7 +19696,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -21097,7 +19704,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + AssignVoiceLineProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -21105,33 +19712,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -21152,7 +19751,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse500ApplicationProblemPlusJson::AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -21171,23 +19770,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -21198,44 +19795,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for AssignVoiceLineProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for AssignVoiceLineProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignVoiceLineProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + AssignVoiceLineProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse500ApplicationProblemPlusJson::AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -21243,25 +19837,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -21280,69 +19864,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignVoiceLineProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as AssignVoiceLineProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as AssignVoiceLineProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum AssignVoiceLineProfileResponse504ApplicationProblemPlusJson { - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum AssignVoiceLineProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for AssignVoiceLineProfileResponse504ApplicationProblemPlusJson { + for AssignVoiceLineProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), AssignVoiceLineProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -21363,7 +19927,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson::AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( + AssignVoiceLineProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -21371,33 +19935,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -21418,7 +19974,7 @@ pub mod types { if replace { selected = Some(( rank, - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson::AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -21437,21 +19993,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -21462,51 +20020,58 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union AssignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union AssignVoiceLineProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for AssignVoiceLineProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for AssignVoiceLineProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson::AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( + AssignVoiceLineProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - AssignVoiceLineProfileResponse504ApplicationProblemPlusJson::AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( + AssignVoiceLineProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -21515,24 +20080,226 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union AssignVoiceLineProfileInternalServerErrorProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum AssignVoiceLineProfileNotFoundProblem { + ResourceNotFoundProblem(Box), + VoiceProfileNotFoundProblem(Box), + } + impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileNotFoundProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), AssignVoiceLineProfileNotFoundProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-not-found", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignVoiceLineProfileNotFoundProblem::ResourceNotFoundProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-not-found", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + AssignVoiceLineProfileNotFoundProblem::VoiceProfileNotFoundProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-not-found") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-not-found", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union AssignVoiceLineProfileNotFoundProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union AssignVoiceLineProfileNotFoundProblem", + ), + ) + } + } + } + impl serde::Serialize for AssignVoiceLineProfileNotFoundProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + AssignVoiceLineProfileNotFoundProblem::ResourceNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + AssignVoiceLineProfileNotFoundProblem::VoiceProfileNotFoundProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -21552,72 +20319,227 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union AssignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union AssignVoiceLineProfileNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ResourceNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_resource_not_found_de", + serialize_with = "const_resource_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_resource_not_found_804e32a7_de", + serialize_with = "const_resource_not_found_804e32a7_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_resource_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_resource_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceProfileNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_profile_not_found_de", + serialize_with = "const_voice_profile_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_profile_not_found_6a9e6744_de", + serialize_with = "const_voice_profile_not_found_6a9e6744_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson { - #[serde(rename = "updates")] - pub updates: Vec< - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem, - >, + pub struct AssignVoiceLineProfileRequest { + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + #[serde(rename = "profileId")] + pub profile_id: String, } - impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for AssignVoiceLineProfileRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["updates"])?; - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson::deserialize( - value, - ) + super::support::check_known_members::< + D::Error, + >(&value, &["expectedVersion", "profileId"])?; + AssignVoiceLineProfileRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson::deserialize( - deserializer, - ) + AssignVoiceLineProfileRequest::deserialize(deserializer) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson { + impl serde::Serialize for AssignVoiceLineProfileRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson::serialize( - self, - serializer, - ) + AssignVoiceLineProfileRequest::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AssignmentExistsProblem { + #[serde( + rename = "code", + deserialize_with = "const_assignment_exists_de", + serialize_with = "const_assignment_exists_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_assignment_exists_4f2b9919_de", + serialize_with = "const_assignment_exists_4f2b9919_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_assignment_exists_de", + serialize_with = "const_https_photon_codes_docs_problems_assignment_exists_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AssignmentNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_assignment_not_found_de", + serialize_with = "const_assignment_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_assignment_not_found_7df7180e_de", + serialize_with = "const_assignment_not_found_7df7180e_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_assignment_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_assignment_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem { + pub struct Attachment { + #[serde(rename = "contentType")] + pub content_type: String, #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", + rename = "createdAt", + serialize_with = "super::support::serialize_millis", )] - pub expected_version: i64, + pub created_at: DateTime, + #[serde(rename = "filename", default, skip_serializing_if = "Option::is_none")] + pub filename: Option, + #[serde(rename = "id")] + pub id: String, + #[serde(rename = "metadata", default, skip_serializing_if = "Option::is_none")] + pub metadata: Option>, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "sizeBytes", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub size_bytes: i64, #[serde( - rename = "profileId", - deserialize_with = "serde::Deserialize::deserialize", + rename = "updatedAt", + serialize_with = "super::support::serialize_millis", )] - pub profile_id: Option, - #[serde(rename = "resourceId")] - pub resource_id: String, + pub updated_at: DateTime, } - impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem { + impl<'de> serde::Deserialize<'de> for Attachment { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -21626,40 +20548,176 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["expectedVersion", "profileId", "resourceId"])?; - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + >( + &value, + &[ + "contentType", + "createdAt", + "filename", + "id", + "metadata", + "projectId", + "sizeBytes", + "updatedAt", + ], + )?; + Attachment::deserialize(value).map_err(serde::de::Error::custom) } else { - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem::deserialize( - deserializer, - ) + Attachment::deserialize(deserializer) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem { + impl serde::Serialize for Attachment { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonupdatesItem::serialize( - self, - serializer, + Attachment::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AttachmentConflictProblem { + #[serde( + rename = "code", + deserialize_with = "const_attachment_conflict_de", + serialize_with = "const_attachment_conflict_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_attachment_conflict_8f1af563_de", + serialize_with = "const_attachment_conflict_8f1af563_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_attachment_conflict_de", + serialize_with = "const_https_photon_codes_docs_problems_attachment_conflict_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AttachmentNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_attachment_not_found_de", + serialize_with = "const_attachment_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_attachment_not_found_3a39522e_de", + serialize_with = "const_attachment_not_found_3a39522e_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AttachmentNotReadyProblem { + #[serde( + rename = "code", + deserialize_with = "const_attachment_not_ready_de", + serialize_with = "const_attachment_not_ready_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_attachment_not_ready_99e5a689_de", + serialize_with = "const_attachment_not_ready_99e5a689_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_attachment_not_ready_de", + serialize_with = "const_https_photon_codes_docs_problems_attachment_not_ready_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum AttachmentNotReadyRetryAfter { + #[serde(rename = "5")] + N5, + } + impl std::fmt::Display for AttachmentNotReadyRetryAfter { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + AttachmentNotReadyRetryAfter::N5 => "5", + }, ) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson { - #[serde(rename = "assignments")] - pub assignments: Vec< - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem, - >, + pub struct AttachmentPage { + #[serde(rename = "items")] + pub items: Vec, + ///Continue with this token, even if items is empty. Omitted when no more pages remain. + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, } - impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for AttachmentPage { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -21668,56 +20726,134 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["assignments"])?; - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + >(&value, &["items", "nextPageToken"])?; + AttachmentPage::deserialize(value).map_err(serde::de::Error::custom) } else { - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson::deserialize( - deserializer, - ) + AttachmentPage::deserialize(deserializer) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson { + impl serde::Serialize for AttachmentPage { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson::serialize( - self, - serializer, - ) + AttachmentPage::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem { - #[serde(rename = "profileId", default, skip_serializing_if = "Option::is_none")] - pub profile_id: Option, + pub struct AttachmentUploadNotReadyProblem { #[serde( - rename = "profileVersion", + rename = "code", + deserialize_with = "const_attachment_upload_not_ready_de", + serialize_with = "const_attachment_upload_not_ready_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", default, skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_849930913d2b9d6c", + deserialize_with = "deserialize_request_field", )] - pub profile_version: Option, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId")] - pub resource_id: String, + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, #[serde( - rename = "resourceVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", + rename = "title", + deserialize_with = "const_attachment_upload_not_ready_775a86d2_de", + serialize_with = "const_attachment_upload_not_ready_775a86d2_ser", )] - pub resource_version: i64, + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_attachment_upload_not_ready_de", + serialize_with = "const_https_photon_codes_docs_problems_attachment_upload_not_ready_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AuthorizedApplication { + #[serde(rename = "application")] + pub application: AuthorizedOAuthApplication, + ///Identifier of the user's authorization grant for this application. + #[serde(rename = "authorizationId")] + pub authorization_id: String, + ///OAuth scope slugs the user has granted to this application. + #[serde(rename = "grantedScopes")] + pub granted_scopes: Vec, + ///OAuth resource associated with the grant, or null when no resource is specified. + #[serde(rename = "oauthResource")] + pub oauth_resource: Option, + #[serde(flatten)] + pub additional: BTreeMap, + } + ///The OAuth application authorized by the authenticated user. + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AuthorizedOAuthApplication { + ///OAuth application type reported by the authorization server. + #[serde(rename = "applicationType")] + pub application_type: String, + ///OAuth client identifier used by the application in authorization requests. + #[serde(rename = "clientId")] + pub client_id: String, + ///UTC timestamp when the application was created, in RFC 3339 format. + #[serde(rename = "createdAt")] + pub created_at: DateTime, + ///Application description, or null when no description is set. + #[serde(rename = "description")] + pub description: Option, + ///Application identifier to pass as applicationId when revoking this application's grant. + #[serde(rename = "id")] + pub id: String, + ///Whether the application is classified as first-party by the authorization server. + #[serde(rename = "isFirstParty")] + pub is_first_party: bool, + ///Display name of the authorized application. + #[serde(rename = "name")] + pub name: String, + ///Registered OAuth callback URLs for the application. + #[serde(rename = "redirectUris")] + pub redirect_uris: Vec, + ///OAuth scope slugs configured for the application; grantedScopes records what the user authorized. + #[serde(rename = "scopes")] + pub scopes: Vec, + ///UTC timestamp when the application was last updated, in RFC 3339 format. #[serde(rename = "updatedAt")] pub updated_at: DateTime, + ///Whether the application uses Proof Key for Code Exchange (PKCE). + #[serde(rename = "usesPkce")] + pub uses_pkce: bool, + #[serde(flatten)] + pub additional: BTreeMap, } - impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem { + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct AuthorizedOAuthApplicationRedirectUri { + ///Whether this is the application's default redirect URI. + #[serde(rename = "default")] + pub default: bool, + ///Registered OAuth callback URL for the application. + #[serde(rename = "uri")] + pub uri: String, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct AvailableProjectSlug { + #[serde(rename = "available")] + pub available: bool, + #[serde(rename = "slug")] + pub slug: String, + } + impl<'de> serde::Deserialize<'de> for AvailableProjectSlug { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -21726,99 +20862,64 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "profileId", - "profileVersion", - "projectId", - "resourceId", - "resourceVersion", - "updatedAt", - ], - )?; - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem::deserialize( - value, - ) + >(&value, &["available", "slug"])?; + AvailableProjectSlug::deserialize(value) .map_err(serde::de::Error::custom) } else { - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem::deserialize( - deserializer, - ) + AvailableProjectSlug::deserialize(deserializer) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem { + impl serde::Serialize for AvailableProjectSlug { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem::serialize( - self, - serializer, - ) + AvailableProjectSlug::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson { - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + pub enum BatchUpdateVoiceLineProfileAssignmentsConflictProblem { + ProjectClosingProblem(Box), + VoiceDefaultProfileAssignmentForbiddenProblem( + Box, ), + VoiceProfileVersionConflictProblem(Box), } impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), BatchUpdateVoiceLineProfileAssignmentsConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -21839,7 +20940,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::ProjectClosingProblem( inner, ), )); @@ -21847,27 +20948,27 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Default Profile Assignment Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -21880,7 +20981,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -21888,7 +20989,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::VoiceDefaultProfileAssignmentForbiddenProblem( inner, ), )); @@ -21896,33 +20997,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -21943,7 +21036,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -21961,29 +21054,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Default Profile Assignment Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) { (match_count, selected) = select(true); } @@ -21994,55 +21092,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsConflictProblem", ), ) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for BatchUpdateVoiceLineProfileAssignmentsConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::ProjectClosingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::VoiceDefaultProfileAssignmentForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + BatchUpdateVoiceLineProfileAssignmentsConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -22050,16 +21137,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -22068,24 +21155,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -22105,72 +21184,96 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson { - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, - ), - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-not-found", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -22191,7 +21294,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -22199,33 +21302,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_NOT_FOUND") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Not Found") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-not-found", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -22246,7 +21388,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -22264,24 +21406,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-not-found") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_NOT_FOUND") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Not Found") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-not-found", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -22292,51 +21449,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem", ), ) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson { + impl serde::Serialize for BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -22345,24 +21514,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -22371,6 +21532,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -22382,34 +21559,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson { - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -22418,7 +21580,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson, + BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -22426,88 +21588,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Assignment Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -22528,7 +21627,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -22536,33 +21635,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -22583,7 +21674,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2( + BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -22602,33 +21693,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Assignment Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -22639,81 +21718,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem", ), ) } } } impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2( + BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -22721,25 +21761,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -22758,30 +21788,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant1 as BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -22790,7 +21809,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson, + BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -22805,16 +21824,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -22827,7 +21846,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -22835,7 +21854,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -22852,24 +21871,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -22890,7 +21901,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -22936,44 +21947,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -22981,24 +21990,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -23018,73 +22019,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson { - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1( - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem { + ResourceNotFoundProblem(Box), + VoiceProfileNotFoundProblem(Box), } impl<'de> serde::Deserialize<'de> - for BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson { + for BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("RESOURCE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Resource Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/resource-not-found", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -23105,7 +22084,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem::ResourceNotFoundProblem( inner, ), )); @@ -23113,33 +22092,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VOICE_PROFILE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Voice Profile Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/voice-profile-not-found", )) - .then(|| (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -23160,7 +22131,7 @@ pub mod types { if replace { selected = Some(( rank, - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem::VoiceProfileNotFoundProblem( inner, ), )); @@ -23179,21 +22150,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("RESOURCE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Resource Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/resource-not-found") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VOICE_PROFILE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Voice Profile Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/voice-profile-not-found", + ) { (match_count, selected) = select(true); } @@ -23204,52 +22177,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem", ), ) } } } - impl serde::Serialize - for BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0( + BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem::ResourceNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem::VoiceProfileNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -23257,24 +22219,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -23294,23 +22248,58 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BeginInvitationSsoRequestApplicationJson { - #[serde(rename = "returnTo")] - pub return_to: String, - #[serde(rename = "token")] - pub token: String, + pub struct BatchUpdateVoiceLineProfileAssignmentsRequest { + #[serde(rename = "updates")] + pub updates: Vec, + } + impl<'de> serde::Deserialize<'de> for BatchUpdateVoiceLineProfileAssignmentsRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["updates"])?; + BatchUpdateVoiceLineProfileAssignmentsRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + BatchUpdateVoiceLineProfileAssignmentsRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for BatchUpdateVoiceLineProfileAssignmentsRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + BatchUpdateVoiceLineProfileAssignmentsRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceLineProfileAssignmentUpdate { + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + #[serde( + rename = "profileId", + deserialize_with = "serde::Deserialize::deserialize", + )] + pub profile_id: Option, + #[serde(rename = "resourceId")] + pub resource_id: String, } - impl<'de> serde::Deserialize<'de> for BeginInvitationSsoRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for VoiceLineProfileAssignmentUpdate { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -23319,70 +22308,125 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["returnTo", "token"])?; - BeginInvitationSsoRequestApplicationJson::deserialize(value) + >(&value, &["expectedVersion", "profileId", "resourceId"])?; + VoiceLineProfileAssignmentUpdate::deserialize(value) .map_err(serde::de::Error::custom) } else { - BeginInvitationSsoRequestApplicationJson::deserialize(deserializer) + VoiceLineProfileAssignmentUpdate::deserialize(deserializer) } } } - impl serde::Serialize for BeginInvitationSsoRequestApplicationJson { + impl serde::Serialize for VoiceLineProfileAssignmentUpdate { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BeginInvitationSsoRequestApplicationJson::serialize(self, serializer) + VoiceLineProfileAssignmentUpdate::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse200ApplicationJson { - #[serde(rename = "url")] - pub url: String, + pub struct BatchUpdateVoiceLineProfileAssignmentsResponse { + #[serde(rename = "assignments")] + pub assignments: Vec, } - impl<'de> serde::Deserialize<'de> for BeginInvitationSsoResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> + for BatchUpdateVoiceLineProfileAssignmentsResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["url"])?; - BeginInvitationSsoResponse200ApplicationJson::deserialize(value) + super::support::check_known_members::< + D::Error, + >(&value, &["assignments"])?; + BatchUpdateVoiceLineProfileAssignmentsResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - BeginInvitationSsoResponse200ApplicationJson::deserialize(deserializer) + BatchUpdateVoiceLineProfileAssignmentsResponse::deserialize(deserializer) } } } - impl serde::Serialize for BeginInvitationSsoResponse200ApplicationJson { + impl serde::Serialize for BatchUpdateVoiceLineProfileAssignmentsResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BeginInvitationSsoResponse200ApplicationJson::serialize(self, serializer) + BatchUpdateVoiceLineProfileAssignmentsResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceLineProfileAssignment { + #[serde(rename = "profileId", default, skip_serializing_if = "Option::is_none")] + pub profile_id: Option, + #[serde( + rename = "profileVersion", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub profile_version: Option, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "resourceId")] + pub resource_id: String, + #[serde( + rename = "resourceVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub resource_version: i64, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for VoiceLineProfileAssignment { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "profileId", + "profileVersion", + "projectId", + "resourceId", + "resourceVersion", + "updatedAt", + ], + )?; + VoiceLineProfileAssignment::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + VoiceLineProfileAssignment::deserialize(deserializer) + } + } + } + impl serde::Serialize for VoiceLineProfileAssignment { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + VoiceLineProfileAssignment::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum BeginInvitationSsoResponse400ApplicationProblemPlusJson { - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum BeginInvitationSsoBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), BeginInvitationSsoResponse400ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), BeginInvitationSsoBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -23397,24 +22441,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -23435,7 +22471,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse400ApplicationProblemPlusJson::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0( + BeginInvitationSsoBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -23452,24 +22488,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -23490,7 +22518,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse400ApplicationProblemPlusJson::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1( + BeginInvitationSsoBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -23534,49 +22562,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoBadRequestProblem", ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse400ApplicationProblemPlusJson { + impl serde::Serialize for BeginInvitationSsoBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginInvitationSsoResponse400ApplicationProblemPlusJson::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginInvitationSsoResponse400ApplicationProblemPlusJson::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BeginInvitationSsoBadRequestProblem::InvalidReturnToProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + BeginInvitationSsoBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -23584,23 +22604,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -23619,15 +22631,14 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginInvitationSsoResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginInvitationSsoBadRequestProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 { + pub struct InvalidReturnToProblem { #[serde( rename = "code", deserialize_with = "const_invalid_return_to_de", @@ -23661,56 +22672,11 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_invalid_return_to_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 { + pub struct InvalidArgumentProblem { #[serde( rename = "code", deserialize_with = "const_invalid_argument_de", @@ -23744,70 +22710,22 @@ pub mod types { serialize_with = "const_https_photon_codes_docs_problems_invalid_argument_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum BeginInvitationSsoResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum BeginInvitationSsoForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), BeginInvitationSsoResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), BeginInvitationSsoForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -23820,16 +22738,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginInvitationSsoForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -23842,7 +22803,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -23850,7 +22811,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginInvitationSsoForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -23858,27 +22819,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -23891,7 +22850,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -23899,7 +22858,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginInvitationSsoForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -23932,6 +22891,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -23942,42 +22911,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoForbiddenProblem", ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse403ApplicationProblemPlusJson { + impl serde::Serialize for BeginInvitationSsoForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginInvitationSsoResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginInvitationSsoResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginInvitationSsoForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + BeginInvitationSsoForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + BeginInvitationSsoForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -23986,16 +22973,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -24015,343 +23002,249 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginInvitationSsoResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginInvitationSsoForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PhotonProblemForbidden403 { - #[serde( - rename = "code", - deserialize_with = "const_forbidden_de", - serialize_with = "const_forbidden_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_forbidden_f216948f_de", - serialize_with = "const_forbidden_f216948f_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_forbidden_de", - serialize_with = "const_https_photon_codes_docs_problems_forbidden_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum BeginInvitationSsoGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> for PhotonProblemForbidden403 { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "requestId", - "status", - "title", - "type", - ], - )?; - PhotonProblemForbidden403::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PhotonProblemForbidden403::deserialize(deserializer) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), BeginInvitationSsoGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginInvitationSsoGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginInvitationSsoGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + { + (match_count, selected) = select(true); } - } - } - impl serde::Serialize for PhotonProblemForbidden403 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PhotonProblemForbidden403::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_organization_sso_not_found_de", - serialize_with = "const_organization_sso_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_organization_sso_not_found_ad0be4c3_de", - serialize_with = "const_organization_sso_not_found_ad0be4c3_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_organization_sso_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - BeginInvitationSsoResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - BeginInvitationSsoResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) + if match_count != 1 { + (match_count, selected) = select(false); } - } - } - impl serde::Serialize for BeginInvitationSsoResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginInvitationSsoResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_organization_sso_conflict_de", - serialize_with = "const_organization_sso_conflict_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_organization_sso_conflict_94ef22cc_de", - serialize_with = "const_organization_sso_conflict_94ef22cc_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_conflict_de", - serialize_with = "const_https_photon_codes_docs_problems_organization_sso_conflict_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - BeginInvitationSsoResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union BeginInvitationSsoGatewayTimeoutProblem", + )) } else { - BeginInvitationSsoResponse409ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union BeginInvitationSsoGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse409ApplicationProblemPlusJson { + impl serde::Serialize for BeginInvitationSsoGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BeginInvitationSsoResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginInvitationSsoResponse412ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_organization_sso_precondition_failed_de", - serialize_with = "const_organization_sso_precondition_failed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_organization_sso_precondition_failed_a36926dd_de", - serialize_with = "const_organization_sso_precondition_failed_a36926dd_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_precondition_failed_de", - serialize_with = "const_https_photon_codes_docs_problems_organization_sso_precondition_failed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse412ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - BeginInvitationSsoResponse412ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = match self { + BeginInvitationSsoGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BeginInvitationSsoGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) } else { - BeginInvitationSsoResponse412ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union BeginInvitationSsoGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse412ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginInvitationSsoResponse412ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as BeginInvitationSsoResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as BeginInvitationSsoResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as BeginInvitationSsoResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum BeginInvitationSsoResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum BeginInvitationSsoInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), BeginInvitationSsoResponse500ApplicationProblemPlusJson), + ((usize, u32), BeginInvitationSsoInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -24365,16 +23258,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -24387,7 +23280,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -24395,7 +23288,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginInvitationSsoInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -24412,24 +23305,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -24450,7 +23335,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse500ApplicationProblemPlusJson::BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1( + BeginInvitationSsoInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -24496,43 +23381,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse500ApplicationProblemPlusJson { + impl serde::Serialize for BeginInvitationSsoInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginInvitationSsoResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginInvitationSsoInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginInvitationSsoResponse500ApplicationProblemPlusJson::BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1( + BeginInvitationSsoInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -24540,22 +23423,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -24575,66 +23452,54 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginInvitationSsoResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginInvitationSsoInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as BeginInvitationSsoResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as BeginInvitationSsoResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as BeginInvitationSsoResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BeginInvitationSsoResponse504ApplicationProblemPlusJson { - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum BeginInvitationSsoPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for BeginInvitationSsoResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), BeginInvitationSsoResponse504ApplicationProblemPlusJson), + ((usize, u32), BeginInvitationSsoPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -24655,7 +23520,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse504ApplicationProblemPlusJson::BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0( + BeginInvitationSsoPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -24663,33 +23528,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -24710,7 +23567,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginInvitationSsoResponse504ApplicationProblemPlusJson::BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1( + BeginInvitationSsoPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -24729,21 +23586,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -24754,48 +23615,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginInvitationSsoResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginInvitationSsoPreconditionFailedProblem", ), ) } } } - impl serde::Serialize for BeginInvitationSsoResponse504ApplicationProblemPlusJson { + impl serde::Serialize for BeginInvitationSsoPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginInvitationSsoResponse504ApplicationProblemPlusJson::BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0( + BeginInvitationSsoPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginInvitationSsoResponse504ApplicationProblemPlusJson::BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1( + BeginInvitationSsoPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -24804,22 +23659,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -24839,111 +23688,135 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginInvitationSsoResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginInvitationSsoPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as BeginInvitationSsoResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginOrganizationAuthenticationRequestApplicationJson { - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["returnTo"])?; - BeginOrganizationAuthenticationRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - BeginOrganizationAuthenticationRequestApplicationJson::deserialize( - deserializer, - ) - } - } + pub struct OrganizationSsoPreconditionFailedProblem { + #[serde( + rename = "code", + deserialize_with = "const_organization_sso_precondition_failed_de", + serialize_with = "const_organization_sso_precondition_failed_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_organization_sso_precondition_failed_a36926dd_de", + serialize_with = "const_organization_sso_precondition_failed_a36926dd_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_precondition_failed_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_sso_precondition_failed_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl serde::Serialize for BeginOrganizationAuthenticationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginOrganizationAuthenticationRequestApplicationJson::serialize( - self, - serializer, - ) - } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct SsoSubscriptionRequiredProblem { + #[serde( + rename = "code", + deserialize_with = "const_sso_subscription_required_789dcc21_de", + serialize_with = "const_sso_subscription_required_789dcc21_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_sso_subscription_required_de", + serialize_with = "const_sso_subscription_required_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_sso_subscription_required_de", + serialize_with = "const_https_photon_codes_docs_problems_sso_subscription_required_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct BeginOrganizationAuthenticationResponse200ApplicationJson { - #[serde(rename = "url")] - pub url: String, + pub struct BeginInvitationSsoRequest { + #[serde(rename = "returnTo")] + pub return_to: String, + #[serde(rename = "token")] + pub token: String, } - impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for BeginInvitationSsoRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["url"])?; - BeginOrganizationAuthenticationResponse200ApplicationJson::deserialize( - value, - ) + super::support::check_known_members::< + D::Error, + >(&value, &["returnTo", "token"])?; + BeginInvitationSsoRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - BeginOrganizationAuthenticationResponse200ApplicationJson::deserialize( - deserializer, - ) + BeginInvitationSsoRequest::deserialize(deserializer) } } } - impl serde::Serialize for BeginOrganizationAuthenticationResponse200ApplicationJson { + impl serde::Serialize for BeginInvitationSsoRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - BeginOrganizationAuthenticationResponse200ApplicationJson::serialize( - self, - serializer, - ) + BeginInvitationSsoRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson { - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationAuthenticationBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson { + for BeginOrganizationAuthenticationBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationAuthenticationBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -24959,24 +23832,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -24997,7 +23862,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -25014,24 +23879,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -25052,7 +23909,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -25096,52 +23953,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationBadRequestProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationAuthenticationBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -25149,25 +23995,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -25186,33 +24022,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum BeginOrganizationAuthenticationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson { + for BeginOrganizationAuthenticationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationAuthenticationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -25226,17 +24056,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -25248,7 +24076,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -25256,7 +24084,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationAuthenticationForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -25273,18 +24101,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -25297,7 +24123,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -25305,7 +24131,54 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationAuthenticationForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginOrganizationAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -25338,6 +24211,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -25348,43 +24231,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationForbiddenProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationAuthenticationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationAuthenticationForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BeginOrganizationAuthenticationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -25393,16 +24293,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -25422,62 +24322,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationAuthenticationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson { + for BeginOrganizationAuthenticationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationAuthenticationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -25490,7 +24379,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -25498,7 +24387,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -25506,33 +24395,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -25553,7 +24434,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -25572,23 +24453,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -25599,44 +24478,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationAuthenticationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -25644,25 +24520,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -25681,73 +24547,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson { - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationAuthenticationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson { + for BeginOrganizationAuthenticationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationAuthenticationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -25768,7 +24610,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -25776,33 +24618,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -25823,7 +24657,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -25842,21 +24676,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -25867,52 +24703,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationAuthenticationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -25920,24 +24745,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -25957,111 +24774,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginOrganizationClosureAuthenticationRequestApplicationJson { - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for BeginOrganizationClosureAuthenticationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["returnTo"])?; - BeginOrganizationClosureAuthenticationRequestApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - BeginOrganizationClosureAuthenticationRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for BeginOrganizationClosureAuthenticationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginOrganizationClosureAuthenticationRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::BeginOrganizationAuthenticationResponse200ApplicationJson as BeginOrganizationClosureAuthenticationResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson { - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + pub enum BeginOrganizationAuthenticationPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson { + for BeginOrganizationAuthenticationPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationAuthenticationPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-return-to", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -26082,7 +24843,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -26090,33 +24851,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -26137,7 +24890,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -26156,21 +24909,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -26181,51 +24938,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationAuthenticationPreconditionFailedProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationAuthenticationPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationAuthenticationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationAuthenticationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -26234,24 +24982,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -26271,56 +25011,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationAuthenticationPreconditionFailedProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum BeginOrganizationClosureAuthenticationBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationClosureAuthenticationBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/invalid-return-to", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -26333,7 +25068,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -26341,7 +25076,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationClosureAuthenticationBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -26349,27 +25084,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -26382,7 +25115,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -26390,7 +25123,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationClosureAuthenticationBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -26408,21 +25141,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -26433,44 +25167,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationBadRequestProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationClosureAuthenticationBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationClosureAuthenticationBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationClosureAuthenticationBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -26478,17 +25209,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -26507,62 +25236,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationClosureAuthenticationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationClosureAuthenticationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginOrganizationClosureAuthenticationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -26575,7 +25337,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -26583,7 +25345,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationClosureAuthenticationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -26591,33 +25353,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -26638,7 +25392,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -26656,23 +25410,30 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) { (match_count, selected) = select(true); @@ -26684,43 +25445,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationForbiddenProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationClosureAuthenticationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationClosureAuthenticationForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BeginOrganizationClosureAuthenticationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -26729,24 +25507,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -26766,30 +25536,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson { - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationClosureAuthenticationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -26798,7 +25557,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson, + BeginOrganizationClosureAuthenticationGatewayTimeoutProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -26815,24 +25574,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -26853,7 +25604,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationClosureAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -26870,24 +25621,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -26908,7 +25651,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -26952,52 +25695,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationGatewayTimeoutProblem", ), ) } } } impl serde::Serialize - for BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationClosureAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -27005,25 +25738,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -27042,65 +25765,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct BeginOrganizationSsoAdmissionRequestApplicationJson { - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for BeginOrganizationSsoAdmissionRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["returnTo"])?; - BeginOrganizationSsoAdmissionRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - BeginOrganizationSsoAdmissionRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for BeginOrganizationSsoAdmissionRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - BeginOrganizationSsoAdmissionRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::BeginOrganizationAuthenticationResponse200ApplicationJson as BeginOrganizationSsoAdmissionResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson { - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationClosureAuthenticationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -27109,7 +25786,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson, + BeginOrganizationClosureAuthenticationInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -27117,33 +25794,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-return-to", - )) - .then(|| (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -27164,7 +25831,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationClosureAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -27172,33 +25839,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -27219,7 +25878,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -27238,21 +25897,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -27263,52 +25924,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0( + BeginOrganizationClosureAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1( + BeginOrganizationClosureAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -27316,24 +25967,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -27353,23 +25996,21 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationInternalServerErrorProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, + pub enum BeginOrganizationClosureAuthenticationPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -27378,7 +26019,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson, + BeginOrganizationClosureAuthenticationPreconditionFailedProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -27386,23 +26027,27 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + )) + .then(|| (|| -> Option< + Box, + > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -27415,7 +26060,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -27423,7 +26068,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationClosureAuthenticationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -27431,27 +26076,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -27464,7 +26107,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -27472,7 +26115,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationClosureAuthenticationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -27490,21 +26133,26 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -27515,43 +26163,43 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationClosureAuthenticationPreconditionFailedProblem", ), ) } } } impl serde::Serialize - for BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson { + for BeginOrganizationClosureAuthenticationPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + BeginOrganizationClosureAuthenticationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationClosureAuthenticationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -27560,16 +26208,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -27589,62 +26237,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationClosureAuthenticationPreconditionFailedProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationSsoAdmissionBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson { + for BeginOrganizationSsoAdmissionBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationSsoAdmissionBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/invalid-return-to", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -27657,7 +26294,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -27665,7 +26302,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationSsoAdmissionBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -27673,33 +26310,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -27720,7 +26349,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -27739,23 +26368,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -27766,44 +26393,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionBadRequestProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationSsoAdmissionBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationSsoAdmissionBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -27811,25 +26435,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -27848,73 +26462,94 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson { - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0( - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1( - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum BeginOrganizationSsoAdmissionForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BeginOrganizationSsoAdmissionForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), BeginOrganizationSsoAdmissionForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + BeginOrganizationSsoAdmissionForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -27935,7 +26570,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationSsoAdmissionForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -27943,33 +26578,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -27990,7 +26617,7 @@ pub mod types { if replace { selected = Some(( rank, - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -28008,22 +26635,31 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -28034,51 +26670,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionForbiddenProblem", ), ) } } } - impl serde::Serialize - for BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationSsoAdmissionForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationSsoAdmissionForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BeginOrganizationSsoAdmissionForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson::BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -28087,24 +26732,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -28124,172 +26761,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse200ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: CancelOperationResponse200ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: CancelOperationResponse200ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for CancelOperationResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - CancelOperationResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CancelOperationResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse200ApplicationJsonerror { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "detail")] - pub detail: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse200ApplicationJsonerror { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "detail"])?; - CancelOperationResponse200ApplicationJsonerror::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse200ApplicationJsonerror::deserialize(deserializer) - } - } - } - impl serde::Serialize for CancelOperationResponse200ApplicationJsonerror { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse200ApplicationJsonerror::serialize(self, serializer) - } - } - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as CancelOperationResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as CancelOperationResponse200ApplicationJsontype; #[derive(Debug, Clone)] - pub enum CancelOperationResponse403ApplicationProblemPlusJson { - CancelOperationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CancelOperationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum BeginOrganizationSsoAdmissionGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CancelOperationResponse403ApplicationProblemPlusJson { + for BeginOrganizationSsoAdmissionGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelOperationResponse403ApplicationProblemPlusJson), + ((usize, u32), BeginOrganizationSsoAdmissionGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -28310,7 +26826,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse403ApplicationProblemPlusJson::CancelOperationResponse403ApplicationProblemPlusJsonVariant0( + BeginOrganizationSsoAdmissionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -28318,80 +26834,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CancelOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -28412,7 +26873,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse403ApplicationProblemPlusJson::CancelOperationResponse403ApplicationProblemPlusJsonVariant2( + BeginOrganizationSsoAdmissionGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -28430,29 +26891,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -28463,70 +26917,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for CancelOperationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationSsoAdmissionGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelOperationResponse403ApplicationProblemPlusJson::CancelOperationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + BeginOrganizationSsoAdmissionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelOperationResponse403ApplicationProblemPlusJson::CancelOperationResponse403ApplicationProblemPlusJsonVariant2( + BeginOrganizationSsoAdmissionGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -28534,23 +26959,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelOperationResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -28569,355 +26986,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelOperationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CancelOperationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CancelOperationResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_operation_not_found_de", - serialize_with = "const_operation_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_operation_not_found_33d81836_de", - serialize_with = "const_operation_not_found_33d81836_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_operation_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_operation_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_operation_not_cancellable_de", - serialize_with = "const_operation_not_cancellable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_operation_not_cancellable_c6a3f0d4_de", - serialize_with = "const_operation_not_cancellable_c6a3f0d4_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_operation_not_cancellable_de", - serialize_with = "const_https_photon_codes_docs_problems_operation_not_cancellable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse409ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse422ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_validation_failed_de", - serialize_with = "const_validation_failed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "issues")] - pub issues: Vec, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_request_validation_failed_de", - serialize_with = "const_request_validation_failed_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_validation_failed_de", - serialize_with = "const_https_photon_codes_docs_problems_validation_failed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse422ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "issues", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse422ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse422ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse422ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse422ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CancelOperationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CancelOperationResponse422ApplicationProblemPlusJsonissuesItem; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse429ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_rate_limited_de", - serialize_with = "const_rate_limited_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_too_many_requests_de", - serialize_with = "const_too_many_requests_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_rate_limited_de", - serialize_with = "const_https_photon_codes_docs_problems_rate_limited_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse429ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse429ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse429ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse429ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse429ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CancelOperationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CancelOperationResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum BeginOrganizationSsoAdmissionInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CancelOperationResponse500ApplicationProblemPlusJson { + for BeginOrganizationSsoAdmissionInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelOperationResponse500ApplicationProblemPlusJson), + ((usize, u32), BeginOrganizationSsoAdmissionInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -28931,16 +27019,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -28953,7 +27041,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -28961,7 +27049,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationSsoAdmissionInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -28978,22 +27066,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29014,7 +27096,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse500ApplicationProblemPlusJson::CancelOperationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -29060,43 +27142,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for CancelOperationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationSsoAdmissionInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + BeginOrganizationSsoAdmissionInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelOperationResponse500ApplicationProblemPlusJson::CancelOperationResponse500ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -29104,22 +27184,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29139,222 +27213,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelOperationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CancelOperationResponse500ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse502ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_upstream_failure_de", - serialize_with = "const_upstream_failure_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_upstream_service_failure_de", - serialize_with = "const_upstream_service_failure_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_failure_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_failure_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse502ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse502ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse502ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse502ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse502ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelOperationResponse503ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_upstream_unavailable_de", - serialize_with = "const_upstream_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_upstream_service_unavailable_de", - serialize_with = "const_upstream_service_unavailable_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelOperationResponse503ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelOperationResponse503ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelOperationResponse503ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CancelOperationResponse503ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelOperationResponse503ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CancelOperationResponse504ApplicationProblemPlusJson { - CancelOperationResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelOperationResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum BeginOrganizationSsoAdmissionPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for CancelOperationResponse504ApplicationProblemPlusJson { + for BeginOrganizationSsoAdmissionPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelOperationResponse504ApplicationProblemPlusJson), + ((usize, u32), BeginOrganizationSsoAdmissionPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -29375,7 +27282,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse504ApplicationProblemPlusJson::CancelOperationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationSsoAdmissionPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -29383,31 +27290,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29428,7 +27329,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelOperationResponse504ApplicationProblemPlusJson::CancelOperationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -29447,21 +27348,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -29472,48 +27377,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BeginOrganizationSsoAdmissionPreconditionFailedProblem", ), ) } } } - impl serde::Serialize for CancelOperationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for BeginOrganizationSsoAdmissionPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelOperationResponse504ApplicationProblemPlusJson::CancelOperationResponse504ApplicationProblemPlusJsonVariant0( + BeginOrganizationSsoAdmissionPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelOperationResponse504ApplicationProblemPlusJson::CancelOperationResponse504ApplicationProblemPlusJsonVariant1( + BeginOrganizationSsoAdmissionPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -29522,22 +27421,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29557,136 +27450,80 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelOperationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BeginOrganizationSsoAdmissionPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CancelOperationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CancelOperationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelSubscriptionRequestApplicationJson { - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - } - impl<'de> serde::Deserialize<'de> for CancelSubscriptionRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["category"])?; - CancelSubscriptionRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelSubscriptionRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CancelSubscriptionRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelSubscriptionRequestApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelSubscriptionResponse200ApplicationJson { - ///False when the category held no active subscription. - #[serde(rename = "cancellationScheduled")] - pub cancellation_scheduled: bool, - ///End of the final paid period, ISO 8601. - #[serde(rename = "cancelsAt")] - pub cancels_at: Option, - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - } - impl<'de> serde::Deserialize<'de> for CancelSubscriptionResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["cancellationScheduled", "cancelsAt", "category"])?; - CancelSubscriptionResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CancelSubscriptionResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CancelSubscriptionResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelSubscriptionResponse200ApplicationJson::serialize(self, serializer) - } + pub struct BillingNotProvisionedProblem { + #[serde( + rename = "code", + deserialize_with = "const_billing_not_provisioned_de", + serialize_with = "const_billing_not_provisioned_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_billing_not_provisioned_5a01a8e2_de", + serialize_with = "const_billing_not_provisioned_5a01a8e2_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_billing_not_provisioned_de", + serialize_with = "const_https_photon_codes_docs_problems_billing_not_provisioned_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } + ///Authoritative provisioning state. Poll the operation route while pending. #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse400ApplicationProblemPlusJson { - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum BillingOperation { + PendingBillingOperation(Box), + SucceededBillingOperation(Box), + FailedBillingOperation(Box), } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for BillingOperation { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), CancelSubscriptionResponse400ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), BillingOperation)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("pending")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -29699,7 +27536,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1147u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -29707,41 +27544,23 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), + BillingOperation::PendingBillingOperation(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("succeeded")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29754,7 +27573,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1147u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -29762,41 +27581,23 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1( - inner, - ), + BillingOperation::SucceededBillingOperation(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("failed")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -29809,7 +27610,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1147u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -29817,9 +27618,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2( - inner, - ), + BillingOperation::FailedBillingOperation(inner), )); } } @@ -29835,34 +27634,11 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + if value.get("status").and_then(serde_json::Value::as_str) == Some("pending") + || value.get("status").and_then(serde_json::Value::as_str) + == Some("succeeded") + || value.get("status").and_then(serde_json::Value::as_str) + == Some("failed") { (match_count, selected) = select(true); } @@ -29873,52 +27649,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BillingOperation", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union BillingOperation", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse400ApplicationProblemPlusJson { + impl serde::Serialize for BillingOperation { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse400ApplicationProblemPlusJson::CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + BillingOperation::PendingBillingOperation(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + BillingOperation::SucceededBillingOperation(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + BillingOperation::FailedBillingOperation(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -29926,22 +27694,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -29950,23 +27712,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -29985,329 +27739,7284 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union BillingOperation", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CancelSubscriptionResponse400ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse403ApplicationProblemPlusJson { - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct PendingBillingOperation { + #[serde(rename = "failure")] + pub failure: Option<()>, + #[serde(rename = "kind")] + pub kind: BillingOperationKind, + ///Stable handle for this provisioning action. + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "resolvedAt")] + pub resolved_at: Option<()>, + #[serde(rename = "result")] + pub result: Option<()>, + ///Accepted and still executing. Poll the operation route. + #[serde( + rename = "status", + deserialize_with = "const_pending_de", + serialize_with = "const_pending_ser", + )] + pub status: String, + #[serde(rename = "submittedAt")] + pub submitted_at: Option, } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PendingBillingOperation { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), CancelSubscriptionResponse403ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CancelSubscriptionResponse403ApplicationProblemPlusJson::CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CancelSubscriptionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-mismatch", - )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CancelSubscriptionResponse403ApplicationProblemPlusJson::CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse403ApplicationProblemPlusJson", - )) + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "failure", + "kind", + "operationId", + "resolvedAt", + "result", + "status", + "submittedAt", + ], + )?; + PendingBillingOperation::deserialize(value) + .map_err(serde::de::Error::custom) } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse403ApplicationProblemPlusJson", - ), - ) + PendingBillingOperation::deserialize(deserializer) } } } - impl serde::Serialize for CancelSubscriptionResponse403ApplicationProblemPlusJson { + impl serde::Serialize for PendingBillingOperation { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - let value = match self { - CancelSubscriptionResponse403ApplicationProblemPlusJson::CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse403ApplicationProblemPlusJson::CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { + PendingBillingOperation::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum BillingOperationKind { + ///`change_plan` + ChangePlan, + ///`adjust_fixed_charge_quantity` + AdjustFixedChargeQuantity, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl BillingOperationKind { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::ChangePlan => "change_plan", + Self::AdjustFixedChargeQuantity => "adjust_fixed_charge_quantity", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for BillingOperationKind { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for BillingOperationKind { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for BillingOperationKind { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "change_plan" => Ok(Self::ChangePlan), + "adjust_fixed_charge_quantity" => Ok(Self::AdjustFixedChargeQuantity), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `change_plan`, `adjust_fixed_charge_quantity`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SucceededBillingOperation { + #[serde(rename = "failure")] + pub failure: Option<()>, + #[serde(rename = "kind")] + pub kind: BillingOperationKind, + ///Stable handle for this provisioning action. + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "resolvedAt")] + pub resolved_at: Option, + #[serde(rename = "result")] + pub result: BillingOperationResult, + ///Terminal. The result is authoritative. + #[serde( + rename = "status", + deserialize_with = "const_succeeded_de", + serialize_with = "const_succeeded_ser", + )] + pub status: String, + #[serde(rename = "submittedAt")] + pub submitted_at: Option, + } + impl<'de> serde::Deserialize<'de> for SucceededBillingOperation { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "failure", + "kind", + "operationId", + "resolvedAt", + "result", + "status", + "submittedAt", + ], + )?; + SucceededBillingOperation::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SucceededBillingOperation::deserialize(deserializer) + } + } + } + impl serde::Serialize for SucceededBillingOperation { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SucceededBillingOperation::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct BillingOperationResult { + #[serde( + rename = "type", + deserialize_with = "const_version_de", + serialize_with = "const_version_ser", + )] + pub r#type: String, + #[serde(rename = "version")] + pub version: String, + } + impl<'de> serde::Deserialize<'de> for BillingOperationResult { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["type", "version"])?; + BillingOperationResult::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + BillingOperationResult::deserialize(deserializer) + } + } + } + impl serde::Serialize for BillingOperationResult { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + BillingOperationResult::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct FailedBillingOperation { + #[serde(rename = "failure")] + pub failure: BillingOperationFailure, + #[serde(rename = "kind")] + pub kind: BillingOperationKind, + ///Stable handle for this provisioning action. + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "resolvedAt")] + pub resolved_at: Option, + #[serde(rename = "result")] + pub result: Option<()>, + ///Terminal. Failure contains a stable code and retryability. + #[serde( + rename = "status", + deserialize_with = "const_failed_de", + serialize_with = "const_failed_ser", + )] + pub status: String, + #[serde(rename = "submittedAt")] + pub submitted_at: Option, + } + impl<'de> serde::Deserialize<'de> for FailedBillingOperation { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "failure", + "kind", + "operationId", + "resolvedAt", + "result", + "status", + "submittedAt", + ], + )?; + FailedBillingOperation::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + FailedBillingOperation::deserialize(deserializer) + } + } + } + impl serde::Serialize for FailedBillingOperation { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + FailedBillingOperation::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct BillingOperationFailure { + #[serde(rename = "code")] + pub code: BillingOperationFailureCode, + #[serde(rename = "detail")] + pub detail: Option, + #[serde(rename = "retryable")] + pub retryable: bool, + } + impl<'de> serde::Deserialize<'de> for BillingOperationFailure { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["code", "detail", "retryable"])?; + BillingOperationFailure::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + BillingOperationFailure::deserialize(deserializer) + } + } + } + impl serde::Serialize for BillingOperationFailure { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + BillingOperationFailure::serialize(self, serializer) + } + } + ///Stable provider-neutral failure category. + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum BillingOperationFailureCode { + ///`payment_method_required` + PaymentMethodRequired, + ///`payment_failed` + PaymentFailed, + ///`not_provisioned` + NotProvisioned, + ///`invalid_target` + InvalidTarget, + ///`internal` + Internal, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl BillingOperationFailureCode { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::PaymentMethodRequired => "payment_method_required", + Self::PaymentFailed => "payment_failed", + Self::NotProvisioned => "not_provisioned", + Self::InvalidTarget => "invalid_target", + Self::Internal => "internal", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for BillingOperationFailureCode { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for BillingOperationFailureCode { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for BillingOperationFailureCode { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "payment_method_required" => Ok(Self::PaymentMethodRequired), + "payment_failed" => Ok(Self::PaymentFailed), + "not_provisioned" => Ok(Self::NotProvisioned), + "invalid_target" => Ok(Self::InvalidTarget), + "internal" => Ok(Self::Internal), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `payment_method_required`, `payment_failed`, `not_provisioned`, `invalid_target`, `internal`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum BillingOperationFailureDetail { + ///`cancellation_scheduled` + CancellationScheduled, + ///`feature_not_sold_by_plan` + FeatureNotSoldByPlan, + ///`feature_not_found` + FeatureNotFound, + ///`payment_timeout` + PaymentTimeout, + ///`plan_activation_timeout` + PlanActivationTimeout, + ///`plan_not_found` + PlanNotFound, + ///`quantity_out_of_range` + QuantityOutOfRange, + ///`target_rejected` + TargetRejected, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl BillingOperationFailureDetail { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::CancellationScheduled => "cancellation_scheduled", + Self::FeatureNotSoldByPlan => "feature_not_sold_by_plan", + Self::FeatureNotFound => "feature_not_found", + Self::PaymentTimeout => "payment_timeout", + Self::PlanActivationTimeout => "plan_activation_timeout", + Self::PlanNotFound => "plan_not_found", + Self::QuantityOutOfRange => "quantity_out_of_range", + Self::TargetRejected => "target_rejected", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for BillingOperationFailureDetail { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for BillingOperationFailureDetail { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for BillingOperationFailureDetail { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "cancellation_scheduled" => Ok(Self::CancellationScheduled), + "feature_not_sold_by_plan" => Ok(Self::FeatureNotSoldByPlan), + "feature_not_found" => Ok(Self::FeatureNotFound), + "payment_timeout" => Ok(Self::PaymentTimeout), + "plan_activation_timeout" => Ok(Self::PlanActivationTimeout), + "plan_not_found" => Ok(Self::PlanNotFound), + "quantity_out_of_range" => Ok(Self::QuantityOutOfRange), + "target_rejected" => Ok(Self::TargetRejected), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `cancellation_scheduled`, `feature_not_sold_by_plan`, `feature_not_found`, `payment_timeout`, `plan_activation_timeout`, `plan_not_found`, `quantity_out_of_range`, `target_rejected`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct BillingPlan { + ///Recurring base price in whole cents. + #[serde( + rename = "baseAmountCents", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub base_amount_cents: i64, + ///Display name for the subscription category; absent or null when unconfigured. + #[serde( + rename = "categoryDisplayName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub category_display_name: Option>, + ///ISO currency code. + #[serde(rename = "currency")] + pub currency: String, + #[serde(rename = "description")] + pub description: Option, + #[serde(rename = "entitlements")] + pub entitlements: Vec, + #[serde(rename = "fixedCharges")] + pub fixed_charges: Vec, + #[serde(rename = "interval")] + pub interval: BillingPlanInterval, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "payInAdvance")] + pub pay_in_advance: bool, + #[serde(rename = "planCode")] + pub plan_code: String, + #[serde(rename = "usageCharges")] + pub usage_charges: Vec, + } + impl<'de> serde::Deserialize<'de> for BillingPlan { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "baseAmountCents", + "categoryDisplayName", + "currency", + "description", + "entitlements", + "fixedCharges", + "interval", + "name", + "payInAdvance", + "planCode", + "usageCharges", + ], + )?; + BillingPlan::deserialize(value).map_err(serde::de::Error::custom) + } else { + BillingPlan::deserialize(deserializer) + } + } + } + impl serde::Serialize for BillingPlan { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + BillingPlan::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct BillingPlanEntitlement { + #[serde(rename = "featureKey")] + pub feature_key: String, + #[serde(rename = "value")] + pub value: String, + } + impl<'de> serde::Deserialize<'de> for BillingPlanEntitlement { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["featureKey", "value"])?; + BillingPlanEntitlement::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + BillingPlanEntitlement::deserialize(deserializer) + } + } + } + impl serde::Serialize for BillingPlanEntitlement { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + BillingPlanEntitlement::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct FixedCharge { + #[serde(rename = "chargeModel")] + pub charge_model: FixedChargeModel, + #[serde(rename = "displayName")] + pub display_name: String, + #[serde(rename = "fixedChargeCode")] + pub fixed_charge_code: String, + #[serde(rename = "payInAdvance")] + pub pay_in_advance: bool, + #[serde(rename = "pricing")] + pub pricing: FixedChargePricing, + #[serde(rename = "prorated")] + pub prorated: bool, + #[serde(rename = "quantity", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub quantity: i64, + } + impl<'de> serde::Deserialize<'de> for FixedCharge { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "chargeModel", + "displayName", + "fixedChargeCode", + "payInAdvance", + "pricing", + "prorated", + "quantity", + ], + )?; + FixedCharge::deserialize(value).map_err(serde::de::Error::custom) + } else { + FixedCharge::deserialize(deserializer) + } + } + } + impl serde::Serialize for FixedCharge { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + FixedCharge::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum FixedChargeModel { + ///`graduated` + Graduated, + ///`standard` + Standard, + ///`volume` + Volume, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl FixedChargeModel { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Graduated => "graduated", + Self::Standard => "standard", + Self::Volume => "volume", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for FixedChargeModel { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for FixedChargeModel { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for FixedChargeModel { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "graduated" => Ok(Self::Graduated), + "standard" => Ok(Self::Standard), + "volume" => Ok(Self::Volume), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `graduated`, `standard`, `volume`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct FixedChargePricing { + #[serde(rename = "amount")] + pub amount: Option, + #[serde(rename = "tiers")] + pub tiers: Vec, + } + impl<'de> serde::Deserialize<'de> for FixedChargePricing { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["amount", "tiers"])?; + FixedChargePricing::deserialize(value).map_err(serde::de::Error::custom) + } else { + FixedChargePricing::deserialize(deserializer) + } + } + } + impl serde::Serialize for FixedChargePricing { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + FixedChargePricing::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct FixedChargeTier { + #[serde(rename = "flatAmount")] + pub flat_amount: Option, + #[serde(rename = "fromUnit", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub from_unit: i64, + #[serde(rename = "perUnitAmount")] + pub per_unit_amount: Option, + #[serde( + rename = "toUnit", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub to_unit: Option, + } + impl<'de> serde::Deserialize<'de> for FixedChargeTier { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["flatAmount", "fromUnit", "perUnitAmount", "toUnit"])?; + FixedChargeTier::deserialize(value).map_err(serde::de::Error::custom) + } else { + FixedChargeTier::deserialize(deserializer) + } + } + } + impl serde::Serialize for FixedChargeTier { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + FixedChargeTier::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum BillingPlanInterval { + ///`weekly` + Weekly, + ///`monthly` + Monthly, + ///`quarterly` + Quarterly, + ///`semiannual` + Semiannual, + ///`yearly` + Yearly, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl BillingPlanInterval { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Weekly => "weekly", + Self::Monthly => "monthly", + Self::Quarterly => "quarterly", + Self::Semiannual => "semiannual", + Self::Yearly => "yearly", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for BillingPlanInterval { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for BillingPlanInterval { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for BillingPlanInterval { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "weekly" => Ok(Self::Weekly), + "monthly" => Ok(Self::Monthly), + "quarterly" => Ok(Self::Quarterly), + "semiannual" => Ok(Self::Semiannual), + "yearly" => Ok(Self::Yearly), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `weekly`, `monthly`, `quarterly`, `semiannual`, `yearly`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UsageCharge { + #[serde(rename = "chargeCode")] + pub charge_code: Option, + #[serde(rename = "chargeModel")] + pub charge_model: UsageChargeModel, + #[serde(rename = "displayName")] + pub display_name: Option, + #[serde(rename = "filters")] + pub filters: Vec, + #[serde(rename = "invoiceable")] + pub invoiceable: bool, + #[serde(rename = "metricCode")] + pub metric_code: String, + #[serde( + rename = "minimumAmountCents", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub minimum_amount_cents: i64, + #[serde(rename = "payInAdvance")] + pub pay_in_advance: bool, + #[serde(rename = "pricing")] + pub pricing: UsageChargePricing, + #[serde(rename = "prorated")] + pub prorated: bool, + } + impl<'de> serde::Deserialize<'de> for UsageCharge { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "chargeCode", + "chargeModel", + "displayName", + "filters", + "invoiceable", + "metricCode", + "minimumAmountCents", + "payInAdvance", + "pricing", + "prorated", + ], + )?; + UsageCharge::deserialize(value).map_err(serde::de::Error::custom) + } else { + UsageCharge::deserialize(deserializer) + } + } + } + impl serde::Serialize for UsageCharge { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UsageCharge::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum UsageChargeModel { + ///`dynamic` + Dynamic, + ///`graduated` + Graduated, + ///`graduated_percentage` + GraduatedPercentage, + ///`package` + Package, + ///`percentage` + Percentage, + ///`standard` + Standard, + ///`volume` + Volume, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl UsageChargeModel { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Dynamic => "dynamic", + Self::Graduated => "graduated", + Self::GraduatedPercentage => "graduated_percentage", + Self::Package => "package", + Self::Percentage => "percentage", + Self::Standard => "standard", + Self::Volume => "volume", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for UsageChargeModel { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for UsageChargeModel { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for UsageChargeModel { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "dynamic" => Ok(Self::Dynamic), + "graduated" => Ok(Self::Graduated), + "graduated_percentage" => Ok(Self::GraduatedPercentage), + "package" => Ok(Self::Package), + "percentage" => Ok(Self::Percentage), + "standard" => Ok(Self::Standard), + "volume" => Ok(Self::Volume), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `dynamic`, `graduated`, `graduated_percentage`, `package`, `percentage`, `standard`, `volume`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UsageChargeFilter { + #[serde(rename = "displayName")] + pub display_name: Option, + #[serde(rename = "pricing")] + pub pricing: UsageChargePricing, + #[serde(rename = "values")] + pub values: Vec, + } + impl<'de> serde::Deserialize<'de> for UsageChargeFilter { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["displayName", "pricing", "values"])?; + UsageChargeFilter::deserialize(value).map_err(serde::de::Error::custom) + } else { + UsageChargeFilter::deserialize(deserializer) + } + } + } + impl serde::Serialize for UsageChargeFilter { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UsageChargeFilter::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UsageChargePricing { + #[serde(rename = "amount")] + pub amount: Option, + #[serde(rename = "fixedAmount")] + pub fixed_amount: Option, + #[serde( + rename = "freeUnits", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub free_units: Option, + #[serde( + rename = "freeUnitsPerEvents", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub free_units_per_events: Option, + #[serde(rename = "freeUnitsPerTotalAggregation")] + pub free_units_per_total_aggregation: Option, + #[serde( + rename = "packageSize", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub package_size: Option, + #[serde(rename = "perTransactionMaxAmount")] + pub per_transaction_max_amount: Option, + #[serde(rename = "perTransactionMinAmount")] + pub per_transaction_min_amount: Option, + #[serde(rename = "pricingGroupKeys")] + pub pricing_group_keys: Vec, + #[serde(rename = "rate")] + pub rate: Option, + #[serde(rename = "tiers")] + pub tiers: Vec, + } + impl<'de> serde::Deserialize<'de> for UsageChargePricing { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "amount", + "fixedAmount", + "freeUnits", + "freeUnitsPerEvents", + "freeUnitsPerTotalAggregation", + "packageSize", + "perTransactionMaxAmount", + "perTransactionMinAmount", + "pricingGroupKeys", + "rate", + "tiers", + ], + )?; + UsageChargePricing::deserialize(value).map_err(serde::de::Error::custom) + } else { + UsageChargePricing::deserialize(deserializer) + } + } + } + impl serde::Serialize for UsageChargePricing { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UsageChargePricing::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UsageChargeTier { + #[serde(rename = "flatAmount")] + pub flat_amount: Option, + #[serde(rename = "fromUnit", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub from_unit: i64, + #[serde(rename = "perUnitAmount")] + pub per_unit_amount: Option, + #[serde(rename = "rate")] + pub rate: Option, + #[serde( + rename = "toUnit", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub to_unit: Option, + } + impl<'de> serde::Deserialize<'de> for UsageChargeTier { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &["flatAmount", "fromUnit", "perUnitAmount", "rate", "toUnit"], + )?; + UsageChargeTier::deserialize(value).map_err(serde::de::Error::custom) + } else { + UsageChargeTier::deserialize(deserializer) + } + } + } + impl serde::Serialize for UsageChargeTier { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UsageChargeTier::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UsageChargeFilterValue { + #[serde(rename = "key")] + pub key: String, + #[serde(rename = "values")] + pub values: Vec, + } + impl<'de> serde::Deserialize<'de> for UsageChargeFilterValue { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["key", "values"])?; + UsageChargeFilterValue::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UsageChargeFilterValue::deserialize(deserializer) + } + } + } + impl serde::Serialize for UsageChargeFilterValue { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UsageChargeFilterValue::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum CancelOperationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelOperationForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CancelOperationForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationForbiddenProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelOperationForbiddenProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelOperationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelOperationForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelOperationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelOperationForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelOperationForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelOperationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelOperationGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CancelOperationGatewayTimeoutProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelOperationGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelOperationGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelOperationGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelOperationGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelOperationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelOperationInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CancelOperationInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelOperationInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationInternalServerErrorProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelOperationInternalServerErrorProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelOperationInternalServerErrorProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelOperationInternalServerErrorProblem::InternalErrorProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelOperationInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelOperationInternalServerErrorProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionBadRequestProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CancelSubscriptionBadRequestProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionBadRequestProblem::InvalidArgumentProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionBadRequestProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionBadRequestProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionBadRequestProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelSubscriptionBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelSubscriptionBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionBadRequestProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionConflictProblem { + FailedPreconditionProblem(Box), + IdempotencyRequestInProgressProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionConflictProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CancelSubscriptionConflictProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FAILED_PRECONDITION") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Failed Precondition") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/failed-precondition", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionConflictProblem::FailedPreconditionProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Request In Progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-request-in-progress", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionConflictProblem::IdempotencyRequestInProgressProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("FAILED_PRECONDITION") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Failed Precondition") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/failed-precondition") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Request In Progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-request-in-progress", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionConflictProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionConflictProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionConflictProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionConflictProblem::FailedPreconditionProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelSubscriptionConflictProblem::IdempotencyRequestInProgressProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionConflictProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct FailedPreconditionProblem { + #[serde( + rename = "code", + deserialize_with = "const_failed_precondition_de", + serialize_with = "const_failed_precondition_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_failed_precondition_957374cb_de", + serialize_with = "const_failed_precondition_957374cb_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_failed_precondition_de", + serialize_with = "const_https_photon_codes_docs_problems_failed_precondition_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct IdempotencyRequestInProgressProblem { + #[serde( + rename = "code", + deserialize_with = "const_idempotency_request_in_progress_de", + serialize_with = "const_idempotency_request_in_progress_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_idempotency_request_in_progress_beb1767c_de", + serialize_with = "const_idempotency_request_in_progress_beb1767c_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_idempotency_request_in_progress_de", + serialize_with = "const_https_photon_codes_docs_problems_idempotency_request_in_progress_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CancelSubscriptionForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionForbiddenProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionForbiddenProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelSubscriptionForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelSubscriptionForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelSubscriptionForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CancelSubscriptionGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CancelSubscriptionGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CancelSubscriptionInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionInternalServerErrorProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionInternalServerErrorProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionInternalServerErrorProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionInternalServerErrorProblem::InternalErrorProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelSubscriptionInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionInternalServerErrorProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CancelSubscriptionRequest { + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["category"])?; + CancelSubscriptionRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CancelSubscriptionRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CancelSubscriptionRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CancelSubscriptionRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CancelSubscriptionResponse { + ///False when the category held no active subscription. + #[serde(rename = "cancellationScheduled")] + pub cancellation_scheduled: bool, + ///End of the final paid period, ISO 8601. + #[serde(rename = "cancelsAt")] + pub cancels_at: Option, + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["cancellationScheduled", "cancelsAt", "category"])?; + CancelSubscriptionResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CancelSubscriptionResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for CancelSubscriptionResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CancelSubscriptionResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionServiceUnavailableProblem { + IdempotencyUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionServiceUnavailableProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CancelSubscriptionServiceUnavailableProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-unavailable", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionServiceUnavailableProblem::IdempotencyUnavailableProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/idempotency-unavailable") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionServiceUnavailableProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionServiceUnavailableProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionServiceUnavailableProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionServiceUnavailableProblem::IdempotencyUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelSubscriptionServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionServiceUnavailableProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct IdempotencyUnavailableProblem { + #[serde( + rename = "code", + deserialize_with = "const_idempotency_unavailable_de", + serialize_with = "const_idempotency_unavailable_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_idempotency_unavailable_fe4ede31_de", + serialize_with = "const_idempotency_unavailable_fe4ede31_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_idempotency_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_idempotency_unavailable_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone)] + pub enum CancelSubscriptionUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CancelSubscriptionUnprocessableEntityProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CancelSubscriptionUnprocessableEntityProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1109u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CancelSubscriptionUnprocessableEntityProblem::IdempotencyKeyReusedProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/validation-failed") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionUnprocessableEntityProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CancelSubscriptionUnprocessableEntityProblem", + ), + ) + } + } + } + impl serde::Serialize for CancelSubscriptionUnprocessableEntityProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CancelSubscriptionUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CancelSubscriptionUnprocessableEntityProblem::IdempotencyKeyReusedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CancelSubscriptionUnprocessableEntityProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ValidationFailedProblem { + #[serde( + rename = "code", + deserialize_with = "const_validation_failed_de", + serialize_with = "const_validation_failed_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde(rename = "issues")] + pub issues: Vec, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_request_validation_failed_de", + serialize_with = "const_request_validation_failed_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_validation_failed_de", + serialize_with = "const_https_photon_codes_docs_problems_validation_failed_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ValidationIssue { + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "location")] + pub location: ValidationLocation, + #[serde(rename = "message")] + pub message: String, + #[serde(rename = "path")] + pub path: String, + } + impl<'de> serde::Deserialize<'de> for ValidationIssue { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["code", "location", "message", "path"])?; + ValidationIssue::deserialize(value).map_err(serde::de::Error::custom) + } else { + ValidationIssue::deserialize(deserializer) + } + } + } + impl serde::Serialize for ValidationIssue { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ValidationIssue::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum ValidationLocation { + ///`body` + Body, + ///`cookie` + Cookie, + ///`form` + Form, + ///`header` + Header, + ///`json` + Json, + ///`param` + Param, + ///`query` + Query, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl ValidationLocation { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Body => "body", + Self::Cookie => "cookie", + Self::Form => "form", + Self::Header => "header", + Self::Json => "json", + Self::Param => "param", + Self::Query => "query", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for ValidationLocation { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for ValidationLocation { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for ValidationLocation { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "body" => Ok(Self::Body), + "cookie" => Ok(Self::Cookie), + "form" => Ok(Self::Form), + "header" => Ok(Self::Header), + "json" => Ok(Self::Json), + "param" => Ok(Self::Param), + "query" => Ok(Self::Query), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `body`, `cookie`, `form`, `header`, `json`, `param`, `query`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct IdempotencyKeyReusedProblem { + #[serde( + rename = "code", + deserialize_with = "const_idempotency_key_reused_de", + serialize_with = "const_idempotency_key_reused_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_idempotency_key_reused_2719cc28_de", + serialize_with = "const_idempotency_key_reused_2719cc28_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_idempotency_key_reused_de", + serialize_with = "const_https_photon_codes_docs_problems_idempotency_key_reused_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum CaptchaProvider { + ///`turnstile` + Turnstile, + ///`hcaptcha` + Hcaptcha, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl CaptchaProvider { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Turnstile => "turnstile", + Self::Hcaptcha => "hcaptcha", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for CaptchaProvider { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for CaptchaProvider { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for CaptchaProvider { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "turnstile" => Ok(Self::Turnstile), + "hcaptcha" => Ok(Self::Hcaptcha), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `turnstile`, `hcaptcha`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct CaptchaRequiredProblem { + #[serde(rename = "challengeContext")] + pub challenge_context: String, + #[serde( + rename = "code", + deserialize_with = "const_captcha_required_de", + serialize_with = "const_captcha_required_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde(rename = "provider")] + pub provider: CaptchaProvider, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "siteKey")] + pub site_key: String, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_captcha_required_aebb016d_de", + serialize_with = "const_captcha_required_aebb016d_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_captcha_required_de", + serialize_with = "const_https_photon_codes_docs_problems_captcha_required_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone)] + pub enum ChangePlanBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanBadRequestProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanBadRequestProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanBadRequestProblem::InvalidArgumentProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanBadRequestProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanBadRequestProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanBadRequestProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanBadRequestProblem::IdempotencyKeyRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanBadRequestProblem::IdempotencyKeyInvalidProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanBadRequestProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanConflictProblem { + FailedPreconditionProblem(Box), + IdempotencyRequestInProgressProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanConflictProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanConflictProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FAILED_PRECONDITION") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Failed Precondition") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/failed-precondition", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanConflictProblem::FailedPreconditionProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Request In Progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-request-in-progress", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanConflictProblem::IdempotencyRequestInProgressProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("FAILED_PRECONDITION") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Failed Precondition") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/failed-precondition") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Request In Progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-request-in-progress", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanConflictProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanConflictProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanConflictProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanConflictProblem::FailedPreconditionProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanConflictProblem::IdempotencyRequestInProgressProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanConflictProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanForbiddenProblem::InsufficientScopeProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanForbiddenProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanForbiddenProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanGatewayTimeoutProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanGatewayTimeoutProblem::RequestTimeoutProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanInternalServerErrorProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanInternalServerErrorProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanInternalServerErrorProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanInternalServerErrorProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanInternalServerErrorProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ChangePlanRequest { + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + ///Plan to subscribe to, e.g. analytics_pro. + #[serde(rename = "planCode")] + pub plan_code: String, + } + impl<'de> serde::Deserialize<'de> for ChangePlanRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["category", "planCode"])?; + ChangePlanRequest::deserialize(value).map_err(serde::de::Error::custom) + } else { + ChangePlanRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ChangePlanRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ChangePlanRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanServiceUnavailableProblem { + IdempotencyUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanServiceUnavailableProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanServiceUnavailableProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-unavailable", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanServiceUnavailableProblem::IdempotencyUnavailableProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/idempotency-unavailable") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanServiceUnavailableProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanServiceUnavailableProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanServiceUnavailableProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanServiceUnavailableProblem::IdempotencyUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ChangePlanServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanServiceUnavailableProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ChangePlanUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ChangePlanUnprocessableEntityProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), ChangePlanUnprocessableEntityProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1109u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ChangePlanUnprocessableEntityProblem::IdempotencyKeyReusedProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/validation-failed") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanUnprocessableEntityProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ChangePlanUnprocessableEntityProblem", + ), + ) + } + } + } + impl serde::Serialize for ChangePlanUnprocessableEntityProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ChangePlanUnprocessableEntityProblem::ValidationFailedProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ChangePlanUnprocessableEntityProblem::IdempotencyKeyReusedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ChangePlanUnprocessableEntityProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CheckProjectSlugAvailabilityForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CheckProjectSlugAvailabilityForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CheckProjectSlugAvailabilityForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityForbiddenProblem", + ), + ) + } + } + } + impl serde::Serialize for CheckProjectSlugAvailabilityForbiddenProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CheckProjectSlugAvailabilityForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CheckProjectSlugAvailabilityForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CheckProjectSlugAvailabilityForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CheckProjectSlugAvailabilityForbiddenProblem::ResourceMismatchProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CheckProjectSlugAvailabilityGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> + for CheckProjectSlugAvailabilityGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CheckProjectSlugAvailabilityGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for CheckProjectSlugAvailabilityGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CheckProjectSlugAvailabilityGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CheckProjectSlugAvailabilityGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CheckProjectSlugAvailabilityResponse { + AvailableProjectSlug(Box), + UnavailableProjectSlug(Box), + } + impl<'de> serde::Deserialize<'de> for CheckProjectSlugAvailabilityResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), CheckProjectSlugAvailabilityResponse)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("available").and_then(serde_json::Value::as_bool) + == Some(true)) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1042u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityResponse::AvailableProjectSlug( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("available").and_then(serde_json::Value::as_bool) + == Some(false)) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1064u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CheckProjectSlugAvailabilityResponse::UnavailableProjectSlug( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("available").and_then(serde_json::Value::as_bool) == Some(true) + || value.get("available").and_then(serde_json::Value::as_bool) + == Some(false) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse", + ), + ) + } + } + } + impl serde::Serialize for CheckProjectSlugAvailabilityResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CheckProjectSlugAvailabilityResponse::AvailableProjectSlug(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CheckProjectSlugAvailabilityResponse::UnavailableProjectSlug(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UnavailableProjectSlug { + #[serde(rename = "available")] + pub available: bool, + #[serde(rename = "reason")] + pub reason: UnavailableProjectSlugReason, + #[serde(rename = "slug")] + pub slug: String, + #[serde(rename = "suggestion", default, skip_serializing_if = "Option::is_none")] + pub suggestion: Option, + } + impl<'de> serde::Deserialize<'de> for UnavailableProjectSlug { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["available", "reason", "slug", "suggestion"])?; + UnavailableProjectSlug::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UnavailableProjectSlug::deserialize(deserializer) + } + } + } + impl serde::Serialize for UnavailableProjectSlug { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UnavailableProjectSlug::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum UnavailableProjectSlugReason { + ///`reserved` + Reserved, + ///`retired` + Retired, + ///`taken` + Taken, + ///`too_short` + TooShort, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl UnavailableProjectSlugReason { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Reserved => "reserved", + Self::Retired => "retired", + Self::Taken => "taken", + Self::TooShort => "too_short", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for UnavailableProjectSlugReason { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for UnavailableProjectSlugReason { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for UnavailableProjectSlugReason { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "reserved" => Ok(Self::Reserved), + "retired" => Ok(Self::Retired), + "taken" => Ok(Self::Taken), + "too_short" => Ok(Self::TooShort), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `reserved`, `retired`, `taken`, `too_short`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ClickHouseSqlQueryRequest { + #[serde( + rename = "parameters", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub parameters: Option>, + #[serde(rename = "sql")] + pub sql: String, + } + impl<'de> serde::Deserialize<'de> for ClickHouseSqlQueryRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["parameters", "sql"])?; + ClickHouseSqlQueryRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ClickHouseSqlQueryRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ClickHouseSqlQueryRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ClickHouseSqlQueryRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum CommitAccountProfilePictureBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CommitAccountProfilePictureBadRequestProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CommitAccountProfilePictureBadRequestProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureBadRequestProblem::InvalidArgumentProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureBadRequestProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureBadRequestProblem", + ), + ) + } + } + } + impl serde::Serialize for CommitAccountProfilePictureBadRequestProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CommitAccountProfilePictureBadRequestProblem::InvalidArgumentProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAccountProfilePictureBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAccountProfilePictureBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -30327,65 +35036,425 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAccountProfilePictureBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CancelSubscriptionResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse409ApplicationProblemPlusJson { - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CommitAccountProfilePictureForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for CommitAccountProfilePictureForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CommitAccountProfilePictureForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureForbiddenProblem", + ), + ) + } + } + } + impl serde::Serialize for CommitAccountProfilePictureForbiddenProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CommitAccountProfilePictureForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CommitAccountProfilePictureForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAccountProfilePictureForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAccountProfilePictureForbiddenProblem::ResourceMismatchProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CommitAccountProfilePictureForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CommitAccountProfilePictureGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse409ApplicationProblemPlusJson { + for CommitAccountProfilePictureGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelSubscriptionResponse409ApplicationProblemPlusJson), + ((usize, u32), CommitAccountProfilePictureGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/failed-precondition", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -30406,7 +35475,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse409ApplicationProblemPlusJson::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0( + CommitAccountProfilePictureGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -30414,33 +35483,248 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CommitAccountProfilePictureGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for CommitAccountProfilePictureGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CommitAccountProfilePictureGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAccountProfilePictureGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CommitAccountProfilePictureGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum CommitAccountProfilePictureInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> + for CommitAccountProfilePictureInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), CommitAccountProfilePictureInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAccountProfilePictureInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -30461,7 +35745,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse409ApplicationProblemPlusJson::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1( + CommitAccountProfilePictureInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -30480,22 +35764,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/failed-precondition") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -30507,49 +35791,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAccountProfilePictureInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAccountProfilePictureInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CommitAccountProfilePictureInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse409ApplicationProblemPlusJson::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0( + CommitAccountProfilePictureInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse409ApplicationProblemPlusJson::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1( + CommitAccountProfilePictureInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -30557,22 +35833,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -30592,7 +35862,7 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAccountProfilePictureInternalServerErrorProblem", ), ) } @@ -30600,221 +35870,72 @@ pub mod types { } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_failed_precondition_de", - serialize_with = "const_failed_precondition_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_failed_precondition_957374cb_de", - serialize_with = "const_failed_precondition_957374cb_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_failed_precondition_de", - serialize_with = "const_https_photon_codes_docs_problems_failed_precondition_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_idempotency_request_in_progress_de", - serialize_with = "const_idempotency_request_in_progress_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_idempotency_request_in_progress_beb1767c_de", - serialize_with = "const_idempotency_request_in_progress_beb1767c_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_idempotency_request_in_progress_de", - serialize_with = "const_https_photon_codes_docs_problems_idempotency_request_in_progress_ser", - )] - pub r#type: String, + pub struct CommitAccountProfilePictureRequest { + #[serde(rename = "uploadId")] + pub upload_id: String, } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1 { + impl<'de> serde::Deserialize<'de> for CommitAccountProfilePictureRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) + super::support::check_known_members::(&value, &["uploadId"])?; + CommitAccountProfilePictureRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) + CommitAccountProfilePictureRequest::deserialize(deserializer) } } } - impl serde::Serialize - for CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1 { + impl serde::Serialize for CommitAccountProfilePictureRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) + CommitAccountProfilePictureRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse422ApplicationProblemPlusJson { - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CommitAccountProfilePictureUnprocessableEntityProblem { + IdempotencyKeyReusedProblem(Box), + ValidationFailedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse422ApplicationProblemPlusJson { + for CommitAccountProfilePictureUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelSubscriptionResponse422ApplicationProblemPlusJson), + ((usize, u32), CommitAccountProfilePictureUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -30827,7 +35948,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -30835,7 +35956,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse422ApplicationProblemPlusJson::CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0( + CommitAccountProfilePictureUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -30843,33 +35964,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -30882,7 +35995,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -30890,7 +36003,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse422ApplicationProblemPlusJson::CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1( + CommitAccountProfilePictureUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -30909,23 +36022,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/idempotency-key-reused") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/validation-failed") { (match_count, selected) = select(true); } @@ -30936,48 +36047,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAccountProfilePictureUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAccountProfilePictureUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CommitAccountProfilePictureUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse422ApplicationProblemPlusJson::CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0( + CommitAccountProfilePictureUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse422ApplicationProblemPlusJson::CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1( + CommitAccountProfilePictureUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -30986,23 +36091,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -31021,55 +36118,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAccountProfilePictureUnprocessableEntityProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CancelSubscriptionResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CommitAgentProfileAvatarBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CommitAgentProfileAvatarBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelSubscriptionResponse500ApplicationProblemPlusJson), + ((usize, u32), CommitAgentProfileAvatarBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -31082,7 +36175,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -31090,7 +36183,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CommitAgentProfileAvatarBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -31098,33 +36191,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAgentProfileAvatarBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -31145,7 +36277,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse500ApplicationProblemPlusJson::CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -31164,23 +36296,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -31191,42 +36333,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarBadRequestProblem", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CommitAgentProfileAvatarBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CommitAgentProfileAvatarBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAgentProfileAvatarBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse500ApplicationProblemPlusJson::CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -31235,22 +36380,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -31259,6 +36398,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -31270,65 +36425,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CancelSubscriptionResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CancelSubscriptionResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse503ApplicationProblemPlusJson { - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CommitAgentProfileAvatarForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CommitAgentProfileAvatarForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelSubscriptionResponse503ApplicationProblemPlusJson), + ((usize, u32), CommitAgentProfileAvatarForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAgentProfileAvatarForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-unavailable", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -31349,7 +36534,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse503ApplicationProblemPlusJson::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0( + CommitAgentProfileAvatarForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -31357,33 +36542,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CommitAgentProfileAvatarForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -31404,7 +36628,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse503ApplicationProblemPlusJson::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -31422,24 +36646,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-unavailable") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -31450,48 +36689,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarForbiddenProblem", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse503ApplicationProblemPlusJson { + impl serde::Serialize for CommitAgentProfileAvatarForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse503ApplicationProblemPlusJson::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0( + CommitAgentProfileAvatarForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CommitAgentProfileAvatarForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CommitAgentProfileAvatarForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse503ApplicationProblemPlusJson::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -31500,22 +36754,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -31524,6 +36772,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -31535,147 +36799,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_idempotency_unavailable_de", - serialize_with = "const_idempotency_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_idempotency_unavailable_fe4ede31_de", - serialize_with = "const_idempotency_unavailable_fe4ede31_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_idempotency_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_idempotency_unavailable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CancelSubscriptionResponse504ApplicationProblemPlusJson { - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CommitAgentProfileAvatarGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CancelSubscriptionResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CommitAgentProfileAvatarGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CancelSubscriptionResponse504ApplicationProblemPlusJson), + ((usize, u32), CommitAgentProfileAvatarGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -31696,7 +36863,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse504ApplicationProblemPlusJson::CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0( + CommitAgentProfileAvatarGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -31704,33 +36871,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -31751,7 +36910,7 @@ pub mod types { if replace { selected = Some(( rank, - CancelSubscriptionResponse504ApplicationProblemPlusJson::CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -31770,21 +36929,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -31795,49 +36954,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CancelSubscriptionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for CancelSubscriptionResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CommitAgentProfileAvatarGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CancelSubscriptionResponse504ApplicationProblemPlusJson::CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0( + CommitAgentProfileAvatarGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CancelSubscriptionResponse504ApplicationProblemPlusJson::CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1( + CommitAgentProfileAvatarGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -31845,23 +36996,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -31880,83 +37023,80 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CancelSubscriptionResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CancelSubscriptionResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ChangePlanRequestApplicationJson { - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - ///Plan to subscribe to, e.g. analytics_pro. - #[serde(rename = "planCode")] - pub plan_code: String, + pub struct CommitAgentProfileAvatarRequest { + #[serde(rename = "uploadId")] + pub upload_id: String, } - impl<'de> serde::Deserialize<'de> for ChangePlanRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for CommitAgentProfileAvatarRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["category", "planCode"])?; - ChangePlanRequestApplicationJson::deserialize(value) + super::support::check_known_members::(&value, &["uploadId"])?; + CommitAgentProfileAvatarRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - ChangePlanRequestApplicationJson::deserialize(deserializer) + CommitAgentProfileAvatarRequest::deserialize(deserializer) } } } - impl serde::Serialize for ChangePlanRequestApplicationJson { + impl serde::Serialize for CommitAgentProfileAvatarRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ChangePlanRequestApplicationJson::serialize(self, serializer) + CommitAgentProfileAvatarRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum ChangePlanResponse200ApplicationJson { - ChangePlanResponse200ApplicationJsonVariant0( - Box, - ), - ChangePlanResponse200ApplicationJsonVariant1( - Box, - ), + pub enum CommitAgentProfileAvatarUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> for ChangePlanResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> + for CommitAgentProfileAvatarUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option<((usize, u32), ChangePlanResponse200ApplicationJson)>; + type Selected = Option< + ((usize, u32), CommitAgentProfileAvatarUnprocessableEntityProblem), + >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("succeeded")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -31969,7 +37109,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1147u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -31977,27 +37117,33 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse200ApplicationJson::ChangePlanResponse200ApplicationJsonVariant0( + CommitAgentProfileAvatarUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("failed")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32010,7 +37156,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1147u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -32018,7 +37164,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse200ApplicationJson::ChangePlanResponse200ApplicationJsonVariant1( + CommitAgentProfileAvatarUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -32036,10 +37182,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("status").and_then(serde_json::Value::as_str) - == Some("succeeded") - || value.get("status").and_then(serde_json::Value::as_str) - == Some("failed") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/validation-failed") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -32050,43 +37210,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse200ApplicationJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse200ApplicationJson", + "data must match exactly one typed variant of union CommitAgentProfileAvatarUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse200ApplicationJson { + impl serde::Serialize for CommitAgentProfileAvatarUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse200ApplicationJson::ChangePlanResponse200ApplicationJsonVariant0( + CommitAgentProfileAvatarUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse200ApplicationJson::ChangePlanResponse200ApplicationJsonVariant1( + CommitAgentProfileAvatarUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -32094,16 +37252,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32123,555 +37281,30 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarUnprocessableEntityProblem", ), ) } } } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ChangePlanResponse200ApplicationJsonVariant0kind { - ///`change_plan` - ChangePlan, - ///`adjust_fixed_charge_quantity` - AdjustFixedChargeQuantity, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ChangePlanResponse200ApplicationJsonVariant0kind { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::ChangePlan => "change_plan", - Self::AdjustFixedChargeQuantity => "adjust_fixed_charge_quantity", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display for ChangePlanResponse200ApplicationJsonVariant0kind { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant0kind { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse200ApplicationJsonVariant0kind { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "change_plan" => Ok(Self::ChangePlan), - "adjust_fixed_charge_quantity" => Ok(Self::AdjustFixedChargeQuantity), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `change_plan`, `adjust_fixed_charge_quantity`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse200ApplicationJsonVariant0result { - #[serde( - rename = "type", - deserialize_with = "const_version_de", - serialize_with = "const_version_ser", - )] - pub r#type: String, - #[serde(rename = "version")] - pub version: String, - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse200ApplicationJsonVariant0result { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["type", "version"])?; - ChangePlanResponse200ApplicationJsonVariant0result::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse200ApplicationJsonVariant0result::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant0result { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse200ApplicationJsonVariant0result::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse200ApplicationJsonVariant0 { - #[serde(rename = "failure")] - pub failure: Option<()>, - #[serde(rename = "kind")] - pub kind: ChangePlanResponse200ApplicationJsonVariant0kind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option, - #[serde(rename = "result")] - pub result: ChangePlanResponse200ApplicationJsonVariant0result, - ///Terminal. The result is authoritative. - #[serde( - rename = "status", - deserialize_with = "const_succeeded_de", - serialize_with = "const_succeeded_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, - } - impl<'de> serde::Deserialize<'de> for ChangePlanResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", - "status", - "submittedAt", - ], - )?; - ChangePlanResponse200ApplicationJsonVariant0::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse200ApplicationJsonVariant0::deserialize(deserializer) - } - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse200ApplicationJsonVariant0::serialize(self, serializer) - } - } - ///Stable provider-neutral failure category. - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ChangePlanResponse200ApplicationJsonVariant1failurecode { - ///`payment_method_required` - PaymentMethodRequired, - ///`payment_failed` - PaymentFailed, - ///`not_provisioned` - NotProvisioned, - ///`invalid_target` - InvalidTarget, - ///`internal` - Internal, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ChangePlanResponse200ApplicationJsonVariant1failurecode { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::PaymentMethodRequired => "payment_method_required", - Self::PaymentFailed => "payment_failed", - Self::NotProvisioned => "not_provisioned", - Self::InvalidTarget => "invalid_target", - Self::Internal => "internal", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display for ChangePlanResponse200ApplicationJsonVariant1failurecode { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant1failurecode { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse200ApplicationJsonVariant1failurecode { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "payment_method_required" => Ok(Self::PaymentMethodRequired), - "payment_failed" => Ok(Self::PaymentFailed), - "not_provisioned" => Ok(Self::NotProvisioned), - "invalid_target" => Ok(Self::InvalidTarget), - "internal" => Ok(Self::Internal), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `payment_method_required`, `payment_failed`, `not_provisioned`, `invalid_target`, `internal`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ChangePlanResponse200ApplicationJsonVariant1failuredetail { - ///`cancellation_scheduled` - CancellationScheduled, - ///`feature_not_sold_by_plan` - FeatureNotSoldByPlan, - ///`feature_not_found` - FeatureNotFound, - ///`payment_timeout` - PaymentTimeout, - ///`plan_activation_timeout` - PlanActivationTimeout, - ///`plan_not_found` - PlanNotFound, - ///`quantity_out_of_range` - QuantityOutOfRange, - ///`target_rejected` - TargetRejected, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ChangePlanResponse200ApplicationJsonVariant1failuredetail { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::CancellationScheduled => "cancellation_scheduled", - Self::FeatureNotSoldByPlan => "feature_not_sold_by_plan", - Self::FeatureNotFound => "feature_not_found", - Self::PaymentTimeout => "payment_timeout", - Self::PlanActivationTimeout => "plan_activation_timeout", - Self::PlanNotFound => "plan_not_found", - Self::QuantityOutOfRange => "quantity_out_of_range", - Self::TargetRejected => "target_rejected", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ChangePlanResponse200ApplicationJsonVariant1failuredetail { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant1failuredetail { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse200ApplicationJsonVariant1failuredetail { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "cancellation_scheduled" => Ok(Self::CancellationScheduled), - "feature_not_sold_by_plan" => Ok(Self::FeatureNotSoldByPlan), - "feature_not_found" => Ok(Self::FeatureNotFound), - "payment_timeout" => Ok(Self::PaymentTimeout), - "plan_activation_timeout" => Ok(Self::PlanActivationTimeout), - "plan_not_found" => Ok(Self::PlanNotFound), - "quantity_out_of_range" => Ok(Self::QuantityOutOfRange), - "target_rejected" => Ok(Self::TargetRejected), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `cancellation_scheduled`, `feature_not_sold_by_plan`, `feature_not_found`, `payment_timeout`, `plan_activation_timeout`, `plan_not_found`, `quantity_out_of_range`, `target_rejected`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse200ApplicationJsonVariant1failure { - #[serde(rename = "code")] - pub code: ChangePlanResponse200ApplicationJsonVariant1failurecode, - #[serde(rename = "detail")] - pub detail: Option, - #[serde(rename = "retryable")] - pub retryable: bool, - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse200ApplicationJsonVariant1failure { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "detail", "retryable"])?; - ChangePlanResponse200ApplicationJsonVariant1failure::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse200ApplicationJsonVariant1failure::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant1failure { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse200ApplicationJsonVariant1failure::serialize( - self, - serializer, - ) - } - } - pub use self::ChangePlanResponse200ApplicationJsonVariant0kind as ChangePlanResponse200ApplicationJsonVariant1kind; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse200ApplicationJsonVariant1 { - #[serde(rename = "failure")] - pub failure: ChangePlanResponse200ApplicationJsonVariant1failure, - #[serde(rename = "kind")] - pub kind: ChangePlanResponse200ApplicationJsonVariant1kind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option, - #[serde(rename = "result")] - pub result: Option<()>, - ///Terminal. Failure contains a stable code and retryability. - #[serde( - rename = "status", - deserialize_with = "const_failed_de", - serialize_with = "const_failed_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, - } - impl<'de> serde::Deserialize<'de> for ChangePlanResponse200ApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", - "status", - "submittedAt", - ], - )?; - ChangePlanResponse200ApplicationJsonVariant1::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse200ApplicationJsonVariant1::deserialize(deserializer) - } - } - } - impl serde::Serialize for ChangePlanResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse200ApplicationJsonVariant1::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse202ApplicationJson { - #[serde(rename = "failure")] - pub failure: Option<()>, - #[serde(rename = "kind")] - pub kind: ChangePlanResponse202ApplicationJsonkind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option<()>, - #[serde(rename = "result")] - pub result: Option<()>, - ///Accepted and still executing. Poll the operation route. - #[serde( - rename = "status", - deserialize_with = "const_pending_de", - serialize_with = "const_pending_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, - } - impl<'de> serde::Deserialize<'de> for ChangePlanResponse202ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", - "status", - "submittedAt", - ], - )?; - ChangePlanResponse202ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse202ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ChangePlanResponse202ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse202ApplicationJson::serialize(self, serializer) - } - } - pub use self::ChangePlanResponse200ApplicationJsonVariant0kind as ChangePlanResponse202ApplicationJsonkind; #[derive(Debug, Clone)] - pub enum ChangePlanResponse400ApplicationProblemPlusJson { - ChangePlanResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ChangePlanResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - ChangePlanResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConfigureVoiceProfileOutboundBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for ChangePlanResponse400ApplicationProblemPlusJson { + for ConfigureVoiceProfileOutboundBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse400ApplicationProblemPlusJson), + ((usize, u32), ConfigureVoiceProfileOutboundBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) == Some("IDEMPOTENCY_KEY_REQUIRED") @@ -32683,18 +37316,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32715,7 +37346,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -32732,18 +37363,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32764,7 +37393,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant2( + ConfigureVoiceProfileOutboundBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -32783,23 +37412,15 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) @@ -32820,67 +37441,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundBadRequestProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse400ApplicationProblemPlusJson::ChangePlanResponse400ApplicationProblemPlusJsonVariant2( + ConfigureVoiceProfileOutboundBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32889,18 +37485,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32920,61 +37514,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ChangePlanResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ChangePlanResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ChangePlanResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ChangePlanResponse403ApplicationProblemPlusJson { - ChangePlanResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ChangePlanResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConfigureVoiceProfileOutboundConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), + VoiceOutboundConfiguredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConfigureVoiceProfileOutboundConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse403ApplicationProblemPlusJson), + ((usize, u32), ConfigureVoiceProfileOutboundConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -32995,7 +37580,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse403ApplicationProblemPlusJson::ChangePlanResponse403ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundConflictProblem::ProjectClosingProblem( inner, ), )); @@ -33003,27 +37588,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33036,7 +37619,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -33044,7 +37627,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConfigureVoiceProfileOutboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -33052,27 +37635,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConfigureVoiceProfileOutboundConflictProblem::VoiceOutboundOperationPendingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_CONFIGURED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Already Configured") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-configured", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33093,7 +37721,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse403ApplicationProblemPlusJson::ChangePlanResponse403ApplicationProblemPlusJsonVariant2( + ConfigureVoiceProfileOutboundConflictProblem::VoiceOutboundConfiguredProblem( inner, ), )); @@ -33111,29 +37739,44 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_CONFIGURED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Already Configured") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-configured", + ) { (match_count, selected) = select(true); } @@ -33144,47 +37787,64 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundConflictProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse403ApplicationProblemPlusJson::ChangePlanResponse403ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConfigureVoiceProfileOutboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConfigureVoiceProfileOutboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse403ApplicationProblemPlusJson::ChangePlanResponse403ApplicationProblemPlusJsonVariant2( + ConfigureVoiceProfileOutboundConflictProblem::VoiceOutboundConfiguredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33193,16 +37853,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33211,18 +37871,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33231,70 +37889,229 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ChangePlanResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ChangePlanResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone)] - pub enum ChangePlanResponse409ApplicationProblemPlusJson { - ChangePlanResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ChangePlanResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ChangePlanResponse409ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundConflictProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceOutboundOperationPendingProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_outbound_operation_pending_de", + serialize_with = "const_voice_outbound_operation_pending_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_outbound_operation_pending_9569571e_de", + serialize_with = "const_voice_outbound_operation_pending_9569571e_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_operation_pending_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_operation_pending_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceOutboundConfiguredProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_outbound_configured_de", + serialize_with = "const_voice_outbound_configured_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_outbound_already_configured_de", + serialize_with = "const_voice_outbound_already_configured_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_configured_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_configured_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone)] + pub enum ConfigureVoiceProfileOutboundForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ConfigureVoiceProfileOutboundForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConfigureVoiceProfileOutboundForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConfigureVoiceProfileOutboundForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConfigureVoiceProfileOutboundForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/failed-precondition", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33315,7 +38132,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse409ApplicationProblemPlusJson::ChangePlanResponse409ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -33323,27 +38140,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33364,7 +38179,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse409ApplicationProblemPlusJson::ChangePlanResponse409ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -33382,24 +38197,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/failed-precondition") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -33410,44 +38240,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundForbiddenProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse409ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse409ApplicationProblemPlusJson::ChangePlanResponse409ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConfigureVoiceProfileOutboundForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse409ApplicationProblemPlusJson::ChangePlanResponse409ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConfigureVoiceProfileOutboundForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33456,18 +38305,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33476,6 +38323,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -33487,136 +38350,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundForbiddenProblem", ), ) } } } - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as ChangePlanResponse409ApplicationProblemPlusJsonVariant0; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1 as ChangePlanResponse409ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ChangePlanResponse413ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_payload_too_large_de", - serialize_with = "const_payload_too_large_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_payload_too_large_f6476e55_de", - serialize_with = "const_payload_too_large_f6476e55_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_payload_too_large_de", - serialize_with = "const_https_photon_codes_docs_problems_payload_too_large_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse413ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ChangePlanResponse413ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ChangePlanResponse413ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ChangePlanResponse413ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ChangePlanResponse413ApplicationProblemPlusJson::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum ChangePlanResponse422ApplicationProblemPlusJson { - ChangePlanResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ChangePlanResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConfigureVoiceProfileOutboundGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ChangePlanResponse422ApplicationProblemPlusJson { + for ConfigureVoiceProfileOutboundGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse422ApplicationProblemPlusJson), + ((usize, u32), ConfigureVoiceProfileOutboundGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33629,7 +38407,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -33637,7 +38415,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse422ApplicationProblemPlusJson::ChangePlanResponse422ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -33645,27 +38423,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33686,7 +38462,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse422ApplicationProblemPlusJson::ChangePlanResponse422ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -33705,23 +38481,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -33732,45 +38506,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse422ApplicationProblemPlusJson::ChangePlanResponse422ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse422ApplicationProblemPlusJson::ChangePlanResponse422ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -33778,19 +38548,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -33809,32 +38575,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ChangePlanResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ChangePlanResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ChangePlanResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ChangePlanResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ChangePlanResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ChangePlanResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConfigureVoiceProfileOutboundInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ChangePlanResponse500ApplicationProblemPlusJson { + for ConfigureVoiceProfileOutboundInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse500ApplicationProblemPlusJson), + ((usize, u32), ConfigureVoiceProfileOutboundInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -33848,16 +38608,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33870,7 +38630,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -33878,7 +38638,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ConfigureVoiceProfileOutboundInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -33895,18 +38655,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -33927,7 +38685,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse500ApplicationProblemPlusJson::ChangePlanResponse500ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -33973,43 +38731,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ConfigureVoiceProfileOutboundInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse500ApplicationProblemPlusJson::ChangePlanResponse500ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -34017,18 +38773,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34048,52 +38802,215 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ChangePlanResponse500ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ChangePlanResponse502ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_upstream_failure_de", - serialize_with = "const_upstream_failure_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, + pub struct ConfigureVoiceProfileOutboundRequest { + #[serde(rename = "authentication")] + pub authentication: SipOutboundAuthenticationPolicy, #[serde( - rename = "title", - deserialize_with = "const_upstream_service_failure_de", - serialize_with = "const_upstream_service_failure_ser", + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub title: String, + pub expected_version: i64, + } + impl<'de> serde::Deserialize<'de> for ConfigureVoiceProfileOutboundRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["authentication", "expectedVersion"])?; + ConfigureVoiceProfileOutboundRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ConfigureVoiceProfileOutboundRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ConfigureVoiceProfileOutboundRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ConfigureVoiceProfileOutboundRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipOutboundAuthenticationPolicy { + #[serde(rename = "algorithm")] + pub algorithm: SipAuthenticationAlgorithm, + } + impl<'de> serde::Deserialize<'de> for SipOutboundAuthenticationPolicy { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["algorithm"])?; + SipOutboundAuthenticationPolicy::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipOutboundAuthenticationPolicy::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipOutboundAuthenticationPolicy { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipOutboundAuthenticationPolicy::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SipAuthenticationAlgorithm { + ///`sha-256` + Sha256, + ///`md5` + Md5, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl SipAuthenticationAlgorithm { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Sha256 => "sha-256", + Self::Md5 => "md5", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for SipAuthenticationAlgorithm { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SipAuthenticationAlgorithm { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SipAuthenticationAlgorithm { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "sha-256" => Ok(Self::Sha256), + "md5" => Ok(Self::Md5), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `sha-256`, `md5`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ConfigureVoiceProfileOutboundResponse { + #[serde(rename = "outbound")] + pub outbound: SipOutboundConfiguration, + #[serde(rename = "password")] + pub password: Option, #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_failure_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_failure_ser", + rename = "profileVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub r#type: String, + pub profile_version: i64, } - impl<'de> serde::Deserialize<'de> - for ChangePlanResponse502ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConfigureVoiceProfileOutboundResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["outbound", "password", "profileVersion"])?; + ConfigureVoiceProfileOutboundResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ConfigureVoiceProfileOutboundResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ConfigureVoiceProfileOutboundResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ConfigureVoiceProfileOutboundResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipOutboundConfiguration { + #[serde(rename = "authentication")] + pub authentication: SipOutboundAuthentication, + #[serde(rename = "connection")] + pub connection: SipOutboundConnection, + } + impl<'de> serde::Deserialize<'de> for SipOutboundConfiguration { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["authentication", "connection"])?; + SipOutboundConfiguration::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipOutboundConfiguration::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipOutboundConfiguration { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipOutboundConfiguration::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipOutboundAuthentication { + #[serde(rename = "algorithm")] + pub algorithm: SipAuthenticationAlgorithm, + #[serde(rename = "previousPasswordValidUntil")] + pub previous_password_valid_until: Option, + #[serde(rename = "username")] + pub username: String, + #[serde(rename = "validFrom")] + pub valid_from: DateTime, + } + impl<'de> serde::Deserialize<'de> for SipOutboundAuthentication { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -34104,79 +39021,187 @@ pub mod types { D::Error, >( &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], + &["algorithm", "previousPasswordValidUntil", "username", "validFrom"], )?; - ChangePlanResponse502ApplicationProblemPlusJson::deserialize(value) + SipOutboundAuthentication::deserialize(value) .map_err(serde::de::Error::custom) } else { - ChangePlanResponse502ApplicationProblemPlusJson::deserialize( - deserializer, - ) + SipOutboundAuthentication::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipOutboundAuthentication { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipOutboundAuthentication::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipOutboundConnection { + #[serde(rename = "endpoints")] + pub endpoints: Vec, + #[serde(rename = "realm")] + pub realm: String, + } + impl<'de> serde::Deserialize<'de> for SipOutboundConnection { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["endpoints", "realm"])?; + SipOutboundConnection::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipOutboundConnection::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipOutboundConnection { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipOutboundConnection::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipEndpoint { + #[serde(rename = "host")] + pub host: String, + #[serde(rename = "port", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub port: i64, + #[serde(rename = "transport")] + pub transport: SipTransport, + } + impl<'de> serde::Deserialize<'de> for SipEndpoint { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["host", "port", "transport"])?; + SipEndpoint::deserialize(value).map_err(serde::de::Error::custom) + } else { + SipEndpoint::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipEndpoint { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipEndpoint::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SipTransport { + ///`udp` + Udp, + ///`tcp` + Tcp, + ///`tls` + Tls, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl SipTransport { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Udp => "udp", + Self::Tcp => "tcp", + Self::Tls => "tls", + Self::Unknown(value) => value, } } } - impl serde::Serialize for ChangePlanResponse502ApplicationProblemPlusJson { + impl std::fmt::Display for SipTransport { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SipTransport { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ChangePlanResponse502ApplicationProblemPlusJson::serialize(self, serializer) + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SipTransport { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "udp" => Ok(Self::Udp), + "tcp" => Ok(Self::Tcp), + "tls" => Ok(Self::Tls), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `udp`, `tcp`, `tls`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } } } #[derive(Debug, Clone)] - pub enum ChangePlanResponse503ApplicationProblemPlusJson { - ChangePlanResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - ChangePlanResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConfigureVoiceProfileOutboundUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ChangePlanResponse503ApplicationProblemPlusJson { + for ConfigureVoiceProfileOutboundUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse503ApplicationProblemPlusJson), + ((usize, u32), ConfigureVoiceProfileOutboundUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-unavailable", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34189,7 +39214,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -34197,7 +39222,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse503ApplicationProblemPlusJson::ChangePlanResponse503ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -34205,27 +39230,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34246,7 +39269,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse503ApplicationProblemPlusJson::ChangePlanResponse503ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -34265,22 +39288,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-unavailable") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -34292,45 +39315,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse503ApplicationProblemPlusJson { + impl serde::Serialize for ConfigureVoiceProfileOutboundUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse503ApplicationProblemPlusJson::ChangePlanResponse503ApplicationProblemPlusJsonVariant0( + ConfigureVoiceProfileOutboundUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse503ApplicationProblemPlusJson::ChangePlanResponse503ApplicationProblemPlusJsonVariant1( + ConfigureVoiceProfileOutboundUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -34338,18 +39357,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34369,59 +39386,96 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundUnprocessableEntityProblem", ), ) } } } - pub use self::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0 as ChangePlanResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ChangePlanResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ChangePlanResponse504ApplicationProblemPlusJson { - ChangePlanResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ChangePlanResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConfirmAccountPhoneVerificationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ChangePlanResponse504ApplicationProblemPlusJson { + for ConfirmAccountPhoneVerificationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ChangePlanResponse504ApplicationProblemPlusJson), + ((usize, u32), ConfirmAccountPhoneVerificationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConfirmAccountPhoneVerificationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34442,7 +39496,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse504ApplicationProblemPlusJson::ChangePlanResponse504ApplicationProblemPlusJsonVariant0( + ConfirmAccountPhoneVerificationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -34450,27 +39504,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConfirmAccountPhoneVerificationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34491,7 +39590,7 @@ pub mod types { if replace { selected = Some(( rank, - ChangePlanResponse504ApplicationProblemPlusJson::ChangePlanResponse504ApplicationProblemPlusJsonVariant1( + ConfirmAccountPhoneVerificationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -34509,22 +39608,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -34535,44 +39651,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ChangePlanResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationForbiddenProblem", ), ) } } } - impl serde::Serialize for ChangePlanResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ConfirmAccountPhoneVerificationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ChangePlanResponse504ApplicationProblemPlusJson::ChangePlanResponse504ApplicationProblemPlusJsonVariant0( + ConfirmAccountPhoneVerificationForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConfirmAccountPhoneVerificationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ChangePlanResponse504ApplicationProblemPlusJson::ChangePlanResponse504ApplicationProblemPlusJsonVariant1( + ConfirmAccountPhoneVerificationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConfirmAccountPhoneVerificationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34581,18 +39716,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -34601,6 +39734,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -34612,57 +39761,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ChangePlanResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ChangePlanResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ChangePlanResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CheckProjectSlugAvailabilityResponse200ApplicationJson { - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0( - Box, - ), - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1( - Box, - ), + pub enum ConfirmAccountPhoneVerificationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse200ApplicationJson { + for ConfirmAccountPhoneVerificationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CheckProjectSlugAvailabilityResponse200ApplicationJson), + ((usize, u32), ConfirmAccountPhoneVerificationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("available").and_then(serde_json::Value::as_bool) - == Some(true)) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0, - >, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -34675,7 +39818,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -34683,33 +39826,33 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse200ApplicationJson::CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0( + ConfirmAccountPhoneVerificationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("available").and_then(serde_json::Value::as_bool) - == Some(false)) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1, - >, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -34722,7 +39865,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1064u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -34730,7 +39873,7 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse200ApplicationJson::CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1( + ConfirmAccountPhoneVerificationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -34748,9 +39891,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("available").and_then(serde_json::Value::as_bool) == Some(true) - || value.get("available").and_then(serde_json::Value::as_bool) - == Some(false) + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -34761,49 +39917,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse200ApplicationJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse200ApplicationJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for CheckProjectSlugAvailabilityResponse200ApplicationJson { + impl serde::Serialize for ConfirmAccountPhoneVerificationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CheckProjectSlugAvailabilityResponse200ApplicationJson::CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0( + ConfirmAccountPhoneVerificationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CheckProjectSlugAvailabilityResponse200ApplicationJson::CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1( + ConfirmAccountPhoneVerificationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -34811,23 +39959,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -34846,274 +39986,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationGatewayTimeoutProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0 { - #[serde(rename = "available")] - pub available: bool, - #[serde(rename = "slug")] - pub slug: String, - } - impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["available", "slug"])?; - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason { - ///`reserved` - Reserved, - ///`retired` - Retired, - ///`taken` - Taken, - ///`too_short` - TooShort, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Reserved => "reserved", - Self::Retired => "retired", - Self::Taken => "taken", - Self::TooShort => "too_short", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "reserved" => Ok(Self::Reserved), - "retired" => Ok(Self::Retired), - "taken" => Ok(Self::Taken), - "too_short" => Ok(Self::TooShort), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `reserved`, `retired`, `taken`, `too_short`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1 { - #[serde(rename = "available")] - pub available: bool, - #[serde(rename = "reason")] - pub reason: CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1reason, - #[serde(rename = "slug")] - pub slug: String, - #[serde(rename = "suggestion", default, skip_serializing_if = "Option::is_none")] - pub suggestion: Option, - } - impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["available", "reason", "slug", "suggestion"])?; - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CheckProjectSlugAvailabilityResponse200ApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson { - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0( - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2( - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ConfirmAccountPhoneVerificationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson { + for ConfirmAccountPhoneVerificationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ConfirmAccountPhoneVerificationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -35126,7 +40041,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -35134,7 +40049,7 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConfirmAccountPhoneVerificationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -35142,33 +40057,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -35189,7 +40096,7 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2( + ConfirmAccountPhoneVerificationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -35207,29 +40114,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -35240,73 +40142,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ConfirmAccountPhoneVerificationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0( + ConfirmAccountPhoneVerificationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2( + ConfirmAccountPhoneVerificationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -35314,24 +40184,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -35351,77 +40213,81 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ConfirmAccountPhoneVerificationRequest { + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "phoneNumber")] + pub phone_number: String, + } + impl<'de> serde::Deserialize<'de> for ConfirmAccountPhoneVerificationRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["code", "phoneNumber"])?; + ConfirmAccountPhoneVerificationRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ConfirmAccountPhoneVerificationRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ConfirmAccountPhoneVerificationRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ConfirmAccountPhoneVerificationRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson { - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0( - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1( - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ConnectEmailDomainBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectEmailDomainBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -35442,7 +40308,7 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -35450,33 +40316,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -35497,7 +40355,7 @@ pub mod types { if replace { selected = Some(( rank, - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -35516,21 +40374,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -35541,51 +40403,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainBadRequestProblem", ), ) } } } - impl serde::Serialize - for CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson::CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -35594,24 +40447,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -35631,169 +40476,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectEmailDomainBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ClickHouseSqlQueryRequest { - #[serde( - rename = "parameters", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub parameters: Option>, - #[serde(rename = "sql")] - pub sql: String, - } - impl<'de> serde::Deserialize<'de> for ClickHouseSqlQueryRequest { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["parameters", "sql"])?; - ClickHouseSqlQueryRequest::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ClickHouseSqlQueryRequest::deserialize(deserializer) - } - } - } - impl serde::Serialize for ClickHouseSqlQueryRequest { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ClickHouseSqlQueryRequest::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAccountProfilePictureRequestApplicationJson { - #[serde(rename = "uploadId")] - pub upload_id: String, - } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["uploadId"])?; - CommitAccountProfilePictureRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CommitAccountProfilePictureRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CommitAccountProfilePictureRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CommitAccountProfilePictureRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct CommitAccountProfilePictureResponse200ApplicationJson { - #[serde(rename = "accountId")] - pub account_id: String, - #[serde(rename = "createdAt")] - pub created_at: Option, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "email")] - pub email: String, - #[serde(rename = "firstName")] - pub first_name: Option, - #[serde(rename = "lastName")] - pub last_name: Option, - #[serde(rename = "phoneNumber")] - pub phone_number: Option, - #[serde(rename = "phoneVerifiedAt")] - pub phone_verified_at: Option, - #[serde(rename = "pictureUrl")] - pub picture_url: String, - #[serde(rename = "updatedAt")] - pub updated_at: Option, - #[serde(flatten)] - pub additional: BTreeMap, - } #[derive(Debug, Clone)] - pub enum CommitAccountProfilePictureResponse400ApplicationProblemPlusJson { - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConnectEmailDomainConflictProblem { + ProjectClosingProblem(Box), + EmailDomainAlreadyConnectedProblem(Box), + EmailDomainCapExceededProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectEmailDomainConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -35814,7 +40539,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainConflictProblem::ProjectClosingProblem( inner, ), )); @@ -35822,33 +40547,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("EMAIL_DOMAIN_ALREADY_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Email Domain Already Connected") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/email-domain-already-connected", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -35869,7 +40586,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainConflictProblem::EmailDomainAlreadyConnectedProblem( inner, ), )); @@ -35877,33 +40594,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("EMAIL_DOMAIN_CAP_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Email Domain Cap Exceeded") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/email-domain-cap-exceeded", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -35924,7 +40633,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( + ConnectEmailDomainConflictProblem::EmailDomainCapExceededProblem( inner, ), )); @@ -35943,32 +40652,32 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("EMAIL_DOMAIN_ALREADY_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Email Domain Already Connected") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/email-domain-already-connected", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("EMAIL_DOMAIN_CAP_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Email Domain Cap Exceeded") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/email-domain-cap-exceeded", ) { (match_count, selected) = select(true); @@ -35980,55 +40689,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainConflictProblem", ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectEmailDomainConflictProblem::EmailDomainAlreadyConnectedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse400ApplicationProblemPlusJson::CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( + ConnectEmailDomainConflictProblem::EmailDomainCapExceededProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -36036,24 +40734,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -36062,24 +40752,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -36099,40 +40781,102 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAccountProfilePictureResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectEmailDomainConflictProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct EmailDomainAlreadyConnectedProblem { + #[serde( + rename = "code", + deserialize_with = "const_email_domain_already_connected_de", + serialize_with = "const_email_domain_already_connected_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_email_domain_already_connected_8e7e6bb5_de", + serialize_with = "const_email_domain_already_connected_8e7e6bb5_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_email_domain_already_connected_de", + serialize_with = "const_https_photon_codes_docs_problems_email_domain_already_connected_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct EmailDomainCapExceededProblem { + #[serde( + rename = "code", + deserialize_with = "const_email_domain_cap_exceeded_de", + serialize_with = "const_email_domain_cap_exceeded_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_email_domain_cap_exceeded_49876a03_de", + serialize_with = "const_email_domain_cap_exceeded_49876a03_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_email_domain_cap_exceeded_de", + serialize_with = "const_https_photon_codes_docs_problems_email_domain_cap_exceeded_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CommitAccountProfilePictureResponse403ApplicationProblemPlusJson { - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConnectEmailDomainForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectEmailDomainForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -36145,24 +40889,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectEmailDomainForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -36183,7 +40962,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -36191,27 +40970,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -36224,7 +41001,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -36232,7 +41009,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConnectEmailDomainForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -36249,24 +41026,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -36287,7 +41056,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( + ConnectEmailDomainForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -36320,6 +41089,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -36338,54 +41117,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainForbiddenProblem", ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse403ApplicationProblemPlusJson::CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( + ConnectEmailDomainForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectEmailDomainForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectEmailDomainForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConnectEmailDomainForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -36394,16 +41182,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -36412,25 +41200,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -36449,317 +41227,529 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAccountProfilePictureResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectEmailDomainForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAccountProfilePictureResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_not_found_de", - serialize_with = "const_account_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_not_found_db03c960_de", - serialize_with = "const_account_not_found_db03c960_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_account_not_found_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum ConnectEmailDomainGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CommitAccountProfilePictureResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConnectEmailDomainGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectEmailDomainGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectEmailDomainGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectEmailDomainGatewayTimeoutProblem", + )) } else { - CommitAccountProfilePictureResponse404ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectEmailDomainGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse404ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CommitAccountProfilePictureResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + let value = match self { + ConnectEmailDomainGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectEmailDomainGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConnectEmailDomainGatewayTimeoutProblem", + ), + ) + } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAccountProfilePictureResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_deleted_de", - serialize_with = "const_account_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_deleted_7029ef3c_de", - serialize_with = "const_account_deleted_7029ef3c_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_account_deleted_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum ConnectEmailDomainInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse410ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CommitAccountProfilePictureResponse410ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConnectEmailDomainInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectEmailDomainInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectEmailDomainInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectEmailDomainInternalServerErrorProblem", + )) } else { - CommitAccountProfilePictureResponse410ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectEmailDomainInternalServerErrorProblem", + ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse410ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CommitAccountProfilePictureResponse410ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + let value = match self { + ConnectEmailDomainInternalServerErrorProblem::InternalErrorProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConnectEmailDomainInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConnectEmailDomainInternalServerErrorProblem", + ), + ) + } } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CommitAccountProfilePictureResponse413ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_payload_too_large_de", - serialize_with = "const_payload_too_large_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_payload_too_large_f6476e55_de", - serialize_with = "const_payload_too_large_f6476e55_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_payload_too_large_de", - serialize_with = "const_https_photon_codes_docs_problems_payload_too_large_ser", - )] - pub r#type: String, + pub struct ConnectEmailDomainRequest { + #[serde(rename = "domain")] + pub domain: String, } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse413ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CommitAccountProfilePictureResponse413ApplicationProblemPlusJson::deserialize( - value, - ) + super::support::check_known_members::(&value, &["domain"])?; + ConnectEmailDomainRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - CommitAccountProfilePictureResponse413ApplicationProblemPlusJson::deserialize( - deserializer, - ) + ConnectEmailDomainRequest::deserialize(deserializer) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse413ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CommitAccountProfilePictureResponse413ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + ConnectEmailDomainRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum CommitAccountProfilePictureResponse422ApplicationProblemPlusJson { - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConnectEmailDomainServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectEmailDomainServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -36780,7 +41770,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson::CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -36788,33 +41778,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -36827,7 +41809,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -36835,7 +41817,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson::CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -36854,21 +41836,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-reused") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -36879,51 +41863,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson::CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( + ConnectEmailDomainServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse422ApplicationProblemPlusJson::CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -36932,24 +41907,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -36969,58 +41936,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAccountProfilePictureResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectEmailDomainServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CommitAccountProfilePictureResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConnectEmailDomainUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectEmailDomainUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CommitAccountProfilePictureResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectEmailDomainUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -37033,7 +41992,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -37041,7 +42000,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ConnectEmailDomainUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -37049,33 +42008,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -37096,7 +42047,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse500ApplicationProblemPlusJson::CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -37115,22 +42066,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -37142,44 +42093,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectEmailDomainUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ConnectEmailDomainUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAccountProfilePictureResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ConnectEmailDomainUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse500ApplicationProblemPlusJson::CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( + ConnectEmailDomainUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -37187,24 +42135,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -37224,69 +42164,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAccountProfilePictureResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectEmailDomainUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CommitAccountProfilePictureResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CommitAccountProfilePictureResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CommitAccountProfilePictureResponse504ApplicationProblemPlusJson { - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConnectTelegramBotBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAccountProfilePictureResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectTelegramBotBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -37307,7 +42226,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson::CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -37315,33 +42234,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -37362,7 +42273,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson::CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -37381,21 +42292,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -37406,51 +42321,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAccountProfilePictureResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotBadRequestProblem", ), ) } } } - impl serde::Serialize - for CommitAccountProfilePictureResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson::CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAccountProfilePictureResponse504ApplicationProblemPlusJson::CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -37459,24 +42365,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -37496,142 +42394,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAccountProfilePictureResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectTelegramBotBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAgentProfileAvatarRequestApplicationJson { - #[serde(rename = "uploadId")] - pub upload_id: String, - } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["uploadId"])?; - CommitAgentProfileAvatarRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CommitAgentProfileAvatarRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CommitAgentProfileAvatarRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CommitAgentProfileAvatarRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAgentProfileAvatarResponse200ApplicationJson { - #[serde(rename = "avatarUrl")] - pub avatar_url: String, - #[serde(rename = "firstName")] - pub first_name: String, - #[serde(rename = "lastName")] - pub last_name: Option, - } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["avatarUrl", "firstName", "lastName"])?; - CommitAgentProfileAvatarResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CommitAgentProfileAvatarResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CommitAgentProfileAvatarResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CommitAgentProfileAvatarResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson { - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConnectTelegramBotConflictProblem { + TelegramProjectDeletedProblem(Box), + ProjectClosingProblem(Box), + TelegramProvisionInProgressProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectTelegramBotConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("TELEGRAM_PROJECT_DELETED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Telegram Project Deleted") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/telegram-project-deleted", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -37652,7 +42457,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotConflictProblem::TelegramProjectDeletedProblem( inner, ), )); @@ -37660,33 +42465,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -37707,7 +42504,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotConflictProblem::ProjectClosingProblem( inner, ), )); @@ -37715,33 +42512,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("TELEGRAM_PROVISION_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Telegram Provision In Progress") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/telegram-provision-in-progress", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -37754,7 +42543,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1130u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -37762,7 +42551,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2( + ConnectTelegramBotConflictProblem::TelegramProvisionInProgressProblem( inner, ), )); @@ -37781,33 +42570,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("TELEGRAM_PROJECT_DELETED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Telegram Project Deleted") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/telegram-project-deleted", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("TELEGRAM_PROVISION_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Telegram Provision In Progress") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/telegram-provision-in-progress", + ) { (match_count, selected) = select(true); } @@ -37818,54 +42607,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotConflictProblem", ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotConflictProblem::TelegramProjectDeletedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2( + ConnectTelegramBotConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectTelegramBotConflictProblem::TelegramProvisionInProgressProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -37874,25 +42654,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -37900,24 +42670,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -37937,40 +42699,106 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectTelegramBotConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant1; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct TelegramProjectDeletedProblem { + #[serde( + rename = "code", + deserialize_with = "const_telegram_project_deleted_de", + serialize_with = "const_telegram_project_deleted_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_telegram_project_deleted_41f853ad_de", + serialize_with = "const_telegram_project_deleted_41f853ad_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_telegram_project_deleted_de", + serialize_with = "const_https_photon_codes_docs_problems_telegram_project_deleted_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct TelegramProvisionInProgressProblem { + #[serde( + rename = "code", + deserialize_with = "const_telegram_provision_in_progress_de", + serialize_with = "const_telegram_provision_in_progress_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "operationUrl")] + pub operation_url: String, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_telegram_provision_in_progress_065088cc_de", + serialize_with = "const_telegram_provision_in_progress_065088cc_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_telegram_provision_in_progress_de", + serialize_with = "const_https_photon_codes_docs_problems_telegram_provision_in_progress_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson { - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ConnectTelegramBotForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ConnectTelegramBotForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -37983,24 +42811,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectTelegramBotForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -38021,7 +42884,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -38029,27 +42892,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -38062,7 +42923,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -38070,7 +42931,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConnectTelegramBotForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -38087,24 +42948,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -38125,7 +42978,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( + ConnectTelegramBotForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -38158,6 +43011,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -38176,54 +43039,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotForbiddenProblem", ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( + ConnectTelegramBotForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectTelegramBotForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectTelegramBotForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConnectTelegramBotForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -38232,16 +43104,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -38250,25 +43122,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -38287,235 +43149,272 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectTelegramBotForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_not_found_de", - serialize_with = "const_project_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_not_found_fc31bf52_de", - serialize_with = "const_project_not_found_fc31bf52_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_project_not_found_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum ConnectTelegramBotGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConnectTelegramBotGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectTelegramBotGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectTelegramBotGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectTelegramBotGatewayTimeoutProblem", + )) } else { - CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectTelegramBotGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_deleted_de", - serialize_with = "const_project_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_deleted_07a3e332_de", - serialize_with = "const_project_deleted_07a3e332_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_project_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = match self { + ConnectTelegramBotGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectTelegramBotGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) } else { - CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson::deserialize( - deserializer, + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConnectTelegramBotGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson { - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConnectTelegramBotInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectTelegramBotInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -38528,7 +43427,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -38536,7 +43435,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -38544,33 +43443,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -38591,7 +43482,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -38610,22 +43501,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -38637,52 +43528,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -38690,24 +43570,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -38727,72 +43599,76 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectTelegramBotInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ConnectTelegramBotRequest {} + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &[])?; + ConnectTelegramBotRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ConnectTelegramBotRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ConnectTelegramBotRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ConnectTelegramBotRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson { - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ConnectTelegramBotUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectTelegramBotUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectTelegramBotUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -38805,7 +43681,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -38813,7 +43689,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -38821,33 +43697,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -38868,7 +43736,7 @@ pub mod types { if replace { selected = Some(( rank, - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -38887,21 +43755,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -38912,52 +43782,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectTelegramBotUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ConnectTelegramBotUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( + ConnectTelegramBotUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson::CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( + ConnectTelegramBotUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -38965,24 +43824,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -39002,492 +43853,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectTelegramBotUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundRequestApplicationJson { - #[serde(rename = "authentication")] - pub authentication: ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication, - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["authentication", "expectedVersion"])?; - ConfigureVoiceProfileOutboundRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ConfigureVoiceProfileOutboundRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum ConfigureVoiceProfileOutboundRequestApplicationJsonauthenticationalgorithm { - #[serde(rename = "sha-256")] - Sha256, - #[serde(rename = "md5")] - Md5, - } - impl std::fmt::Display - for ConfigureVoiceProfileOutboundRequestApplicationJsonauthenticationalgorithm { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - ConfigureVoiceProfileOutboundRequestApplicationJsonauthenticationalgorithm::Sha256 => { - "sha-256" - } - ConfigureVoiceProfileOutboundRequestApplicationJsonauthenticationalgorithm::Md5 => { - "md5" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication { - #[serde(rename = "algorithm")] - pub algorithm: ConfigureVoiceProfileOutboundRequestApplicationJsonauthenticationalgorithm, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["algorithm"])?; - ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundRequestApplicationJsonauthentication::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse200ApplicationJson { - #[serde(rename = "outbound")] - pub outbound: ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound, - #[serde(rename = "password")] - pub password: Option, - #[serde( - rename = "profileVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub profile_version: i64, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["outbound", "password", "profileVersion"])?; - ConfigureVoiceProfileOutboundResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ConfigureVoiceProfileOutboundResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm { - ///`sha-256` - Sha256, - ///`md5` - Md5, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Sha256 => "sha-256", - Self::Md5 => "md5", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "sha-256" => Ok(Self::Sha256), - "md5" => Ok(Self::Md5), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `sha-256`, `md5`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication { - #[serde(rename = "algorithm")] - pub algorithm: ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm, - #[serde(rename = "previousPasswordValidUntil")] - pub previous_password_valid_until: Option, - #[serde(rename = "username")] - pub username: String, - #[serde(rename = "validFrom")] - pub valid_from: DateTime, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["algorithm", "previousPasswordValidUntil", "username", "validFrom"], - )?; - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport { - ///`udp` - Udp, - ///`tcp` - Tcp, - ///`tls` - Tls, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Udp => "udp", - Self::Tcp => "tcp", - Self::Tls => "tls", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "udp" => Ok(Self::Udp), - "tcp" => Ok(Self::Tcp), - "tls" => Ok(Self::Tls), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `udp`, `tcp`, `tls`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem { - #[serde(rename = "host")] - pub host: String, - #[serde(rename = "port", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub port: i64, - #[serde(rename = "transport")] - pub transport: ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["host", "port", "transport"])?; - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection { - #[serde(rename = "endpoints")] - pub endpoints: Vec< - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem, - >, - #[serde(rename = "realm")] - pub realm: String, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["endpoints", "realm"])?; - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound { - #[serde(rename = "authentication")] - pub authentication: ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication, - #[serde(rename = "connection")] - pub connection: ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection, - } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["authentication", "connection"])?; - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound::serialize( - self, - serializer, - ) - } - } - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJson as ConfigureVoiceProfileOutboundResponse201ApplicationJson; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as ConfigureVoiceProfileOutboundResponse201ApplicationJsonoutbound; #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson { - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0( - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1( - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ConnectWhatsappBusinessBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectWhatsappBusinessBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectWhatsappBusinessBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -39503,24 +43887,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -39541,7 +43917,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -39558,24 +43934,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -39596,7 +43964,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1( + ConnectWhatsappBusinessBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -39644,51 +44012,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessBadRequestProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ConnectWhatsappBusinessBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1( + ConnectWhatsappBusinessBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -39697,24 +44056,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -39734,42 +44085,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson { - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ConnectWhatsappBusinessForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectWhatsappBusinessForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectWhatsappBusinessForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -39783,25 +44119,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -39821,7 +44147,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -39838,18 +44164,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectWhatsappBusinessForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -39862,7 +44233,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -39870,7 +44241,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConnectWhatsappBusinessForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -39887,24 +44258,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -39925,7 +44288,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( + ConnectWhatsappBusinessForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -39958,6 +44321,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -39976,54 +44349,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessForbiddenProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ConnectWhatsappBusinessForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ConnectWhatsappBusinessForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ConnectWhatsappBusinessForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( + ConnectWhatsappBusinessForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -40032,16 +44414,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -40050,25 +44432,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -40087,83 +44459,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2( - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, - ), - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3( - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, - ), + pub enum ConnectWhatsappBusinessGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ConnectWhatsappBusinessGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectWhatsappBusinessGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -40184,7 +44523,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -40192,33 +44531,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -40239,41 +44570,162 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( + ConnectWhatsappBusinessGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectWhatsappBusinessGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectWhatsappBusinessGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for ConnectWhatsappBusinessGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ConnectWhatsappBusinessGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConnectWhatsappBusinessGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ConnectWhatsappBusinessInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> + for ConnectWhatsappBusinessInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConnectWhatsappBusinessInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -40294,7 +44746,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2( + ConnectWhatsappBusinessInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -40302,33 +44754,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_CONFIGURED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Already Configured") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-configured", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -40349,7 +44793,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3( + ConnectWhatsappBusinessInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -40368,42 +44812,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_CONFIGURED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Already Configured") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-configured", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -40415,110 +44839,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson { + impl serde::Serialize for ConnectWhatsappBusinessInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2( + ConnectWhatsappBusinessInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3( + ConnectWhatsappBusinessInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -40526,24 +44881,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -40563,53 +44910,23 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 { - #[serde( - rename = "code", - deserialize_with = "const_voice_outbound_operation_pending_de", - serialize_with = "const_voice_outbound_operation_pending_ser", - )] + pub struct ConnectWhatsappBusinessRequest { + #[serde(rename = "code")] pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_outbound_operation_pending_9569571e_de", - serialize_with = "const_voice_outbound_operation_pending_9569571e_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_operation_pending_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_operation_pending_ser", - )] - pub r#type: String, + #[serde(rename = "phoneNumberId")] + pub phone_number_id: String, + #[serde(rename = "wabaId")] + pub waba_id: String, } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 { + impl<'de> serde::Deserialize<'de> for ConnectWhatsappBusinessRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -40618,150 +44935,267 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) + >(&value, &["code", "phoneNumberId", "wabaId"])?; + ConnectWhatsappBusinessRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) + ConnectWhatsappBusinessRequest::deserialize(deserializer) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 { + impl serde::Serialize for ConnectWhatsappBusinessRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) + ConnectWhatsappBusinessRequest::serialize(self, serializer) } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3 { - #[serde( - rename = "code", - deserialize_with = "const_voice_outbound_configured_de", - serialize_with = "const_voice_outbound_configured_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_outbound_already_configured_de", - serialize_with = "const_voice_outbound_already_configured_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_configured_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_configured_ser", - )] - pub r#type: String, + #[derive(Debug, Clone)] + pub enum ConnectWhatsappBusinessServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3 { + for ConnectWhatsappBusinessServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ConnectWhatsappBusinessServiceUnavailableProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("BILLING_NOT_PROVISIONED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Billing Not Provisioned") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/billing-not-provisioned", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectWhatsappBusinessServiceUnavailableProblem::BillingNotProvisionedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ConnectWhatsappBusinessServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("BILLING_NOT_PROVISIONED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Billing Not Provisioned") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/billing-not-provisioned") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectWhatsappBusinessServiceUnavailableProblem", + )) } else { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ConnectWhatsappBusinessServiceUnavailableProblem", + ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3 { + impl serde::Serialize for ConnectWhatsappBusinessServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant3::serialize( - self, - serializer, - ) + let value = match self { + ConnectWhatsappBusinessServiceUnavailableProblem::BillingNotProvisionedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ConnectWhatsappBusinessServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessServiceUnavailableProblem", + ), + ) + } } } #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson { - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0( - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1( - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ConnectWhatsappBusinessUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson { + for ConnectWhatsappBusinessUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), ConnectWhatsappBusinessUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -40777,24 +45211,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -40815,7 +45241,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -40832,24 +45258,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -40870,7 +45288,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1( + ConnectWhatsappBusinessUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -40916,52 +45334,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ConnectWhatsappBusinessUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ConnectWhatsappBusinessUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0( + ConnectWhatsappBusinessUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1( + ConnectWhatsappBusinessUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -40969,24 +45376,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -41006,61 +45405,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessUnprocessableEntityProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CountProjectsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CountProjectsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CountProjectsForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CountProjectsForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -41073,7 +45502,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -41081,7 +45510,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CountProjectsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -41089,33 +45518,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -41136,12 +45557,57 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( + CountProjectsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CountProjectsForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; let select = |keyed: bool| -> (usize, Selected) { @@ -41154,24 +45620,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -41182,43 +45663,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CountProjectsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CountProjectsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CountProjectsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CountProjectsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CountProjectsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CountProjectsForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CountProjectsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -41227,24 +45728,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -41253,6 +45746,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -41264,73 +45773,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CountProjectsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson { - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CountProjectsGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CountProjectsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CountProjectsGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -41351,7 +45835,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( + CountProjectsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -41359,33 +45843,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -41406,7 +45882,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( + CountProjectsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -41425,21 +45901,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -41450,52 +45926,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CountProjectsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CountProjectsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CountProjectsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson::ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CountProjectsGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CountProjectsGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -41503,25 +45968,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -41540,83 +45995,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CountProjectsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConfirmAccountPhoneVerificationRequestApplicationJson { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "phoneNumber")] - pub phone_number: String, - } - impl<'de> serde::Deserialize<'de> - for ConfirmAccountPhoneVerificationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "phoneNumber"])?; - ConfirmAccountPhoneVerificationRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ConfirmAccountPhoneVerificationRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ConfirmAccountPhoneVerificationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConfirmAccountPhoneVerificationRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAccountProfilePictureResponse200ApplicationJson as ConfirmAccountPhoneVerificationResponse200ApplicationJson; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson { - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2( - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateAccountProfilePictureUploadForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson { + for CreateAccountProfilePictureUploadForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateAccountProfilePictureUploadForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -41630,24 +46030,61 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateAccountProfilePictureUploadForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -41668,7 +46105,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( + CreateAccountProfilePictureUploadForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -41676,27 +46113,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -41709,7 +46144,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -41717,7 +46152,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateAccountProfilePictureUploadForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -41734,24 +46169,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -41772,7 +46199,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2( + CreateAccountProfilePictureUploadForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -41805,6 +46232,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -41823,54 +46260,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadForbiddenProblem", ), ) } } } - impl serde::Serialize - for ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountProfilePictureUploadForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( + CreateAccountProfilePictureUploadForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateAccountProfilePictureUploadForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2( + CreateAccountProfilePictureUploadForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateAccountProfilePictureUploadForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -41879,16 +46325,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -41897,25 +46343,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -41934,65 +46370,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateAccountProfilePictureUploadGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson { + for CreateAccountProfilePictureUploadGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateAccountProfilePictureUploadGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -42005,7 +46427,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -42013,7 +46435,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateAccountProfilePictureUploadGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -42021,33 +46443,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -42068,7 +46482,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( + CreateAccountProfilePictureUploadGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -42087,23 +46501,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -42114,44 +46526,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountProfilePictureUploadGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateAccountProfilePictureUploadGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( + CreateAccountProfilePictureUploadGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -42159,25 +46568,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -42196,30 +46595,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson { - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateAccountProfilePictureUploadInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson { + for CreateAccountProfilePictureUploadInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -42228,7 +46616,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson, + CreateAccountProfilePictureUploadInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -42236,33 +46624,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -42283,7 +46661,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( + CreateAccountProfilePictureUploadInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -42291,33 +46669,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -42338,7 +46708,7 @@ pub mod types { if replace { selected = Some(( rank, - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( + CreateAccountProfilePictureUploadInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -42357,21 +46727,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -42382,52 +46754,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountProfilePictureUploadInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson { + for CreateAccountProfilePictureUploadInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( + CreateAccountProfilePictureUploadInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson::ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( + CreateAccountProfilePictureUploadInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -42435,24 +46797,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -42472,169 +46826,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainRequestApplicationJson { - #[serde(rename = "domain")] - pub domain: String, - } - impl<'de> serde::Deserialize<'de> for ConnectEmailDomainRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["domain"])?; - ConnectEmailDomainRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ConnectEmailDomainRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainResponse202ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: ConnectEmailDomainResponse202ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: ConnectEmailDomainResponse202ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for ConnectEmailDomainResponse202ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - ConnectEmailDomainResponse202ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainResponse202ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ConnectEmailDomainResponse202ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainResponse202ApplicationJson::serialize(self, serializer) - } - } - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonerror as ConnectEmailDomainResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ConnectEmailDomainResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ConnectEmailDomainResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse400ApplicationProblemPlusJson { - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateAccountServiceKeyBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse400ApplicationProblemPlusJson), + ((usize, u32), CreateAccountServiceKeyBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -42655,7 +46891,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse400ApplicationProblemPlusJson::ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -42672,24 +46908,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateAccountServiceKeyBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -42710,7 +46985,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse400ApplicationProblemPlusJson::ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -42729,15 +47004,13 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/invalid-argument") || value.get("code").and_then(serde_json::Value::as_str) == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) @@ -42748,6 +47021,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) { (match_count, selected) = select(true); } @@ -42758,48 +47041,61 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyBadRequestProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountServiceKeyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse400ApplicationProblemPlusJson::ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyBadRequestProblem::InvalidArgumentProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateAccountServiceKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse400ApplicationProblemPlusJson::ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -42808,22 +47104,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -42843,117 +47133,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountServiceKeyBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ConnectEmailDomainResponse400ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainResponse402ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_entitlement_required_de", - serialize_with = "const_entitlement_required_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_entitlement_required_2c7d30a6_de", - serialize_with = "const_entitlement_required_2c7d30a6_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_entitlement_required_de", - serialize_with = "const_https_photon_codes_docs_problems_entitlement_required_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse402ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectEmailDomainResponse402ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainResponse402ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ConnectEmailDomainResponse402ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainResponse402ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse403ApplicationProblemPlusJson { - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateAccountServiceKeyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse403ApplicationProblemPlusJson), + ((usize, u32), CreateAccountServiceKeyForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -42967,25 +47167,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -43005,7 +47195,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse403ApplicationProblemPlusJson::ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -43022,18 +47212,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -43046,7 +47234,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -43054,7 +47242,54 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateAccountServiceKeyForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateAccountServiceKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -43071,24 +47306,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -43109,7 +47336,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse403ApplicationProblemPlusJson::ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2( + CreateAccountServiceKeyForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -43142,6 +47369,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -43160,51 +47397,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyForbiddenProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountServiceKeyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse403ApplicationProblemPlusJson::ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateAccountServiceKeyForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateAccountServiceKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse403ApplicationProblemPlusJson::ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2( + CreateAccountServiceKeyForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -43213,16 +47462,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -43231,23 +47480,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -43266,123 +47507,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountServiceKeyForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ConnectEmailDomainResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse409ApplicationProblemPlusJson { - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateAccountServiceKeyGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse409ApplicationProblemPlusJson), + ((usize, u32), CreateAccountServiceKeyGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("EMAIL_DOMAIN_ALREADY_CONNECTED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Email Domain Already Connected") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/email-domain-already-connected", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -43403,7 +47571,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -43411,33 +47579,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("EMAIL_DOMAIN_CAP_EXCEEDED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Email Domain Cap Exceeded") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/email-domain-cap-exceeded", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -43458,7 +47618,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2( + CreateAccountServiceKeyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -43477,33 +47637,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("EMAIL_DOMAIN_ALREADY_CONNECTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Email Domain Already Connected") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/email-domain-already-connected", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("EMAIL_DOMAIN_CAP_EXCEEDED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Email Domain Cap Exceeded") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/email-domain-cap-exceeded", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -43514,52 +47662,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountServiceKeyGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse409ApplicationProblemPlusJson::ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2( + CreateAccountServiceKeyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -43567,47 +47704,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -43626,230 +47731,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountServiceKeyGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_email_domain_already_connected_de", - serialize_with = "const_email_domain_already_connected_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_email_domain_already_connected_8e7e6bb5_de", - serialize_with = "const_email_domain_already_connected_8e7e6bb5_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_email_domain_already_connected_de", - serialize_with = "const_https_photon_codes_docs_problems_email_domain_already_connected_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2 { - #[serde( - rename = "code", - deserialize_with = "const_email_domain_cap_exceeded_de", - serialize_with = "const_email_domain_cap_exceeded_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_email_domain_cap_exceeded_49876a03_de", - serialize_with = "const_email_domain_cap_exceeded_49876a03_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_email_domain_cap_exceeded_de", - serialize_with = "const_https_photon_codes_docs_problems_email_domain_cap_exceeded_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse422ApplicationProblemPlusJson { - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateAccountServiceKeyInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse422ApplicationProblemPlusJson { + for CreateAccountServiceKeyInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse422ApplicationProblemPlusJson), + ((usize, u32), CreateAccountServiceKeyInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -43862,7 +47786,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -43870,7 +47794,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse422ApplicationProblemPlusJson::ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -43878,33 +47802,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -43925,7 +47841,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse422ApplicationProblemPlusJson::ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -43944,22 +47860,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -43971,49 +47887,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountServiceKeyInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse422ApplicationProblemPlusJson::ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0( + CreateAccountServiceKeyInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse422ApplicationProblemPlusJson::ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -44021,22 +47929,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -44056,56 +47958,122 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountServiceKeyInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ConnectEmailDomainResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ConnectEmailDomainResponse429ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateAccountServiceKeyRequest { + #[serde( + rename = "expiresAt", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub expires_at: Option, + #[serde(rename = "name")] + pub name: String, + } + impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["expiresAt", "name"])?; + CreateAccountServiceKeyRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateAccountServiceKeyRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateAccountServiceKeyRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateAccountServiceKeyRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateAccountServiceKeyResponse { + #[serde(rename = "secret")] + pub secret: String, + #[serde(rename = "serviceKey")] + pub service_key: AccountServiceKey, + } + impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["secret", "serviceKey"])?; + CreateAccountServiceKeyResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateAccountServiceKeyResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateAccountServiceKeyResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateAccountServiceKeyResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateAccountServiceKeyUnprocessableEntityProblem { + IdempotencyKeyReusedProblem(Box), + ValidationFailedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse500ApplicationProblemPlusJson { + for CreateAccountServiceKeyUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse500ApplicationProblemPlusJson), + ((usize, u32), CreateAccountServiceKeyUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -44118,7 +48086,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -44126,7 +48094,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateAccountServiceKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -44134,33 +48102,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -44173,7 +48133,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -44181,7 +48141,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse500ApplicationProblemPlusJson::ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -44200,23 +48160,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/idempotency-key-reused") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/validation-failed") { (match_count, selected) = select(true); } @@ -44227,42 +48185,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAccountServiceKeyUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateAccountServiceKeyUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateAccountServiceKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse500ApplicationProblemPlusJson::ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1( + CreateAccountServiceKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -44271,23 +48229,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -44306,65 +48256,96 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAccountServiceKeyUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ConnectEmailDomainResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ConnectEmailDomainResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse503ApplicationProblemPlusJson { - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateAgentProfileAvatarUploadForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse503ApplicationProblemPlusJson { + for CreateAgentProfileAvatarUploadForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse503ApplicationProblemPlusJson), + ((usize, u32), CreateAgentProfileAvatarUploadForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateAgentProfileAvatarUploadForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -44385,7 +48366,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse503ApplicationProblemPlusJson::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0( + CreateAgentProfileAvatarUploadForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -44393,33 +48374,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateAgentProfileAvatarUploadForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -44440,7 +48460,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse503ApplicationProblemPlusJson::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1( + CreateAgentProfileAvatarUploadForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -44458,24 +48478,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -44486,48 +48521,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadForbiddenProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse503ApplicationProblemPlusJson { + impl serde::Serialize for CreateAgentProfileAvatarUploadForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse503ApplicationProblemPlusJson::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0( + CreateAgentProfileAvatarUploadForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateAgentProfileAvatarUploadForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse503ApplicationProblemPlusJson::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1( + CreateAgentProfileAvatarUploadForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateAgentProfileAvatarUploadForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -44536,22 +48586,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -44560,6 +48604,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -44571,147 +48631,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAgentProfileAvatarUploadForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_billing_not_provisioned_de", - serialize_with = "const_billing_not_provisioned_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_billing_not_provisioned_5a01a8e2_de", - serialize_with = "const_billing_not_provisioned_5a01a8e2_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_billing_not_provisioned_de", - serialize_with = "const_https_photon_codes_docs_problems_billing_not_provisioned_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ConnectEmailDomainResponse504ApplicationProblemPlusJson { - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateAgentProfileAvatarUploadGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectEmailDomainResponse504ApplicationProblemPlusJson { + for CreateAgentProfileAvatarUploadGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectEmailDomainResponse504ApplicationProblemPlusJson), + ((usize, u32), CreateAgentProfileAvatarUploadGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -44732,7 +48696,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse504ApplicationProblemPlusJson::ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0( + CreateAgentProfileAvatarUploadGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -44740,33 +48704,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -44787,7 +48743,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectEmailDomainResponse504ApplicationProblemPlusJson::ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1( + CreateAgentProfileAvatarUploadGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -44806,21 +48762,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -44831,49 +48787,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectEmailDomainResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ConnectEmailDomainResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateAgentProfileAvatarUploadGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectEmailDomainResponse504ApplicationProblemPlusJson::ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0( + CreateAgentProfileAvatarUploadGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectEmailDomainResponse504ApplicationProblemPlusJson::ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1( + CreateAgentProfileAvatarUploadGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -44881,23 +48829,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -44916,95 +48856,83 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectEmailDomainResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAgentProfileAvatarUploadGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ConnectEmailDomainResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ConnectTelegramBotRequestApplicationJson {} - impl<'de> serde::Deserialize<'de> for ConnectTelegramBotRequestApplicationJson { + pub struct CreateAgentProfileAvatarUploadRequest { + #[serde(rename = "contentType")] + pub content_type: AgentProfileAvatarContentType, + } + impl<'de> serde::Deserialize<'de> for CreateAgentProfileAvatarUploadRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &[])?; - ConnectTelegramBotRequestApplicationJson::deserialize(value) + super::support::check_known_members::< + D::Error, + >(&value, &["contentType"])?; + CreateAgentProfileAvatarUploadRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - ConnectTelegramBotRequestApplicationJson::deserialize(deserializer) + CreateAgentProfileAvatarUploadRequest::deserialize(deserializer) } } } - impl serde::Serialize for ConnectTelegramBotRequestApplicationJson { + impl serde::Serialize for CreateAgentProfileAvatarUploadRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ConnectTelegramBotRequestApplicationJson::serialize(self, serializer) + CreateAgentProfileAvatarUploadRequest::serialize(self, serializer) } } - pub use self::ConnectEmailDomainResponse202ApplicationJson as ConnectTelegramBotResponse202ApplicationJson; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonerror as ConnectTelegramBotResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ConnectTelegramBotResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ConnectTelegramBotResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse400ApplicationProblemPlusJson { - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1( - Box, + pub enum CreateAppInstallationRequestConflictProblem { + AppInstallationAssertionReplayedProblem( + Box, ), + AppInstallationConfigChangedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateAppInstallationRequestConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse400ApplicationProblemPlusJson), + ((usize, u32), CreateAppInstallationRequestConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("APP_INSTALLATION_ASSERTION_REPLAYED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Installation Assertion Already Used") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/app-installation-assertion-replayed", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -45025,7 +48953,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse400ApplicationProblemPlusJson::ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0( + CreateAppInstallationRequestConflictProblem::AppInstallationAssertionReplayedProblem( inner, ), )); @@ -45033,33 +48961,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("APP_INSTALLATION_CONFIG_CHANGED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Installation App Configuration Changed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/app-installation-config-changed", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -45080,7 +49000,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse400ApplicationProblemPlusJson::ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1( + CreateAppInstallationRequestConflictProblem::AppInstallationConfigChangedProblem( inner, ), )); @@ -45099,24 +49019,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("APP_INSTALLATION_ASSERTION_REPLAYED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Installation Assertion Already Used") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/app-installation-assertion-replayed", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("APP_INSTALLATION_CONFIG_CHANGED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Installation App Configuration Changed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/app-installation-config-changed", ) { (match_count, selected) = select(true); @@ -45128,48 +49048,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAppInstallationRequestConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAppInstallationRequestConflictProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateAppInstallationRequestConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse400ApplicationProblemPlusJson::ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0( + CreateAppInstallationRequestConflictProblem::AppInstallationAssertionReplayedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse400ApplicationProblemPlusJson::ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1( + CreateAppInstallationRequestConflictProblem::AppInstallationConfigChangedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -45178,22 +49092,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -45213,115 +49121,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAppInstallationRequestConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ConnectTelegramBotResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse403ApplicationProblemPlusJson { - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateAppInstallationRequestGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse403ApplicationProblemPlusJson { + for CreateAppInstallationRequestGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse403ApplicationProblemPlusJson), + ((usize, u32), CreateAppInstallationRequestGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ConnectTelegramBotResponse403ApplicationProblemPlusJson::ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -45334,7 +49178,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -45342,7 +49186,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateAppInstallationRequestGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -45350,33 +49194,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -45397,7 +49233,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse403ApplicationProblemPlusJson::ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2( + CreateAppInstallationRequestGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -45415,29 +49251,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -45448,70 +49277,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAppInstallationRequestGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateAppInstallationRequestGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateAppInstallationRequestGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse403ApplicationProblemPlusJson::ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0( + CreateAppInstallationRequestGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse403ApplicationProblemPlusJson::ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2( + CreateAppInstallationRequestGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -45519,23 +49319,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -45554,94 +49346,83 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateAppInstallationRequestGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ConnectTelegramBotResponse403ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateAppInstallationRequestRequest { + #[serde(rename = "appId")] + pub app_id: String, + #[serde(rename = "clientAssertion")] + pub client_assertion: String, + #[serde(rename = "redirectUri")] + pub redirect_uri: String, + #[serde(rename = "state")] + pub state: String, + } + impl<'de> serde::Deserialize<'de> for CreateAppInstallationRequestRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["appId", "clientAssertion", "redirectUri", "state"])?; + CreateAppInstallationRequestRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateAppInstallationRequestRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateAppInstallationRequestRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateAppInstallationRequestRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct CreateAppInstallationRequestResponse { + #[serde(rename = "appId")] + pub app_id: String, + #[serde(rename = "appVersion")] + pub app_version: String, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "redirectUri")] + pub redirect_uri: String, + #[serde(rename = "requestId")] + pub request_id: String, + #[serde(rename = "state")] + pub state: String, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse409ApplicationProblemPlusJson { - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateDefaultVoiceProfileConflictProblem { + ProjectClosingProblem(Box), + VoiceDefaultProfileExistsProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateDefaultVoiceProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse409ApplicationProblemPlusJson), + ((usize, u32), CreateDefaultVoiceProfileConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("TELEGRAM_PROJECT_DELETED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Telegram Project Deleted") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/telegram-project-deleted", - )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) == Some("PROJECT_CLOSING") @@ -45653,24 +49434,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -45691,7 +49464,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileConflictProblem::ProjectClosingProblem( inner, ), )); @@ -45699,33 +49472,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("TELEGRAM_PROVISION_IN_PROGRESS") + == Some("VOICE_DEFAULT_PROFILE_EXISTS") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Telegram Provision In Progress") + == Some("Voice Default Profile Exists") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/telegram-provision-in-progress", + "https://photon.codes/docs/problems/voice-default-profile-exists", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -45738,7 +49503,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1130u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -45746,7 +49511,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2( + CreateDefaultVoiceProfileConflictProblem::VoiceDefaultProfileExistsProblem( inner, ), )); @@ -45765,32 +49530,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("TELEGRAM_PROJECT_DELETED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Telegram Project Deleted") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/telegram-project-deleted", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("TELEGRAM_PROVISION_IN_PROGRESS") + == Some("VOICE_DEFAULT_PROFILE_EXISTS") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Telegram Provision In Progress") + == Some("Voice Default Profile Exists") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/telegram-provision-in-progress", + "https://photon.codes/docs/problems/voice-default-profile-exists", ) { (match_count, selected) = select(true); @@ -45802,76 +49557,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileConflictProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CreateDefaultVoiceProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileConflictProblem::ProjectClosingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse409ApplicationProblemPlusJson::ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2( + CreateDefaultVoiceProfileConflictProblem::VoiceDefaultProfileExistsProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -45879,22 +49599,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -45914,113 +49628,24 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileConflictProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_telegram_project_deleted_de", - serialize_with = "const_telegram_project_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_telegram_project_deleted_41f853ad_de", - serialize_with = "const_telegram_project_deleted_41f853ad_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_telegram_project_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_telegram_project_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2 { + pub struct VoiceDefaultProfileExistsProblem { #[serde( rename = "code", - deserialize_with = "const_telegram_provision_in_progress_de", - serialize_with = "const_telegram_provision_in_progress_ser", + deserialize_with = "const_voice_default_profile_exists_de", + serialize_with = "const_voice_default_profile_exists_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] pub detail: Option, #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] pub instance: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "operationUrl")] - pub operation_url: String, #[serde( rename = "remediation", default, @@ -46034,116 +49659,102 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_telegram_provision_in_progress_065088cc_de", - serialize_with = "const_telegram_provision_in_progress_065088cc_ser", + deserialize_with = "const_voice_default_profile_exists_068764f8_de", + serialize_with = "const_voice_default_profile_exists_068764f8_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_telegram_provision_in_progress_de", - serialize_with = "const_https_photon_codes_docs_problems_telegram_provision_in_progress_ser", + deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_exists_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_exists_ser", )] pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "operationId", - "operationUrl", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectTelegramBotResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } + #[serde(flatten)] + pub additional: BTreeMap>, } #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse422ApplicationProblemPlusJson { - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateDefaultVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateDefaultVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse422ApplicationProblemPlusJson), + ((usize, u32), CreateDefaultVoiceProfileForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateDefaultVoiceProfileForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -46156,7 +49767,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -46164,7 +49775,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse422ApplicationProblemPlusJson::ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0( + CreateDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -46172,33 +49783,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -46219,7 +49869,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse422ApplicationProblemPlusJson::ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -46237,24 +49887,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -46265,48 +49930,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateDefaultVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse422ApplicationProblemPlusJson::ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0( + CreateDefaultVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse422ApplicationProblemPlusJson::ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -46315,22 +49995,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -46339,6 +50013,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -46350,56 +50040,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ConnectTelegramBotResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ConnectTelegramBotResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateDefaultVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse500ApplicationProblemPlusJson { + for CreateDefaultVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse500ApplicationProblemPlusJson), + ((usize, u32), CreateDefaultVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -46412,7 +50097,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -46420,7 +50105,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -46428,33 +50113,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -46475,7 +50152,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse500ApplicationProblemPlusJson::ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -46494,23 +50171,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -46521,43 +50196,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateDefaultVoiceProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse500ApplicationProblemPlusJson::ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -46565,23 +50238,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -46600,66 +50265,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ConnectTelegramBotResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ConnectTelegramBotResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ConnectTelegramBotResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectTelegramBotResponse504ApplicationProblemPlusJson { - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateDefaultVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectTelegramBotResponse504ApplicationProblemPlusJson { + for CreateDefaultVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ConnectTelegramBotResponse504ApplicationProblemPlusJson), + ((usize, u32), CreateDefaultVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -46680,7 +50328,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse504ApplicationProblemPlusJson::ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0( + CreateDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -46688,33 +50336,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -46735,7 +50375,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectTelegramBotResponse504ApplicationProblemPlusJson::ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -46754,21 +50394,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -46779,49 +50421,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectTelegramBotResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ConnectTelegramBotResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateDefaultVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectTelegramBotResponse504ApplicationProblemPlusJson::ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0( + CreateDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectTelegramBotResponse504ApplicationProblemPlusJson::ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1( + CreateDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -46829,22 +50463,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -46864,25 +50492,30 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectTelegramBotResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ConnectTelegramBotResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ConnectWhatsappBusinessRequestApplicationJson { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "phoneNumberId")] - pub phone_number_id: String, - #[serde(rename = "wabaId")] - pub waba_id: String, + pub struct CreateDefaultVoiceProfileRequest { + #[serde( + rename = "mediaEncryption", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub media_encryption: Option, + #[serde( + rename = "protocol", + deserialize_with = "const_sip_de", + serialize_with = "const_sip_ser", + )] + pub protocol: String, } - impl<'de> serde::Deserialize<'de> for ConnectWhatsappBusinessRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for CreateDefaultVoiceProfileRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -46891,197 +50524,116 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["code", "phoneNumberId", "wabaId"])?; - ConnectWhatsappBusinessRequestApplicationJson::deserialize(value) + >(&value, &["mediaEncryption", "protocol"])?; + CreateDefaultVoiceProfileRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - ConnectWhatsappBusinessRequestApplicationJson::deserialize(deserializer) + CreateDefaultVoiceProfileRequest::deserialize(deserializer) } } } - impl serde::Serialize for ConnectWhatsappBusinessRequestApplicationJson { + impl serde::Serialize for CreateDefaultVoiceProfileRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ConnectWhatsappBusinessRequestApplicationJson::serialize(self, serializer) + CreateDefaultVoiceProfileRequest::serialize(self, serializer) } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectWhatsappBusinessResponse202ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: ConnectWhatsappBusinessResponse202ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: ConnectWhatsappBusinessResponse202ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum VoiceProfileMediaEncryption { + ///`auto` + Auto, + ///`srtp` + Srtp, + /// A value this version of the client does not know, kept as received. + Unknown(String), } - impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse202ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - ConnectWhatsappBusinessResponse202ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ConnectWhatsappBusinessResponse202ApplicationJson::deserialize( - deserializer, - ) + impl VoiceProfileMediaEncryption { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Auto => "auto", + Self::Srtp => "srtp", + Self::Unknown(value) => value, } } } - impl serde::Serialize for ConnectWhatsappBusinessResponse202ApplicationJson { + impl std::fmt::Display for VoiceProfileMediaEncryption { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for VoiceProfileMediaEncryption { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ConnectWhatsappBusinessResponse202ApplicationJson::serialize( - self, - serializer, - ) + serializer.serialize_str(self.as_str()) } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ConnectWhatsappBusinessResponse202ApplicationJsonerror { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "detail")] - pub detail: String, - } - impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse202ApplicationJsonerror { + impl<'de> serde::Deserialize<'de> for VoiceProfileMediaEncryption { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "detail"])?; - ConnectWhatsappBusinessResponse202ApplicationJsonerror::deserialize( - value, + let value = String::deserialize(deserializer)?; + match value.as_str() { + "auto" => Ok(Self::Auto), + "srtp" => Ok(Self::Srtp), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `auto`, `srtp`", + ), ) - .map_err(serde::de::Error::custom) - } else { - ConnectWhatsappBusinessResponse202ApplicationJsonerror::deserialize( - deserializer, - ) + } + _ => Ok(Self::Unknown(value)), } } } - impl serde::Serialize for ConnectWhatsappBusinessResponse202ApplicationJsonerror { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ConnectWhatsappBusinessResponse202ApplicationJsonerror::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ConnectWhatsappBusinessResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ConnectWhatsappBusinessResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson { - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationPaymentMethodCheckoutBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -47102,7 +50654,54 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::InvalidArgumentProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -47119,24 +50718,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -47157,7 +50748,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -47176,15 +50767,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) @@ -47205,51 +50804,61 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutBadRequestProblem", ), ) } } } - impl serde::Serialize - for ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationPaymentMethodCheckoutBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::InvalidArgumentProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -47258,24 +50867,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -47295,39 +50896,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonVariant1; - pub use self::ConnectEmailDomainResponse402ApplicationProblemPlusJson as ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson { - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationPaymentMethodCheckoutForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -47341,25 +50931,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -47379,7 +50959,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -47396,18 +50976,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -47420,7 +51045,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -47428,7 +51053,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -47445,24 +51070,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -47483,7 +51100,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -47516,6 +51133,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -47534,54 +51161,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutForbiddenProblem", ), ) } } } - impl serde::Serialize - for ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationPaymentMethodCheckoutForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationPaymentMethodCheckoutForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -47590,16 +51226,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -47608,25 +51244,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -47645,26 +51271,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson { - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -47673,7 +51292,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson, + CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -47681,33 +51300,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -47720,7 +51331,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -47728,7 +51339,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -47736,33 +51347,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -47783,7 +51386,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -47802,23 +51405,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -47829,52 +51430,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem", ), ) } } } impl serde::Serialize - for ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -47882,25 +51473,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -47919,26 +51500,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -47947,7 +51521,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson, + CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -47962,16 +51536,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -47984,7 +51558,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -47992,7 +51566,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -48009,24 +51583,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48047,7 +51613,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -48093,44 +51659,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -48138,24 +51702,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48175,25 +51731,54 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateOrganizationPaymentMethodCheckoutResponse { + ///Hosted Stripe page; send the user here. + #[serde(rename = "checkoutUrl")] + pub checkout_url: String, + } + impl<'de> serde::Deserialize<'de> + for CreateOrganizationPaymentMethodCheckoutResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["checkoutUrl"])?; + CreateOrganizationPaymentMethodCheckoutResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateOrganizationPaymentMethodCheckoutResponse::deserialize( + deserializer, + ) + } + } + } + impl serde::Serialize for CreateOrganizationPaymentMethodCheckoutResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateOrganizationPaymentMethodCheckoutResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson { - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem { + PaymentProviderNotReadyProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -48202,7 +51787,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson, + CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -48210,33 +51795,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("PAYMENT_PROVIDER_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Payment Provider Not Ready") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/payment-provider-not-ready", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -48257,7 +51834,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem::PaymentProviderNotReadyProblem( inner, ), )); @@ -48274,24 +51851,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48312,7 +51881,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -48331,13 +51900,15 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("PAYMENT_PROVIDER_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Payment Provider Not Ready") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some( + "https://photon.codes/docs/problems/payment-provider-not-ready", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) @@ -48358,51 +51929,43 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem", ), ) } } } impl serde::Serialize - for ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem::PaymentProviderNotReadyProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -48411,24 +51974,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48448,25 +52003,57 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct PaymentProviderNotReadyProblem { + #[serde( + rename = "code", + deserialize_with = "const_payment_provider_not_ready_de", + serialize_with = "const_payment_provider_not_ready_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_payment_provider_not_ready_d064182b_de", + serialize_with = "const_payment_provider_not_ready_d064182b_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_payment_provider_not_ready_de", + serialize_with = "const_https_photon_codes_docs_problems_payment_provider_not_ready_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson { - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -48475,7 +52062,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson, + CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -48483,33 +52070,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -48522,7 +52101,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -48530,7 +52109,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -48538,33 +52117,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48585,7 +52156,7 @@ pub mod types { if replace { selected = Some(( rank, - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -48604,21 +52175,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -48629,52 +52202,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem", ), ) } } } impl serde::Serialize - for ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson { + for CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson::ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -48682,24 +52245,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -48719,173 +52274,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CountProjectsResponse200ApplicationJson { - #[serde(rename = "count", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub count: i64, - } - impl<'de> serde::Deserialize<'de> for CountProjectsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["count"])?; - CountProjectsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CountProjectsResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CountProjectsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CountProjectsResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CountProjectsResponse400ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_invalid_argument_de", - serialize_with = "const_invalid_argument_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_invalid_argument_49691e94_de", - serialize_with = "const_invalid_argument_49691e94_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_invalid_argument_de", - serialize_with = "const_https_photon_codes_docs_problems_invalid_argument_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CountProjectsResponse400ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CountProjectsResponse400ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CountProjectsResponse400ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CountProjectsResponse400ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CountProjectsResponse400ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CountProjectsResponse403ApplicationProblemPlusJson { - CountProjectsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CountProjectsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateOrganizationSetupIntentBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for CountProjectsResponse403ApplicationProblemPlusJson { + for CreateOrganizationSetupIntentBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CountProjectsResponse403ApplicationProblemPlusJson), + ((usize, u32), CreateOrganizationSetupIntentBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -48906,7 +52340,7 @@ pub mod types { if replace { selected = Some(( rank, - CountProjectsResponse403ApplicationProblemPlusJson::CountProjectsResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -48914,27 +52348,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -48947,7 +52379,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -48955,7 +52387,7 @@ pub mod types { if replace { selected = Some(( rank, - CountProjectsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationSetupIntentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -48963,31 +52395,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -49008,7 +52434,7 @@ pub mod types { if replace { selected = Some(( rank, - CountProjectsResponse403ApplicationProblemPlusJson::CountProjectsResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSetupIntentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -49026,29 +52452,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/invalid-argument") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -49059,52 +52490,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CountProjectsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CountProjectsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentBadRequestProblem", ), ) } } } - impl serde::Serialize for CountProjectsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSetupIntentBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CountProjectsResponse403ApplicationProblemPlusJson::CountProjectsResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CountProjectsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationSetupIntentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CountProjectsResponse403ApplicationProblemPlusJson::CountProjectsResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSetupIntentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -49112,16 +52535,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -49130,22 +52553,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -49165,68 +52582,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CountProjectsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CountProjectsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CountProjectsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as CountProjectsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CountProjectsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CountProjectsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as CountProjectsResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as CountProjectsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CountProjectsResponse504ApplicationProblemPlusJson { - CountProjectsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CountProjectsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationSetupIntentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CountProjectsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateOrganizationSetupIntentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CountProjectsResponse504ApplicationProblemPlusJson), + ((usize, u32), CreateOrganizationSetupIntentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateOrganizationSetupIntentForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -49247,7 +52691,7 @@ pub mod types { if replace { selected = Some(( rank, - CountProjectsResponse504ApplicationProblemPlusJson::CountProjectsResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -49255,31 +52699,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -49300,7 +52738,54 @@ pub mod types { if replace { selected = Some(( rank, - CountProjectsResponse504ApplicationProblemPlusJson::CountProjectsResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateOrganizationSetupIntentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -49318,22 +52803,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -49344,48 +52846,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CountProjectsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CountProjectsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentForbiddenProblem", ), ) } } } - impl serde::Serialize for CountProjectsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSetupIntentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CountProjectsResponse504ApplicationProblemPlusJson::CountProjectsResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CountProjectsResponse504ApplicationProblemPlusJson::CountProjectsResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateOrganizationSetupIntentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateOrganizationSetupIntentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -49394,22 +52911,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CountProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -49418,6 +52929,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -49429,236 +52956,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CountProjectsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CountProjectsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CountProjectsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountProfilePictureUploadRequestApplicationJson { - #[serde(rename = "contentType")] - pub content_type: CreateAccountProfilePictureUploadRequestApplicationJsoncontentType, - } - impl<'de> serde::Deserialize<'de> - for CreateAccountProfilePictureUploadRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["contentType"])?; - CreateAccountProfilePictureUploadRequestApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAccountProfilePictureUploadRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateAccountProfilePictureUploadRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountProfilePictureUploadRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateAccountProfilePictureUploadRequestApplicationJsoncontentType { - #[serde(rename = "image/jpeg")] - ImageJpeg, - #[serde(rename = "image/png")] - ImagePng, - #[serde(rename = "image/webp")] - ImageWebp, - } - impl std::fmt::Display - for CreateAccountProfilePictureUploadRequestApplicationJsoncontentType { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateAccountProfilePictureUploadRequestApplicationJsoncontentType::ImageJpeg => { - "image/jpeg" - } - CreateAccountProfilePictureUploadRequestApplicationJsoncontentType::ImagePng => { - "image/png" - } - CreateAccountProfilePictureUploadRequestApplicationJsoncontentType::ImageWebp => { - "image/webp" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountProfilePictureUploadResponse201ApplicationJson { - #[serde(rename = "expiresAt")] - pub expires_at: DateTime, - #[serde(rename = "formFields")] - pub form_fields: std::collections::BTreeMap, - #[serde(rename = "uploadId")] - pub upload_id: String, - #[serde(rename = "uploadUrl")] - pub upload_url: String, - } - impl<'de> serde::Deserialize<'de> - for CreateAccountProfilePictureUploadResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["expiresAt", "formFields", "uploadId", "uploadUrl"])?; - CreateAccountProfilePictureUploadResponse201ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAccountProfilePictureUploadResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateAccountProfilePictureUploadResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountProfilePictureUploadResponse201ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson { - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0( - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2( - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateOrganizationSetupIntentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson { + for CreateOrganizationSetupIntentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSetupIntentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -49671,7 +53013,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -49679,7 +53021,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationSetupIntentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -49687,33 +53029,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -49734,7 +53068,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSetupIntentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -49752,29 +53086,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -49785,73 +53112,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSetupIntentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSetupIntentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -49859,25 +53154,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -49896,41 +53181,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1( - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateOrganizationSetupIntentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson { + for CreateOrganizationSetupIntentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSetupIntentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -49944,16 +53214,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -49966,7 +53236,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -49974,7 +53244,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationSetupIntentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -49991,24 +53261,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -50029,7 +53291,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -50075,44 +53337,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSetupIntentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationSetupIntentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -50120,24 +53379,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -50157,73 +53408,86 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateOrganizationSetupIntentResponse { + ///Stripe SetupIntent client secret. + #[serde(rename = "clientSecret")] + pub client_secret: String, + ///Publishable key for the Stripe account backing billing. + #[serde(rename = "publishableKey")] + pub publishable_key: String, + } + impl<'de> serde::Deserialize<'de> for CreateOrganizationSetupIntentResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["clientSecret", "publishableKey"])?; + CreateOrganizationSetupIntentResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateOrganizationSetupIntentResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateOrganizationSetupIntentResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateOrganizationSetupIntentResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson { - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateOrganizationSetupIntentUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson { + for CreateOrganizationSetupIntentUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSetupIntentUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -50236,7 +53500,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -50244,7 +53508,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -50252,33 +53516,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -50299,7 +53555,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -50318,21 +53574,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -50343,52 +53601,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSetupIntentUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSetupIntentUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSetupIntentUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSetupIntentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -50396,24 +53643,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -50433,263 +53672,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountServiceKeyRequestApplicationJson { - #[serde( - rename = "expiresAt", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub expires_at: Option, - #[serde(rename = "name")] - pub name: String, - } - impl<'de> serde::Deserialize<'de> for CreateAccountServiceKeyRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["expiresAt", "name"])?; - CreateAccountServiceKeyRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateAccountServiceKeyRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateAccountServiceKeyRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountServiceKeyRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountServiceKeyResponse201ApplicationJson { - #[serde(rename = "secret")] - pub secret: String, - #[serde(rename = "serviceKey")] - pub service_key: CreateAccountServiceKeyResponse201ApplicationJsonserviceKey, - } - impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["secret", "serviceKey"])?; - CreateAccountServiceKeyResponse201ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateAccountServiceKeyResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateAccountServiceKeyResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountServiceKeyResponse201ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountServiceKeyResponse201ApplicationJsonserviceKey { - #[serde(rename = "accountId")] - pub account_id: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "expiresAt")] - pub expires_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "revokedAt")] - pub revoked_at: Option, - #[serde(rename = "serviceKeyId")] - pub service_key_id: String, - } - impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse201ApplicationJsonserviceKey { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "accountId", - "createdAt", - "expiresAt", - "name", - "revokedAt", - "serviceKeyId", - ], - )?; - CreateAccountServiceKeyResponse201ApplicationJsonserviceKey::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAccountServiceKeyResponse201ApplicationJsonserviceKey::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateAccountServiceKeyResponse201ApplicationJsonserviceKey { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountServiceKeyResponse201ApplicationJsonserviceKey::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateAccountServiceKeyResponse400ApplicationProblemPlusJson { - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateOrganizationSsoPortalLinkBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse400ApplicationProblemPlusJson { + for CreateOrganizationSsoPortalLinkBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSsoPortalLinkBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -50710,7 +53737,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -50718,33 +53745,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -50765,7 +53784,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( + CreateOrganizationSsoPortalLinkBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -50784,33 +53803,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -50821,55 +53828,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateAccountServiceKeyResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse400ApplicationProblemPlusJson::CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( + CreateOrganizationSsoPortalLinkBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -50877,51 +53870,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -50940,39 +53897,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountServiceKeyResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateAccountServiceKeyResponse403ApplicationProblemPlusJson { - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateOrganizationSsoPortalLinkForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse403ApplicationProblemPlusJson { + for CreateOrganizationSsoPortalLinkForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSsoPortalLinkForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -50986,25 +53931,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -51024,7 +53959,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -51041,18 +53976,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -51065,7 +53998,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -51073,7 +54006,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationSsoPortalLinkForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -51081,33 +54014,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -51128,7 +54053,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSsoPortalLinkForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -51162,13 +54087,15 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -51179,72 +54106,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateAccountServiceKeyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateOrganizationSsoPortalLinkForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse403ApplicationProblemPlusJson::CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( + CreateOrganizationSsoPortalLinkForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -51253,24 +54168,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -51290,154 +54197,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountServiceKeyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as CreateAccountServiceKeyResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAccountServiceKeyResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_service_key_limit_reached_de", - serialize_with = "const_account_service_key_limit_reached_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_service_key_limit_reached_ade428f0_de", - serialize_with = "const_account_service_key_limit_reached_ade428f0_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_service_key_limit_reached_de", - serialize_with = "const_https_photon_codes_docs_problems_account_service_key_limit_reached_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateAccountServiceKeyResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAccountServiceKeyResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateAccountServiceKeyResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAccountServiceKeyResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as CreateAccountServiceKeyResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as CreateAccountServiceKeyResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateAccountServiceKeyResponse422ApplicationProblemPlusJson { - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationSsoPortalLinkGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse422ApplicationProblemPlusJson { + for CreateOrganizationSsoPortalLinkGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSsoPortalLinkGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -51458,7 +54262,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson::CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -51466,33 +54270,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -51505,7 +54301,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -51513,7 +54309,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson::CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -51532,21 +54328,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-reused") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -51557,52 +54353,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateAccountServiceKeyResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson::CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse422ApplicationProblemPlusJson::CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -51610,25 +54395,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -51647,35 +54422,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountServiceKeyResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateAccountServiceKeyResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateOrganizationSsoPortalLinkInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse500ApplicationProblemPlusJson { + for CreateOrganizationSsoPortalLinkInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountServiceKeyResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSsoPortalLinkInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -51689,16 +54455,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -51711,7 +54477,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -51719,7 +54485,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationSsoPortalLinkInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -51736,24 +54502,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -51774,7 +54532,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse500ApplicationProblemPlusJson::CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -51820,44 +54578,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateAccountServiceKeyResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountServiceKeyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateOrganizationSsoPortalLinkInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse500ApplicationProblemPlusJson::CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -51865,24 +54620,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -51902,69 +54649,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountServiceKeyResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateAccountServiceKeyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateAccountServiceKeyResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateAccountServiceKeyResponse504ApplicationProblemPlusJson { - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum CreateOrganizationSsoPortalLinkPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateAccountServiceKeyResponse504ApplicationProblemPlusJson { + for CreateOrganizationSsoPortalLinkPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateOrganizationSsoPortalLinkPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -51985,7 +54718,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson::CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -51993,33 +54726,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -52040,7 +54765,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson::CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -52059,21 +54784,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -52084,51 +54813,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAccountServiceKeyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkPreconditionFailedProblem", ), ) } } } - impl serde::Serialize - for CreateAccountServiceKeyResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson::CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( + CreateOrganizationSsoPortalLinkPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAccountServiceKeyResponse504ApplicationProblemPlusJson::CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( + CreateOrganizationSsoPortalLinkPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -52137,24 +54857,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -52174,22 +54886,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAccountServiceKeyResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateAgentProfileAvatarUploadRequestApplicationJson { - #[serde(rename = "contentType")] - pub content_type: CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType, + pub struct CreateOrganizationSsoPortalLinkRequest { + #[serde( + rename = "intent", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub intent: Option, + #[serde(rename = "returnTo")] + pub return_to: String, } - impl<'de> serde::Deserialize<'de> - for CreateAgentProfileAvatarUploadRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for CreateOrganizationSsoPortalLinkRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -52198,115 +54914,87 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["contentType"])?; - CreateAgentProfileAvatarUploadRequestApplicationJson::deserialize(value) + >(&value, &["intent", "returnTo"])?; + CreateOrganizationSsoPortalLinkRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateAgentProfileAvatarUploadRequestApplicationJson::deserialize( - deserializer, - ) + CreateOrganizationSsoPortalLinkRequest::deserialize(deserializer) } } } - impl serde::Serialize for CreateAgentProfileAvatarUploadRequestApplicationJson { + impl serde::Serialize for CreateOrganizationSsoPortalLinkRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateAgentProfileAvatarUploadRequestApplicationJson::serialize( - self, - serializer, - ) + CreateOrganizationSsoPortalLinkRequest::serialize(self, serializer) } } + ///Default: `sso`. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] - pub enum CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType { - #[serde(rename = "image/jpeg")] - ImageJpeg, - #[serde(rename = "image/png")] - ImagePng, - #[serde(rename = "image/webp")] - ImageWebp, + pub enum CreateOrganizationSsoPortalLinkRequestIntent { + #[serde(rename = "sso")] + Sso, + #[serde(rename = "domain_verification")] + DomainVerification, } - impl std::fmt::Display - for CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType { + impl std::fmt::Display for CreateOrganizationSsoPortalLinkRequestIntent { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str( match self { - CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType::ImageJpeg => { - "image/jpeg" - } - CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType::ImagePng => { - "image/png" - } - CreateAgentProfileAvatarUploadRequestApplicationJsoncontentType::ImageWebp => { - "image/webp" + CreateOrganizationSsoPortalLinkRequestIntent::Sso => "sso", + CreateOrganizationSsoPortalLinkRequestIntent::DomainVerification => { + "domain_verification" } }, ) } } - pub use self::CreateAccountProfilePictureUploadResponse201ApplicationJson as CreateAgentProfileAvatarUploadResponse201ApplicationJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct CreateOrganizationSsoPortalLinkResponse { + #[serde(rename = "url")] + pub url: String, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson { - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0( - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2( - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateProjectApiKeyBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateProjectApiKeyBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -52327,7 +55015,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0( + CreateProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -52335,27 +55023,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -52368,7 +55054,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -52376,7 +55062,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -52384,33 +55070,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -52431,7 +55109,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2( + CreateProjectApiKeyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -52449,29 +55127,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -52482,54 +55165,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectApiKeyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2( + CreateProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateProjectApiKeyBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -52538,16 +55212,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -52556,25 +55230,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -52593,79 +55257,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectApiKeyBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson; - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson { - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateProjectApiKeyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateProjectApiKeyForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateProjectApiKeyForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -52686,7 +55362,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0( + CreateProjectApiKeyForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -52694,33 +55370,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -52741,7 +55456,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1( + CreateProjectApiKeyForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -52759,22 +55474,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -52785,51 +55517,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectApiKeyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson::CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1( + CreateProjectApiKeyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectApiKeyForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateProjectApiKeyForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -52838,24 +55582,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -52864,6 +55600,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -52875,28 +55627,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectApiKeyForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateAppInstallationRequestRequestApplicationJson { - #[serde(rename = "appId")] - pub app_id: String, - #[serde(rename = "clientAssertion")] - pub client_assertion: String, - #[serde(rename = "redirectUri")] - pub redirect_uri: String, - #[serde(rename = "state")] - pub state: String, + pub struct CreateProjectApiKeyRequest { + #[serde( + rename = "expiresAt", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub expires_at: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "permissions")] + pub permissions: Vec, } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -52905,85 +55657,31 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["appId", "clientAssertion", "redirectUri", "state"])?; - CreateAppInstallationRequestRequestApplicationJson::deserialize(value) + >(&value, &["expiresAt", "name", "permissions"])?; + CreateProjectApiKeyRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateAppInstallationRequestRequestApplicationJson::deserialize( - deserializer, - ) + CreateProjectApiKeyRequest::deserialize(deserializer) } } } - impl serde::Serialize for CreateAppInstallationRequestRequestApplicationJson { + impl serde::Serialize for CreateProjectApiKeyRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateAppInstallationRequestRequestApplicationJson::serialize( - self, - serializer, - ) + CreateProjectApiKeyRequest::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct CreateAppInstallationRequestResponse201ApplicationJson { - #[serde(rename = "appId")] - pub app_id: String, - #[serde(rename = "appVersion")] - pub app_version: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "redirectUri")] - pub redirect_uri: String, - #[serde(rename = "requestId")] - pub request_id: String, - #[serde(rename = "state")] - pub state: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateAppInstallationRequestResponse400ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateAppInstallationRequestResponse401ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_app_installation_assertion_invalid_de", - serialize_with = "const_app_installation_assertion_invalid_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_invalid_installation_client_assertion_de", - serialize_with = "const_invalid_installation_client_assertion_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_invalid_de", - serialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_invalid_ser", - )] - pub r#type: String, + pub struct CreateProjectApiKeyResponse { + #[serde(rename = "apiKey")] + pub api_key: ApiKey, + #[serde(rename = "secret")] + pub secret: String, } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestResponse401ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -52992,100 +55690,60 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateAppInstallationRequestResponse401ApplicationProblemPlusJson::deserialize( - value, - ) + >(&value, &["apiKey", "secret"])?; + CreateProjectApiKeyResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateAppInstallationRequestResponse401ApplicationProblemPlusJson::deserialize( - deserializer, - ) + CreateProjectApiKeyResponse::deserialize(deserializer) } } } - impl serde::Serialize - for CreateAppInstallationRequestResponse401ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectApiKeyResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateAppInstallationRequestResponse401ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + CreateProjectApiKeyResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum CreateAppInstallationRequestResponse409ApplicationProblemPlusJson { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0( - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1( - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateProjectApiKeyUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), CreateProjectApiKeyUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("APP_INSTALLATION_ASSERTION_REPLAYED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Installation Assertion Already Used") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/app-installation-assertion-replayed", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -53098,7 +55756,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -53106,7 +55764,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson::CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0( + CreateProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -53114,33 +55772,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("APP_INSTALLATION_CONFIG_CHANGED") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Installation App Configuration Changed") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/app-installation-config-changed", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -53161,7 +55811,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson::CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1( + CreateProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -53180,24 +55830,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("APP_INSTALLATION_ASSERTION_REPLAYED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Installation Assertion Already Used") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/app-installation-assertion-replayed", - ) + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("APP_INSTALLATION_CONFIG_CHANGED") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Installation App Configuration Changed") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/app-installation-config-changed", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -53209,52 +55857,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAppInstallationRequestResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAppInstallationRequestResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectApiKeyUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectApiKeyUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson::CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0( + CreateProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAppInstallationRequestResponse409ApplicationProblemPlusJson::CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1( + CreateProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -53262,24 +55899,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -53299,241 +55928,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAppInstallationRequestResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectApiKeyUnprocessableEntityProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_app_installation_assertion_replayed_de", - serialize_with = "const_app_installation_assertion_replayed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_installation_assertion_already_used_de", - serialize_with = "const_installation_assertion_already_used_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_replayed_de", - serialize_with = "const_https_photon_codes_docs_problems_app_installation_assertion_replayed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_app_installation_config_changed_de", - serialize_with = "const_app_installation_config_changed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_installation_app_configuration_changed_de", - serialize_with = "const_installation_app_configuration_changed_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_app_installation_config_changed_de", - serialize_with = "const_https_photon_codes_docs_problems_app_installation_config_changed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateAppInstallationRequestResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateAppInstallationRequestResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateAppInstallationRequestResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateAppInstallationRequestResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateAppInstallationRequestResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateAppInstallationRequestResponse504ApplicationProblemPlusJson { - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateProjectBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateAppInstallationRequestResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateProjectBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -53554,7 +55991,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson::CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0( + CreateProjectBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -53562,33 +55999,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -53609,12 +56038,57 @@ pub mod types { if replace { selected = Some(( rank, - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson::CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1( + CreateProjectBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateProjectBadRequestProblem::InvalidArgumentProblem(inner), + )); + } + } (match_count, selected) }; let select = |keyed: bool| -> (usize, Selected) { @@ -53628,21 +56102,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -53653,51 +56139,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAppInstallationRequestResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateAppInstallationRequestResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateAppInstallationRequestResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson::CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateAppInstallationRequestResponse504ApplicationProblemPlusJson::CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateProjectBadRequestProblem::IdempotencyKeyRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectBadRequestProblem::IdempotencyKeyInvalidProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -53706,24 +56186,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -53732,6 +56204,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -53743,387 +56231,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateAppInstallationRequestResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileRequestApplicationJson { - #[serde( - rename = "mediaEncryption", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub media_encryption: Option< - CreateDefaultVoiceProfileRequestApplicationJsonmediaEncryption, - >, - #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", - )] - pub protocol: String, - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["mediaEncryption", "protocol"])?; - CreateDefaultVoiceProfileRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateDefaultVoiceProfileRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateDefaultVoiceProfileRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateDefaultVoiceProfileRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateDefaultVoiceProfileRequestApplicationJsonmediaEncryption { - #[serde(rename = "auto")] - Auto, - #[serde(rename = "srtp")] - Srtp, - } - impl std::fmt::Display - for CreateDefaultVoiceProfileRequestApplicationJsonmediaEncryption { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateDefaultVoiceProfileRequestApplicationJsonmediaEncryption::Auto => { - "auto" - } - CreateDefaultVoiceProfileRequestApplicationJsonmediaEncryption::Srtp => { - "srtp" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileResponse200ApplicationJson { - #[serde(rename = "configuration")] - pub configuration: CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "isDefault")] - pub is_default: bool, - #[serde(rename = "lineCount", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub line_count: i64, - #[serde(rename = "mediaEncryption")] - pub media_encryption: CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "profileId")] - pub profile_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", - )] - pub protocol: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub version: i64, - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version", - ], - )?; - CreateDefaultVoiceProfileResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateDefaultVoiceProfileResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateDefaultVoiceProfileResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateDefaultVoiceProfileResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials { - #[serde(rename = "username")] - pub username: String, - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["username"])?; - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound { - #[serde(rename = "credentials")] - pub credentials: Option< - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials, - >, - #[serde(rename = "destinationUri")] - pub destination_uri: String, - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["credentials", "destinationUri"])?; - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound::serialize( - self, - serializer, - ) - } - } - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutbound; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration { - #[serde(rename = "inbound")] - pub inbound: Option< - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound, - >, - #[serde(rename = "outbound")] - pub outbound: Option< - CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutbound, - >, - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["inbound", "outbound"])?; - CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption { - ///`auto` - Auto, - ///`srtp` - Srtp, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Auto => "auto", - Self::Srtp => "srtp", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "auto" => Ok(Self::Auto), - "srtp" => Ok(Self::Srtp), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `auto`, `srtp`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJson as CreateDefaultVoiceProfileResponse201ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as CreateDefaultVoiceProfileResponse201ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as CreateDefaultVoiceProfileResponse201ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as CreateDefaultVoiceProfileResponse201ApplicationJsonmediaEncryption; #[derive(Debug, Clone)] - pub enum CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateProjectForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateProjectForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -54136,24 +56263,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateProjectForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -54174,7 +56336,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + CreateProjectForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -54182,27 +56344,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -54215,7 +56375,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -54223,7 +56383,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateProjectForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -54240,24 +56400,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -54278,9 +56430,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + CreateProjectForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -54311,6 +56461,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -54329,54 +56489,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateProjectForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -54385,16 +56554,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -54403,25 +56572,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -54440,68 +56599,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateProjectGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateProjectGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -54522,7 +56661,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( + CreateProjectGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -54530,33 +56669,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_EXISTS") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Exists") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-default-profile-exists", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -54577,7 +56708,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + CreateProjectGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -54596,23 +56727,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_EXISTS") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Exists") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-default-profile-exists", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -54623,52 +56752,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateProjectGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateProjectGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -54676,25 +56794,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -54713,52 +56821,21 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_voice_default_profile_exists_de", - serialize_with = "const_voice_default_profile_exists_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_default_profile_exists_068764f8_de", - serialize_with = "const_voice_default_profile_exists_068764f8_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_exists_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_exists_ser", - )] - pub r#type: String, + pub struct CreateProjectRequest { + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "slug")] + pub slug: String, } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { + impl<'de> serde::Deserialize<'de> for CreateProjectRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -54767,88 +56844,60 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) + >(&value, &["name", "slug"])?; + CreateProjectRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) + CreateProjectRequest::deserialize(deserializer) } } } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { + impl serde::Serialize for CreateProjectRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) + CreateProjectRequest::serialize(self, serializer) } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateProjectUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateProjectUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateProjectUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -54861,7 +56910,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -54869,7 +56918,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -54877,33 +56926,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -54924,7 +56965,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + CreateProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -54943,22 +56984,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -54970,44 +57011,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateProjectUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateProjectUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + CreateProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -55015,24 +57053,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -55052,69 +57082,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateProjectUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateSharedLineAssignmentBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateSharedLineAssignmentBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -55135,7 +57146,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -55143,33 +57154,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -55190,7 +57193,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -55209,21 +57212,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -55234,51 +57241,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -55287,24 +57285,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -55324,118 +57314,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson { - ///Hosted Stripe page; send the user here. - #[serde(rename = "checkoutUrl")] - pub checkout_url: String, - } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["checkoutUrl"])?; - CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson { - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, - ), - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2( - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateSharedLineAssignmentConflictProblem { + ProjectClosingProblem(Box), + ImessageModeDedicatedProblem(Box), + SharedLineCapExceededProblem(Box), + AssignmentExistsProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateSharedLineAssignmentConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -55456,7 +57380,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentConflictProblem::ProjectClosingProblem( inner, ), )); @@ -55464,33 +57388,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("IMESSAGE_MODE_DEDICATED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("iMessage Mode Is Dedicated") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/imessage-mode-dedicated", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateSharedLineAssignmentConflictProblem::ImessageModeDedicatedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SHARED_LINE_CAP_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Shared Line Cap Exceeded") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/shared-line-cap-exceeded", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -55511,7 +57474,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentConflictProblem::SharedLineCapExceededProblem( inner, ), )); @@ -55519,33 +57482,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("ASSIGNMENT_EXISTS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Assignment Exists") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/assignment-exists", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -55566,7 +57521,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2( + CreateSharedLineAssignmentConflictProblem::AssignmentExistsProblem( inner, ), )); @@ -55585,33 +57540,41 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("IMESSAGE_MODE_DEDICATED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("iMessage Mode Is Dedicated") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/imessage-mode-dedicated", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("SHARED_LINE_CAP_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Shared Line Cap Exceeded") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/shared-line-cap-exceeded", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ASSIGNMENT_EXISTS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment Exists") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/assignment-exists") { (match_count, selected) = select(true); } @@ -55622,55 +57585,47 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentConflictProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentConflictProblem::ProjectClosingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentConflictProblem::ImessageModeDedicatedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2( + CreateSharedLineAssignmentConflictProblem::SharedLineCapExceededProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateSharedLineAssignmentConflictProblem::AssignmentExistsProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -55678,24 +57633,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -55704,24 +57651,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -55730,6 +57669,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -55741,43 +57696,103 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentConflictProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ImessageModeDedicatedProblem { + #[serde( + rename = "code", + deserialize_with = "const_imessage_mode_dedicated_de", + serialize_with = "const_imessage_mode_dedicated_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_i_message_mode_is_dedicated_de", + serialize_with = "const_i_message_mode_is_dedicated_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_imessage_mode_dedicated_de", + serialize_with = "const_https_photon_codes_docs_problems_imessage_mode_dedicated_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct SharedLineCapExceededProblem { + #[serde( + rename = "code", + deserialize_with = "const_shared_line_cap_exceeded_de", + serialize_with = "const_shared_line_cap_exceeded_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_shared_line_cap_exceeded_fd01c974_de", + serialize_with = "const_shared_line_cap_exceeded_fd01c974_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_shared_line_cap_exceeded_de", + serialize_with = "const_https_photon_codes_docs_problems_shared_line_cap_exceeded_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson { - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2( - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -55791,25 +57806,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -55829,7 +57834,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -55846,18 +57851,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -55870,7 +57920,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -55878,7 +57928,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -55895,24 +57945,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -55933,7 +57975,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2( + CreateSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -55966,6 +58008,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -55984,54 +58036,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2( + CreateSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -56040,16 +58101,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -56058,25 +58119,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -56095,73 +58146,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson { - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson { + for CreateSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -56174,7 +58203,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -56182,7 +58211,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -56190,33 +58219,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -56237,7 +58258,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -56256,23 +58277,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -56283,52 +58302,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -56336,25 +58344,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -56373,37 +58371,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson { + for CreateSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -56417,16 +58404,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -56439,7 +58426,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -56447,7 +58434,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -56464,24 +58451,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -56502,7 +58481,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -56548,44 +58527,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -56593,24 +58569,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -56630,72 +58598,152 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateSharedLineAssignmentRequest { + #[serde( + rename = "email", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub email: Option, + #[serde( + rename = "firstName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub first_name: Option, + #[serde(rename = "handle")] + pub handle: ImessageHandle, + #[serde( + rename = "lastName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub last_name: Option, + } + impl<'de> serde::Deserialize<'de> for CreateSharedLineAssignmentRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["email", "firstName", "handle", "lastName"])?; + CreateSharedLineAssignmentRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateSharedLineAssignmentRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateSharedLineAssignmentRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateSharedLineAssignmentRequest::serialize(self, serializer) + } + } + pub type ImessageHandle = String; #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson { - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateSharedLineAssignmentServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + SharedLinePoolExhaustedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson { + for CreateSharedLineAssignmentServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PAYMENT_PROVIDER_NOT_READY") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Payment Provider Not Ready") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/payment-provider-not-ready", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateSharedLineAssignmentServiceUnavailableProblem::BillingNotProvisionedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SHARED_LINE_POOL_EXHAUSTED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Shared Line Pool Exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/shared-line-pool-exhausted", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -56716,7 +58764,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentServiceUnavailableProblem::SharedLinePoolExhaustedProblem( inner, ), )); @@ -56733,24 +58781,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -56771,7 +58811,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -56790,15 +58830,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PAYMENT_PROVIDER_NOT_READY") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Payment Provider Not Ready") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/payment-provider-not-ready", - ) + == Some("https://photon.codes/docs/problems/billing-not-provisioned") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SHARED_LINE_POOL_EXHAUSTED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Shared Line Pool Exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/shared-line-pool-exhausted", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) @@ -56819,51 +58867,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentServiceUnavailableProblem::SharedLinePoolExhaustedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateSharedLineAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -56872,24 +58914,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, >(candidate) .ok() } @@ -56909,19 +58961,18 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentServiceUnavailableProblem", ), ) } } } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0 { + pub struct SharedLinePoolExhaustedProblem { #[serde( rename = "code", - deserialize_with = "const_payment_provider_not_ready_de", - serialize_with = "const_payment_provider_not_ready_ser", + deserialize_with = "const_shared_line_pool_exhausted_de", + serialize_with = "const_shared_line_pool_exhausted_ser", )] pub code: String, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] @@ -56941,122 +58992,58 @@ pub mod types { pub status: i64, #[serde( rename = "title", - deserialize_with = "const_payment_provider_not_ready_d064182b_de", - serialize_with = "const_payment_provider_not_ready_d064182b_ser", + deserialize_with = "const_shared_line_pool_exhausted_fad84b44_de", + serialize_with = "const_shared_line_pool_exhausted_fad84b44_ser", )] pub title: String, #[serde( rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_payment_provider_not_ready_de", - serialize_with = "const_https_photon_codes_docs_problems_payment_provider_not_ready_ser", + deserialize_with = "const_https_photon_codes_docs_problems_shared_line_pool_exhausted_de", + serialize_with = "const_https_photon_codes_docs_problems_shared_line_pool_exhausted_ser", )] pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson { - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateSharedLineAssignmentUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson { + for CreateSharedLineAssignmentUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateSharedLineAssignmentUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -57069,7 +59056,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -57077,7 +59064,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -57085,33 +59072,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -57132,7 +59111,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -57151,21 +59130,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -57176,52 +59157,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateSharedLineAssignmentUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateSharedLineAssignmentUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0( + CreateSharedLineAssignmentUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1( + CreateSharedLineAssignmentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -57229,24 +59199,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -57266,175 +59228,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateOrganizationSetupIntentResponse200ApplicationJson { - ///Stripe SetupIntent client secret. - #[serde(rename = "clientSecret")] - pub client_secret: String, - ///Publishable key for the Stripe account backing billing. - #[serde(rename = "publishableKey")] - pub publishable_key: String, - } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["clientSecret", "publishableKey"])?; - CreateOrganizationSetupIntentResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateOrganizationSetupIntentResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateOrganizationSetupIntentResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateOrganizationSetupIntentResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson { - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, - ), - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2( - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateVoiceProfileConflictProblem { + ProjectClosingProblem(Box), + VoiceDefaultProfileRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateVoiceProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateVoiceProfileConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -57455,7 +59290,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1( + CreateVoiceProfileConflictProblem::ProjectClosingProblem( inner, ), )); @@ -57463,33 +59298,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_DEFAULT_PROFILE_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Default Profile Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-default-profile-required", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -57510,7 +59337,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2( + CreateVoiceProfileConflictProblem::VoiceDefaultProfileRequiredProblem( inner, ), )); @@ -57529,32 +59356,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_DEFAULT_PROFILE_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Default Profile Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-default-profile-required", ) { (match_count, selected) = select(true); @@ -57566,81 +59383,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileConflictProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateVoiceProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2( + CreateVoiceProfileConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateVoiceProfileConflictProblem::VoiceDefaultProfileRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -57648,24 +59425,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -57685,44 +59454,64 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateVoiceProfileConflictProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceDefaultProfileRequiredProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_default_profile_required_de", + serialize_with = "const_voice_default_profile_required_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_default_profile_required_d6a6b311_de", + serialize_with = "const_voice_default_profile_required_d6a6b311_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_required_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_required_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson { - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2( - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum CreateVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), CreateVoiceProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -57735,24 +59524,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateVoiceProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -57773,7 +59597,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0( + CreateVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -57781,27 +59605,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -57814,7 +59636,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -57822,7 +59644,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -57839,24 +59661,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -57877,7 +59691,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2( + CreateVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -57910,6 +59724,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -57928,54 +59752,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2( + CreateVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateVoiceProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateVoiceProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -57984,16 +59817,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -58002,25 +59835,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -58039,73 +59862,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson { - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), CreateVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -58118,7 +59918,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -58126,7 +59926,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0( + CreateVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -58134,33 +59934,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -58181,7 +59973,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1( + CreateVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -58200,23 +59992,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -58227,52 +60017,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateVoiceProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1( + CreateVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -58280,25 +60059,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -58317,37 +60086,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -58361,16 +60118,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -58383,7 +60140,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -58391,7 +60148,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -58408,24 +60165,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -58446,7 +60195,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1( + CreateVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -58492,44 +60241,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1( + CreateVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -58537,24 +60283,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -58574,73 +60312,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateVoiceProfileRequest { + #[serde( + rename = "mediaEncryption", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub media_encryption: Option, + #[serde(rename = "name")] + pub name: String, + #[serde( + rename = "protocol", + deserialize_with = "const_sip_de", + serialize_with = "const_sip_ser", + )] + pub protocol: String, + } + impl<'de> serde::Deserialize<'de> for CreateVoiceProfileRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["mediaEncryption", "name", "protocol"])?; + CreateVoiceProfileRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateVoiceProfileRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateVoiceProfileRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateVoiceProfileRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson { - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateWebhookDestinationBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWebhookDestinationBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWebhookDestinationBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -58661,7 +60421,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0( + CreateWebhookDestinationBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -58669,33 +60429,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWebhookDestinationBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -58716,7 +60515,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -58735,21 +60534,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -58760,51 +60571,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateWebhookDestinationBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0( + CreateWebhookDestinationBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWebhookDestinationBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson::CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -58813,24 +60618,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -58839,6 +60636,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -58850,148 +60663,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWebhookDestinationBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateOrganizationSsoPortalLinkRequestApplicationJson { - ///Default: `sso`. - #[serde( - rename = "intent", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub intent: Option, - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSsoPortalLinkRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["intent", "returnTo"])?; - CreateOrganizationSsoPortalLinkRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateOrganizationSsoPortalLinkRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateOrganizationSsoPortalLinkRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateOrganizationSsoPortalLinkRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateOrganizationSsoPortalLinkRequestApplicationJsonintent { - #[serde(rename = "sso")] - Sso, - #[serde(rename = "domain_verification")] - DomainVerification, - } - impl std::fmt::Display - for CreateOrganizationSsoPortalLinkRequestApplicationJsonintent { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateOrganizationSsoPortalLinkRequestApplicationJsonintent::Sso => { - "sso" - } - CreateOrganizationSsoPortalLinkRequestApplicationJsonintent::DomainVerification => { - "domain_verification" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct CreateOrganizationSsoPortalLinkResponse200ApplicationJson { - #[serde(rename = "url")] - pub url: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } #[derive(Debug, Clone)] - pub enum CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson { - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateWebhookDestinationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWebhookDestinationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWebhookDestinationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWebhookDestinationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-return-to", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -59012,7 +60772,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0( + CreateWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -59020,33 +60780,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59067,7 +60866,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -59085,22 +60884,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -59111,51 +60927,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateWebhookDestinationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0( + CreateWebhookDestinationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateWebhookDestinationForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -59164,24 +60992,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59190,6 +61010,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -59201,56 +61037,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWebhookDestinationForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum CreateWebhookDestinationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWebhookDestinationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWebhookDestinationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -59263,7 +61093,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -59271,7 +61101,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + CreateWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -59279,27 +61109,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -59312,7 +61140,259 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union CreateWebhookDestinationGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union CreateWebhookDestinationGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for CreateWebhookDestinationGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + CreateWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CreateWebhookDestinationGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateWebhookDestinationRequest { + #[serde(rename = "apiVersion")] + pub api_version: Date, + #[serde( + rename = "description", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub description: Option, + #[serde(rename = "enabledEvents")] + pub enabled_events: WebhookEventSelection, + #[serde(rename = "name")] + pub name: String, + ///Default: `enabled`. + #[serde( + rename = "status", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub status: Option, + ///HTTPS URL without credentials or a fragment. + #[serde(rename = "url")] + pub url: String, + } + impl<'de> serde::Deserialize<'de> for CreateWebhookDestinationRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "apiVersion", + "description", + "enabledEvents", + "name", + "status", + "url", + ], + )?; + CreateWebhookDestinationRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateWebhookDestinationRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateWebhookDestinationRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateWebhookDestinationRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum WebhookEventSelection { + AllWebhookEvents(Box), + WebhookEventTypeList(Box), + } + impl<'de> serde::Deserialize<'de> for WebhookEventSelection { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), WebhookEventSelection)>; + let pass = |strict: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 800u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + WebhookEventSelection::AllWebhookEvents(inner), + )); + } + } + if let Some(inner) = (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 850u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -59320,105 +61400,72 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), + WebhookEventSelection::WebhookEventTypeList(inner), )); } } (match_count, selected) }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); + let (mut match_count, mut selected) = pass(true); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false); + match_count = count.min(1); + selected = lenient; } - if match_count == 1 { + if match_count >= 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson", + "data must match at least one typed variant of union WebhookEventSelection", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson", + "data must match at least one typed variant of union WebhookEventSelection", ), ) } } } - impl serde::Serialize - for CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson { + impl serde::Serialize for WebhookEventSelection { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + WebhookEventSelection::AllWebhookEvents(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + WebhookEventSelection::WebhookEventTypeList(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -59432,67 +61479,210 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count == 1 { + if match_count >= 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson", + "serialized value must match at least one typed variant of union WebhookEventSelection", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJsonissuesItem; + pub type WebhookEventTypeList = Vec; + pub type WebhookEventTypeName = String; + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum WebhookDestinationStatus { + ///`enabled` + Enabled, + ///`disabled` + Disabled, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl WebhookDestinationStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Enabled => "enabled", + Self::Disabled => "disabled", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for WebhookDestinationStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for WebhookDestinationStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for WebhookDestinationStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "enabled" => Ok(Self::Enabled), + "disabled" => Ok(Self::Disabled), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `enabled`, `disabled`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateWebhookDestinationResponse { + #[serde(rename = "destination")] + pub destination: WebhookDestination, + #[serde(rename = "signingSecret")] + pub signing_secret: String, + } + impl<'de> serde::Deserialize<'de> for CreateWebhookDestinationResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["destination", "signingSecret"])?; + CreateWebhookDestinationResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateWebhookDestinationResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateWebhookDestinationResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateWebhookDestinationResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WebhookDestination { + #[serde(rename = "apiVersion")] + pub api_version: Date, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "deletedAt")] + pub deleted_at: Option, + #[serde(rename = "description")] + pub description: Option, + #[serde(rename = "destinationId")] + pub destination_id: String, + #[serde(rename = "enabledEvents")] + pub enabled_events: WebhookEventSelection, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "status")] + pub status: WebhookDestinationStatus, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + #[serde(rename = "url")] + pub url: String, + } + impl<'de> serde::Deserialize<'de> for WebhookDestination { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "apiVersion", + "createdAt", + "deletedAt", + "description", + "destinationId", + "enabledEvents", + "name", + "projectId", + "status", + "updatedAt", + "url", + ], + )?; + WebhookDestination::deserialize(value).map_err(serde::de::Error::custom) + } else { + WebhookDestination::deserialize(deserializer) + } + } + } + impl serde::Serialize for WebhookDestination { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WebhookDestination::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateWebhookDestinationUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson { + for CreateWebhookDestinationUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWebhookDestinationUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -59505,7 +61695,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -59513,7 +61703,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateWebhookDestinationUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -59521,33 +61711,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59568,7 +61750,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -59587,22 +61769,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -59614,44 +61796,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWebhookDestinationUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateWebhookDestinationUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateWebhookDestinationUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1( + CreateWebhookDestinationUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -59659,24 +61838,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59696,73 +61867,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWebhookDestinationUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson { - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum CreateWhatsappSharedLineAssignmentBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappSharedLineAssignmentBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -59783,7 +61932,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -59791,33 +61940,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59838,7 +61979,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -59857,21 +61998,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -59882,51 +62027,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappSharedLineAssignmentBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson::CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -59935,24 +62071,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -59972,249 +62100,53 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectApiKeyRequestApplicationJson { - #[serde( - rename = "expiresAt", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub expires_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "permissions")] - pub permissions: Vec, - } - impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["expiresAt", "name", "permissions"])?; - CreateProjectApiKeyRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectApiKeyRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateProjectApiKeyRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectApiKeyRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateProjectApiKeyRequestApplicationJsonpermissionsItem { - #[serde(rename = "events:read")] - EventsRead, - #[serde(rename = "events:write")] - EventsWrite, - #[serde(rename = "platforms:read")] - PlatformsRead, - #[serde(rename = "platforms:write")] - PlatformsWrite, - #[serde(rename = "project:read")] - ProjectRead, - #[serde(rename = "project:write")] - ProjectWrite, - } - impl std::fmt::Display for CreateProjectApiKeyRequestApplicationJsonpermissionsItem { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::EventsRead => { - "events:read" - } - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::EventsWrite => { - "events:write" - } - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::PlatformsRead => { - "platforms:read" - } - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::PlatformsWrite => { - "platforms:write" - } - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::ProjectRead => { - "project:read" - } - CreateProjectApiKeyRequestApplicationJsonpermissionsItem::ProjectWrite => { - "project:write" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectApiKeyResponse201ApplicationJson { - #[serde(rename = "apiKey")] - pub api_key: CreateProjectApiKeyResponse201ApplicationJsonapiKey, - #[serde(rename = "secret")] - pub secret: String, - } - impl<'de> serde::Deserialize<'de> for CreateProjectApiKeyResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["apiKey", "secret"])?; - CreateProjectApiKeyResponse201ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectApiKeyResponse201ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateProjectApiKeyResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectApiKeyResponse201ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectApiKeyResponse201ApplicationJsonapiKey { - #[serde(rename = "apiKeyId")] - pub api_key_id: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "createdByAccountId")] - pub created_by_account_id: String, - #[serde(rename = "expiresAt")] - pub expires_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "permissions")] - pub permissions: Vec, - #[serde(rename = "permissionsUpdatedAt")] - pub permissions_updated_at: Option, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "revokedAt")] - pub revoked_at: Option, - } - impl<'de> serde::Deserialize<'de> - for CreateProjectApiKeyResponse201ApplicationJsonapiKey { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt", - ], - )?; - CreateProjectApiKeyResponse201ApplicationJsonapiKey::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectApiKeyResponse201ApplicationJsonapiKey::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateProjectApiKeyResponse201ApplicationJsonapiKey { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectApiKeyResponse201ApplicationJsonapiKey::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateProjectApiKeyResponse400ApplicationProblemPlusJson { - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentConflictProblem { + ProjectClosingProblem(Box), + WhatsappModeDedicatedProblem(Box), + SharedLineCapExceededProblem(Box), + AssignmentExistsProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectApiKeyResponse400ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectApiKeyResponse400ApplicationProblemPlusJson), + ((usize, u32), CreateWhatsappSharedLineAssignmentConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -60235,7 +62167,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentConflictProblem::ProjectClosingProblem( inner, ), )); @@ -60243,33 +62175,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("WHATSAPP_MODE_DEDICATED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("WhatsApp Mode Is Dedicated") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/whatsapp-mode-dedicated", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -60290,7 +62214,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentConflictProblem::WhatsappModeDedicatedProblem( inner, ), )); @@ -60298,33 +62222,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("SHARED_LINE_CAP_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Shared Line Cap Exceeded") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/shared-line-cap-exceeded", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappSharedLineAssignmentConflictProblem::SharedLineCapExceededProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ASSIGNMENT_EXISTS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment Exists") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/assignment-exists", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -60345,7 +62308,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentConflictProblem::AssignmentExistsProblem( inner, ), )); @@ -60364,33 +62327,41 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("WHATSAPP_MODE_DEDICATED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("WhatsApp Mode Is Dedicated") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/whatsapp-mode-dedicated", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("SHARED_LINE_CAP_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Shared Line Cap Exceeded") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/shared-line-cap-exceeded", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ASSIGNMENT_EXISTS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment Exists") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/assignment-exists") { (match_count, selected) = select(true); } @@ -60401,52 +62372,47 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentConflictProblem", ), ) } } } - impl serde::Serialize for CreateProjectApiKeyResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappSharedLineAssignmentConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappSharedLineAssignmentConflictProblem::WhatsappModeDedicatedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentConflictProblem::SharedLineCapExceededProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectApiKeyResponse400ApplicationProblemPlusJson::CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentConflictProblem::AssignmentExistsProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -60454,22 +62420,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -60478,22 +62438,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -60502,6 +62456,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -60513,36 +62483,66 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectApiKeyResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappModeDedicatedProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_mode_dedicated_de", + serialize_with = "const_whatsapp_mode_dedicated_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_mode_is_dedicated_de", + serialize_with = "const_whats_app_mode_is_dedicated_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_mode_dedicated_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_mode_dedicated_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateProjectApiKeyResponse403ApplicationProblemPlusJson { - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectApiKeyResponse403ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectApiKeyResponse403ApplicationProblemPlusJson), + ((usize, u32), CreateWhatsappSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -60556,25 +62556,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -60594,7 +62584,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -60611,18 +62601,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -60635,7 +62670,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -60643,7 +62678,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -60660,24 +62695,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -60698,7 +62725,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -60731,6 +62758,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -60749,51 +62786,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize for CreateProjectApiKeyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectApiKeyResponse403ApplicationProblemPlusJson::CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -60802,16 +62851,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -60820,23 +62869,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -60855,150 +62896,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectApiKeyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as CreateProjectApiKeyResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectApiKeyResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_api_key_limit_reached_0e20741b_de", - serialize_with = "const_api_key_limit_reached_0e20741b_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_api_key_limit_reached_de", - serialize_with = "const_api_key_limit_reached_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_api_key_limit_reached_de", - serialize_with = "const_https_photon_codes_docs_problems_api_key_limit_reached_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateProjectApiKeyResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateProjectApiKeyResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateProjectApiKeyResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateProjectApiKeyResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectApiKeyResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as CreateProjectApiKeyResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as CreateProjectApiKeyResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateProjectApiKeyResponse422ApplicationProblemPlusJson { - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectApiKeyResponse422ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectApiKeyResponse422ApplicationProblemPlusJson), + ((usize, u32), CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -61011,7 +62953,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -61019,7 +62961,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse422ApplicationProblemPlusJson::CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -61027,33 +62969,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -61074,7 +63008,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectApiKeyResponse422ApplicationProblemPlusJson::CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -61093,23 +63027,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -61120,49 +63052,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectApiKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for CreateProjectApiKeyResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectApiKeyResponse422ApplicationProblemPlusJson::CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectApiKeyResponse422ApplicationProblemPlusJson::CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -61170,23 +63094,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -61203,357 +63119,54 @@ pub mod types { if match_count == 1 { value.serialize(serializer) } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectApiKeyResponse422ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateProjectApiKeyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateProjectApiKeyResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectRequestApplicationJson { - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "slug")] - pub slug: String, - } - impl<'de> serde::Deserialize<'de> for CreateProjectRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["name", "slug"])?; - CreateProjectRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateProjectRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectResponse201ApplicationJson { - #[serde(rename = "agentProfile")] - pub agent_profile: CreateProjectResponse201ApplicationJsonagentProfile, - #[serde( - rename = "billingInitialization", - default, - skip_serializing_if = "Option::is_none", - )] - pub billing_initialization: Option< - CreateProjectResponse201ApplicationJsonbillingInitialization, - >, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "createdByAccountId")] - pub created_by_account_id: Option, - #[serde(rename = "createdByActorId")] - pub created_by_actor_id: Option, - #[serde(rename = "createdByActorKind")] - pub created_by_actor_kind: Option< - CreateProjectResponse201ApplicationJsoncreatedByActorKind, - >, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "slug")] - pub slug: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for CreateProjectResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "agentProfile", - "billingInitialization", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt", - ], - )?; - CreateProjectResponse201ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectResponse201ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateProjectResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectResponse201ApplicationJson::serialize(self, serializer) - } - } - pub use self::CommitAgentProfileAvatarResponse200ApplicationJson as CreateProjectResponse201ApplicationJsonagentProfile; - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateProjectResponse201ApplicationJsonbillingInitialization { - ///`pending` - Pending, - ///`retry_required` - RetryRequired, - ///`completed` - Completed, - ///`unknown` - Unknown, - /// A value this version of the client does not know, kept as received. - Unknown2(String), - } - impl CreateProjectResponse201ApplicationJsonbillingInitialization { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Pending => "pending", - Self::RetryRequired => "retry_required", - Self::Completed => "completed", - Self::Unknown => "unknown", - Self::Unknown2(value) => value, - } - } - } - impl std::fmt::Display - for CreateProjectResponse201ApplicationJsonbillingInitialization { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for CreateProjectResponse201ApplicationJsonbillingInitialization { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CreateProjectResponse201ApplicationJsonbillingInitialization { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "pending" => Ok(Self::Pending), - "retry_required" => Ok(Self::RetryRequired), - "completed" => Ok(Self::Completed), - "unknown" => Ok(Self::Unknown), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `pending`, `retry_required`, `completed`, `unknown`", - ), - ) - } - _ => Ok(Self::Unknown2(value)), - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateProjectResponse201ApplicationJsoncreatedByActorKind { - ///`account` - Account, - ///`service_identity` - ServiceIdentity, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl CreateProjectResponse201ApplicationJsoncreatedByActorKind { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Account => "account", - Self::ServiceIdentity => "service_identity", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for CreateProjectResponse201ApplicationJsoncreatedByActorKind { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for CreateProjectResponse201ApplicationJsoncreatedByActorKind { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CreateProjectResponse201ApplicationJsoncreatedByActorKind { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "account" => Ok(Self::Account), - "service_identity" => Ok(Self::ServiceIdentity), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `account`, `service_identity`", - ), - ) - } - _ => Ok(Self::Unknown(value)), + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem", + ), + ) } } } #[derive(Debug, Clone)] - pub enum CreateProjectResponse400ApplicationProblemPlusJson { - CreateProjectResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateProjectResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateProjectResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectResponse400ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectResponse400ApplicationProblemPlusJson), + ( + (usize, u32), + CreateWhatsappSharedLineAssignmentInternalServerErrorProblem, + ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -61574,7 +63187,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -61582,31 +63195,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -61627,7 +63234,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -61646,33 +63253,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/invalid-auth-context", ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -61683,76 +63280,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for CreateProjectResponse400ApplicationProblemPlusJson { + impl serde::Serialize + for CreateWhatsappSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse400ApplicationProblemPlusJson::CreateProjectResponse400ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -61760,22 +63323,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -61795,65 +63352,107 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateProjectResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateProjectResponse400ApplicationProblemPlusJsonVariant1; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateProjectResponse400ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateWhatsappSharedLineAssignmentRequest { + #[serde( + rename = "email", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub email: Option, + #[serde( + rename = "firstName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub first_name: Option, + #[serde(rename = "handle")] + pub handle: String, + #[serde( + rename = "lastName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub last_name: Option, + } + impl<'de> serde::Deserialize<'de> for CreateWhatsappSharedLineAssignmentRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["email", "firstName", "handle", "lastName"])?; + CreateWhatsappSharedLineAssignmentRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateWhatsappSharedLineAssignmentRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateWhatsappSharedLineAssignmentRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateWhatsappSharedLineAssignmentRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CreateProjectResponse403ApplicationProblemPlusJson { - CreateProjectResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateProjectResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + SharedLinePoolExhaustedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectResponse403ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectResponse403ApplicationProblemPlusJson), + ( + (usize, u32), + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem, + ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/billing-not-provisioned", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -61874,7 +63473,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse403ApplicationProblemPlusJson::CreateProjectResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -61882,27 +63481,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SHARED_LINE_POOL_EXHAUSTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Shared Line Pool Exhausted") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/shared-line-pool-exhausted", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -61915,7 +63512,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -61923,7 +63520,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::SharedLinePoolExhaustedProblem( inner, ), )); @@ -61931,31 +63528,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -61976,7 +63567,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse403ApplicationProblemPlusJson::CreateProjectResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -61994,29 +63585,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SHARED_LINE_POOL_EXHAUSTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Shared Line Pool Exhausted") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/shared-line-pool-exhausted", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -62027,51 +63623,46 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentServiceUnavailableProblem", ), ) } } } - impl serde::Serialize for CreateProjectResponse403ApplicationProblemPlusJson { + impl serde::Serialize + for CreateWhatsappSharedLineAssignmentServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectResponse403ApplicationProblemPlusJson::CreateProjectResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::SharedLinePoolExhaustedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse403ApplicationProblemPlusJson::CreateProjectResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappSharedLineAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -62080,16 +63671,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -62098,22 +63689,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -62133,195 +63718,29 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateProjectResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateProjectResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_slug_taken_de", - serialize_with = "const_slug_taken_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde(rename = "suggestion", default, skip_serializing_if = "Option::is_none")] - pub suggestion: Option, - #[serde( - rename = "title", - deserialize_with = "const_slug_already_taken_de", - serialize_with = "const_slug_already_taken_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_slug_taken_de", - serialize_with = "const_https_photon_codes_docs_problems_slug_taken_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateProjectResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "suggestion", - "title", - "type", - ], - )?; - CreateProjectResponse409ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateProjectResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateProjectResponse413ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_payload_too_large_de", - serialize_with = "const_payload_too_large_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_payload_too_large_f6476e55_de", - serialize_with = "const_payload_too_large_f6476e55_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_payload_too_large_de", - serialize_with = "const_https_photon_codes_docs_problems_payload_too_large_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateProjectResponse413ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateProjectResponse413ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateProjectResponse413ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateProjectResponse413ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateProjectResponse413ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateProjectResponse422ApplicationProblemPlusJson { - CreateProjectResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateProjectResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateProjectResponse422ApplicationProblemPlusJson { + for CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectResponse422ApplicationProblemPlusJson), + ( + (usize, u32), + CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem, + ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -62337,22 +63756,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -62373,7 +63786,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse422ApplicationProblemPlusJson::CreateProjectResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -62390,22 +63803,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -62426,7 +63833,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse422ApplicationProblemPlusJson::CreateProjectResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -62472,49 +63879,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for CreateProjectResponse422ApplicationProblemPlusJson { + impl serde::Serialize + for CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectResponse422ApplicationProblemPlusJson::CreateProjectResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse422ApplicationProblemPlusJson::CreateProjectResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -62522,22 +63922,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -62557,67 +63951,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateProjectResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateProjectResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateProjectResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateProjectResponse422ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as CreateProjectResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as CreateProjectResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateProjectResponse504ApplicationProblemPlusJson { - CreateProjectResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateProjectResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappVoipSenderBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateProjectResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateProjectResponse504ApplicationProblemPlusJson), + ((usize, u32), CreateWhatsappVoipSenderBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -62638,7 +64015,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse504ApplicationProblemPlusJson::CreateProjectResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -62646,31 +64023,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -62691,7 +64062,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateProjectResponse504ApplicationProblemPlusJson::CreateProjectResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -62710,21 +64081,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -62735,48 +64110,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderBadRequestProblem", ), ) } } } - impl serde::Serialize for CreateProjectResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateProjectResponse504ApplicationProblemPlusJson::CreateProjectResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateProjectResponse504ApplicationProblemPlusJson::CreateProjectResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -62785,22 +64154,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -62820,252 +64183,54 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateProjectResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateProjectResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateProjectResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentRequestApplicationJson { - #[serde( - rename = "email", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub email: Option, - #[serde( - rename = "firstName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub first_name: Option, - #[serde(rename = "handle")] - pub handle: String, - #[serde( - rename = "lastName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub last_name: Option, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["email", "firstName", "handle", "lastName"])?; - CreateSharedLineAssignmentRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateSharedLineAssignmentRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentResponse201ApplicationJson { - #[serde(rename = "assignedPhoneNumber")] - pub assigned_phone_number: String, - #[serde(rename = "assignmentId")] - pub assignment_id: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "email", default, skip_serializing_if = "Option::is_none")] - pub email: Option, - #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")] - pub first_name: Option, - #[serde(rename = "handle")] - pub handle: String, - #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")] - pub last_name: Option, - #[serde(rename = "platform")] - pub platform: CreateSharedLineAssignmentResponse201ApplicationJsonplatform, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "releasedAt", default, skip_serializing_if = "Option::is_none")] - pub released_at: Option, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "email", - "firstName", - "handle", - "lastName", - "platform", - "projectId", - "releasedAt", - "updatedAt", - ], - )?; - CreateSharedLineAssignmentResponse201ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateSharedLineAssignmentResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentResponse201ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateSharedLineAssignmentResponse201ApplicationJsonplatform { - ///`imessage` - Imessage, - ///`whatsapp` - Whatsapp, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl CreateSharedLineAssignmentResponse201ApplicationJsonplatform { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Imessage => "imessage", - Self::Whatsapp => "whatsapp", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for CreateSharedLineAssignmentResponse201ApplicationJsonplatform { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for CreateSharedLineAssignmentResponse201ApplicationJsonplatform { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse201ApplicationJsonplatform { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "imessage" => Ok(Self::Imessage), - "whatsapp" => Ok(Self::Whatsapp), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `imessage`, `whatsapp`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappVoipSenderConflictProblem { + ProjectClosingProblem(Box), + WhatsappAccountDisconnectingProblem(Box), + WhatsappAccountProvisioningProblem(Box), + WhatsappSenderConnectedProblem(Box), + WhatsappSenderProvisioningProblem(Box), + WhatsappVoipSourceReleasingProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -63086,7 +64251,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderConflictProblem::ProjectClosingProblem( inner, ), )); @@ -63094,33 +64259,213 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("WHATSAPP_ACCOUNT_DISCONNECTING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("WhatsApp Business Account Disconnecting") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/whatsapp-account-disconnecting", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderConflictProblem::WhatsappAccountDisconnectingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_ACCOUNT_PROVISIONING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Business Account Has Provisioning Numbers") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-account-provisioning", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderConflictProblem::WhatsappAccountProvisioningProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_SENDER_CONNECTED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Sender Connected") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-connected", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderConflictProblem::WhatsappSenderConnectedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_SENDER_PROVISIONING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Sender Provisioning") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-provisioning", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderConflictProblem::WhatsappSenderProvisioningProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_VOIP_SOURCE_RELEASING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp VoIP Source Releasing") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -63141,7 +64486,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderConflictProblem::WhatsappVoipSourceReleasingProblem( inner, ), )); @@ -63160,24 +64505,62 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("WHATSAPP_ACCOUNT_DISCONNECTING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("WhatsApp Business Account Disconnecting") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/whatsapp-account-disconnecting", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_ACCOUNT_PROVISIONING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Business Account Has Provisioning Numbers") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-account-provisioning", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_SENDER_CONNECTED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Sender Connected") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-connected", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_SENDER_PROVISIONING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Sender Provisioning") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-provisioning", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_VOIP_SOURCE_RELEASING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp VoIP Source Releasing") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", ) { (match_count, selected) = select(true); @@ -63189,51 +64572,70 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderConflictProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateWhatsappVoipSenderConflictProblem::WhatsappAccountDisconnectingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappVoipSenderConflictProblem::WhatsappAccountProvisioningProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappVoipSenderConflictProblem::WhatsappSenderConnectedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappVoipSenderConflictProblem::WhatsappSenderProvisioningProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderConflictProblem::WhatsappVoipSourceReleasingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -63242,24 +64644,70 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -63279,38 +64727,217 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappAccountDisconnectingProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_account_disconnecting_de", + serialize_with = "const_whatsapp_account_disconnecting_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_business_account_disconnecting_de", + serialize_with = "const_whats_app_business_account_disconnecting_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_disconnecting_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_disconnecting_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappAccountProvisioningProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_account_provisioning_de", + serialize_with = "const_whatsapp_account_provisioning_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_business_account_has_provisioning_numbers_de", + serialize_with = "const_whats_app_business_account_has_provisioning_numbers_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_provisioning_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_provisioning_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappSenderConnectedProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_sender_connected_de", + serialize_with = "const_whatsapp_sender_connected_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_sender_connected_de", + serialize_with = "const_whats_app_sender_connected_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_connected_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_connected_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappSenderProvisioningProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_sender_provisioning_de", + serialize_with = "const_whatsapp_sender_provisioning_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_sender_provisioning_de", + serialize_with = "const_whats_app_sender_provisioning_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_provisioning_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_provisioning_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappVoipSourceReleasingProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_voip_source_releasing_de", + serialize_with = "const_whatsapp_voip_source_releasing_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_vo_ip_source_releasing_de", + serialize_with = "const_whats_app_vo_ip_source_releasing_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_releasing_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_releasing_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappVoipSenderForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -63324,25 +64951,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -63362,7 +64979,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -63379,18 +64996,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -63403,7 +65065,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -63411,7 +65073,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappVoipSenderForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -63428,24 +65090,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -63466,7 +65120,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -63499,6 +65153,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -63517,54 +65181,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + CreateWhatsappVoipSenderForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + CreateWhatsappVoipSenderForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -63573,16 +65246,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -63591,25 +65264,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -63628,184 +65291,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), + pub enum CreateWhatsappVoipSenderGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IMESSAGE_MODE_DEDICATED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("iMessage Mode Is Dedicated") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/imessage-mode-dedicated", - )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_CAP_EXCEEDED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Cap Exceeded") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/shared-line-cap-exceeded", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -63826,7 +65355,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -63834,33 +65363,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ASSIGNMENT_EXISTS") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment Exists") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/assignment-exists", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -63881,7 +65402,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( + CreateWhatsappVoipSenderGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -63900,41 +65421,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IMESSAGE_MODE_DEDICATED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("iMessage Mode Is Dedicated") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/imessage-mode-dedicated", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_CAP_EXCEEDED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Cap Exceeded") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/shared-line-cap-exceeded", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("ASSIGNMENT_EXISTS") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment Exists") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/assignment-exists") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -63945,110 +65446,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( + CreateWhatsappVoipSenderGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -64056,25 +65488,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -64093,316 +65515,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_imessage_mode_dedicated_de", - serialize_with = "const_imessage_mode_dedicated_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_i_message_mode_is_dedicated_de", - serialize_with = "const_i_message_mode_is_dedicated_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_imessage_mode_dedicated_de", - serialize_with = "const_https_photon_codes_docs_problems_imessage_mode_dedicated_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2 { - #[serde( - rename = "code", - deserialize_with = "const_shared_line_cap_exceeded_de", - serialize_with = "const_shared_line_cap_exceeded_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_shared_line_cap_exceeded_fd01c974_de", - serialize_with = "const_shared_line_cap_exceeded_fd01c974_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_shared_line_cap_exceeded_de", - serialize_with = "const_https_photon_codes_docs_problems_shared_line_cap_exceeded_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3 { - #[serde( - rename = "code", - deserialize_with = "const_assignment_exists_de", - serialize_with = "const_assignment_exists_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_assignment_exists_4f2b9919_de", - serialize_with = "const_assignment_exists_4f2b9919_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_assignment_exists_de", - serialize_with = "const_https_photon_codes_docs_problems_assignment_exists_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappVoipSenderInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson { + for CreateWhatsappVoipSenderInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -64415,7 +65570,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -64423,7 +65578,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -64431,33 +65586,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -64478,7 +65625,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -64497,22 +65644,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -64524,52 +65671,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -64577,24 +65713,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -64614,59 +65742,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum CreateWhatsappVoipSenderNotFoundProblem { + WhatsappWabaNotConnectedProblem(Box), + WhatsappVoipSourceNotEligibleProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderNotFoundProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("WHATSAPP_WABA_NOT_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("WhatsApp Business Account Not Connected") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/whatsapp-waba-not-connected", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -64679,7 +65798,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -64687,7 +65806,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateWhatsappVoipSenderNotFoundProblem::WhatsappWabaNotConnectedProblem( inner, ), )); @@ -64695,33 +65814,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("WhatsApp VoIP Source Not Eligible") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -64742,7 +65853,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderNotFoundProblem::WhatsappVoipSourceNotEligibleProblem( inner, ), )); @@ -64761,22 +65872,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("WHATSAPP_WABA_NOT_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("WhatsApp Business Account Not Connected") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some( + "https://photon.codes/docs/problems/whatsapp-waba-not-connected", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("WhatsApp VoIP Source Not Eligible") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", ) { (match_count, selected) = select(true); @@ -64788,43 +65901,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderNotFoundProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + CreateWhatsappVoipSenderNotFoundProblem::WhatsappWabaNotConnectedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderNotFoundProblem::WhatsappVoipSourceNotEligibleProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -64833,24 +65945,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -64870,38 +65974,140 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappWabaNotConnectedProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_waba_not_connected_de", + serialize_with = "const_whatsapp_waba_not_connected_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_business_account_not_connected_de", + serialize_with = "const_whats_app_business_account_not_connected_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_waba_not_connected_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_waba_not_connected_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappVoipSourceNotEligibleProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_voip_source_not_eligible_de", + serialize_with = "const_whatsapp_voip_source_not_eligible_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_vo_ip_source_not_eligible_de", + serialize_with = "const_whats_app_vo_ip_source_not_eligible_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_not_eligible_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_not_eligible_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreateWhatsappVoipSenderRequest { + #[serde( + rename = "displayName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub display_name: Option, + #[serde(rename = "voipResourceId")] + pub voip_resource_id: String, + } + impl<'de> serde::Deserialize<'de> for CreateWhatsappVoipSenderRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["displayName", "voipResourceId"])?; + CreateWhatsappVoipSenderRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + CreateWhatsappVoipSenderRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for CreateWhatsappVoipSenderRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + CreateWhatsappVoipSenderRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum CreateWhatsappVoipSenderServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson { + for CreateWhatsappVoipSenderServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -64917,79 +66123,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_POOL_EXHAUSTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Pool Exhausted") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/shared-line-pool-exhausted", - )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -65010,7 +66153,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -65027,24 +66170,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -65065,7 +66200,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -65091,16 +66226,6 @@ pub mod types { == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/billing-not-provisioned") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_POOL_EXHAUSTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Pool Exhausted") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/shared-line-pool-exhausted", - ) || value.get("code").and_then(serde_json::Value::as_str) == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) @@ -65121,80 +66246,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( + CreateWhatsappVoipSenderServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -65203,24 +66290,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -65240,151 +66319,101 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderServiceUnavailableProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_shared_line_pool_exhausted_de", - serialize_with = "const_shared_line_pool_exhausted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_shared_line_pool_exhausted_fad84b44_de", - serialize_with = "const_shared_line_pool_exhausted_fad84b44_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_shared_line_pool_exhausted_de", - serialize_with = "const_https_photon_codes_docs_problems_shared_line_pool_exhausted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson { - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum CreateWhatsappVoipSenderUnprocessableEntityProblem { + ValidationFailedProblem(Box), + WhatsappDisplayNameUnavailableProblem( + Box, ), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson { + for CreateWhatsappVoipSenderUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), CreateWhatsappVoipSenderUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1109u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + CreateWhatsappVoipSenderUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_DISPLAY_NAME_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Display Name Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -65405,7 +66434,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderUnprocessableEntityProblem::WhatsappDisplayNameUnavailableProblem( inner, ), )); @@ -65413,33 +66442,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -65460,7 +66481,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -65479,21 +66500,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("WHATSAPP_DISPLAY_NAME_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("WhatsApp Display Name Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -65504,51 +66537,61 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union CreateWhatsappVoipSenderUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for CreateWhatsappVoipSenderUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + CreateWhatsappVoipSenderUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + CreateWhatsappVoipSenderUnprocessableEntityProblem::WhatsappDisplayNameUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + CreateWhatsappVoipSenderUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -65557,24 +66600,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -65594,36 +66629,67 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateVoiceProfileRequestApplicationJson { + pub struct WhatsappDisplayNameUnavailableProblem { #[serde( - rename = "mediaEncryption", + rename = "code", + deserialize_with = "const_whatsapp_display_name_unavailable_de", + serialize_with = "const_whatsapp_display_name_unavailable_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", default, skip_serializing_if = "Option::is_none", deserialize_with = "deserialize_request_field", )] - pub media_encryption: Option< - CreateVoiceProfileRequestApplicationJsonmediaEncryption, - >, - #[serde(rename = "name")] - pub name: String, + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", + rename = "title", + deserialize_with = "const_whats_app_display_name_unavailable_de", + serialize_with = "const_whats_app_display_name_unavailable_ser", )] - pub protocol: String, + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_display_name_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_display_name_unavailable_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct CreatedAppInstallationDelivery { + #[serde(rename = "clientId")] + pub client_id: String, + #[serde(rename = "clientSecret")] + pub client_secret: String, + #[serde(rename = "installationId")] + pub installation_id: String, + #[serde( + rename = "status", + deserialize_with = "const_created_de", + serialize_with = "const_created_ser", + )] + pub status: String, } - impl<'de> serde::Deserialize<'de> for CreateVoiceProfileRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for CreatedAppInstallationDelivery { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -65632,146 +66698,69 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["mediaEncryption", "name", "protocol"])?; - CreateVoiceProfileRequestApplicationJson::deserialize(value) + >(&value, &["clientId", "clientSecret", "installationId", "status"])?; + CreatedAppInstallationDelivery::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateVoiceProfileRequestApplicationJson::deserialize(deserializer) + CreatedAppInstallationDelivery::deserialize(deserializer) } } } - impl serde::Serialize for CreateVoiceProfileRequestApplicationJson { + impl serde::Serialize for CreatedAppInstallationDelivery { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateVoiceProfileRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateVoiceProfileRequestApplicationJsonmediaEncryption { - #[serde(rename = "auto")] - Auto, - #[serde(rename = "srtp")] - Srtp, - } - impl std::fmt::Display for CreateVoiceProfileRequestApplicationJsonmediaEncryption { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateVoiceProfileRequestApplicationJsonmediaEncryption::Auto => { - "auto" - } - CreateVoiceProfileRequestApplicationJsonmediaEncryption::Srtp => { - "srtp" - } - }, - ) + CreatedAppInstallationDelivery::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateVoiceProfileResponse201ApplicationJson { - #[serde(rename = "configuration")] - pub configuration: CreateVoiceProfileResponse201ApplicationJsonconfiguration, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "isDefault")] - pub is_default: bool, - #[serde(rename = "lineCount", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub line_count: i64, - #[serde(rename = "mediaEncryption")] - pub media_encryption: CreateVoiceProfileResponse201ApplicationJsonmediaEncryption, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "profileId")] - pub profile_id: String, - #[serde(rename = "projectId")] - pub project_id: String, + pub struct DedicatedProjectPlatformSettings { #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", + rename = "mode", + deserialize_with = "const_dedicated_de", + serialize_with = "const_dedicated_ser", )] - pub protocol: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub version: i64, + pub mode: String, } - impl<'de> serde::Deserialize<'de> for CreateVoiceProfileResponse201ApplicationJson { + impl<'de> serde::Deserialize<'de> for DedicatedProjectPlatformSettings { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version", - ], - )?; - CreateVoiceProfileResponse201ApplicationJson::deserialize(value) + super::support::check_known_members::(&value, &["mode"])?; + DedicatedProjectPlatformSettings::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateVoiceProfileResponse201ApplicationJson::deserialize(deserializer) + DedicatedProjectPlatformSettings::deserialize(deserializer) } } } - impl serde::Serialize for CreateVoiceProfileResponse201ApplicationJson { + impl serde::Serialize for DedicatedProjectPlatformSettings { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateVoiceProfileResponse201ApplicationJson::serialize(self, serializer) + DedicatedProjectPlatformSettings::serialize(self, serializer) } } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as CreateVoiceProfileResponse201ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as CreateVoiceProfileResponse201ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as CreateVoiceProfileResponse201ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as CreateVoiceProfileResponse201ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as CreateVoiceProfileResponse201ApplicationJsonmediaEncryption; #[derive(Debug, Clone)] - pub enum CreateVoiceProfileResponse403ApplicationProblemPlusJson { - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DeleteAccountForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateVoiceProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteAccountForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), CreateVoiceProfileResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), DeleteAccountForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -65784,24 +66773,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteAccountForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -65822,7 +66846,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse403ApplicationProblemPlusJson::CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + DeleteAccountForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -65830,27 +66854,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -65863,7 +66885,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -65871,7 +66893,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -65888,24 +66910,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -65926,9 +66940,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse403ApplicationProblemPlusJson::CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + DeleteAccountForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -65959,6 +66971,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -65977,51 +66999,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountForbiddenProblem", ), ) } } } - impl serde::Serialize for CreateVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DeleteAccountForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateVoiceProfileResponse403ApplicationProblemPlusJson::CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateVoiceProfileResponse403ApplicationProblemPlusJson::CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteAccountForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteAccountForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteAccountForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteAccountForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -66030,16 +67064,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -66048,23 +67082,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -66083,65 +67109,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteAccountForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateVoiceProfileResponse409ApplicationProblemPlusJson { - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeleteAccountGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateVoiceProfileResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteAccountGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), CreateVoiceProfileResponse409ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), DeleteAccountGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -66162,7 +67171,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse409ApplicationProblemPlusJson::CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( + DeleteAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -66170,33 +67179,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_REQUIRED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Required") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-default-profile-required", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -66217,7 +67218,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse409ApplicationProblemPlusJson::CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + DeleteAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -66236,23 +67237,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_DEFAULT_PROFILE_REQUIRED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Default Profile Required") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-default-profile-required", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -66263,49 +67262,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for CreateVoiceProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for DeleteAccountGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateVoiceProfileResponse409ApplicationProblemPlusJson::CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateVoiceProfileResponse409ApplicationProblemPlusJson::CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteAccountGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteAccountGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -66313,23 +67304,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -66348,116 +67331,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateVoiceProfileResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteAccountGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_voice_default_profile_required_de", - serialize_with = "const_voice_default_profile_required_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_default_profile_required_d6a6b311_de", - serialize_with = "const_voice_default_profile_required_d6a6b311_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_required_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_required_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as CreateVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeleteAccountInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateVoiceProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteAccountInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), CreateVoiceProfileResponse500ApplicationProblemPlusJson), + ((usize, u32), DeleteAccountInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -66471,16 +67363,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -66493,7 +67385,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -66501,7 +67393,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DeleteAccountInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -66518,24 +67410,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -66556,7 +67440,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse500ApplicationProblemPlusJson::CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + DeleteAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -66602,43 +67486,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteAccountInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for CreateVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for DeleteAccountInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateVoiceProfileResponse500ApplicationProblemPlusJson::CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + DeleteAccountInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -66646,22 +67528,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -66681,66 +67557,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteAccountInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateVoiceProfileResponse504ApplicationProblemPlusJson { - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeleteProjectBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateVoiceProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteProjectBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), CreateVoiceProfileResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), DeleteProjectBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -66761,7 +67619,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse504ApplicationProblemPlusJson::CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + DeleteProjectBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -66769,33 +67627,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -66816,7 +67666,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateVoiceProfileResponse504ApplicationProblemPlusJson::CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + DeleteProjectBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -66835,21 +67685,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -66860,48 +67714,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteProjectBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteProjectBadRequestProblem", ), ) } } } - impl serde::Serialize for CreateVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for DeleteProjectBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateVoiceProfileResponse504ApplicationProblemPlusJson::CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateVoiceProfileResponse504ApplicationProblemPlusJson::CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteProjectBadRequestProblem::IdempotencyKeyRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteProjectBadRequestProblem::IdempotencyKeyInvalidProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -66910,22 +67758,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -66945,122 +67787,104 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteProjectBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWebhookDestinationRequestApplicationJson { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde( - rename = "description", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub description: Option, - #[serde(rename = "enabledEvents")] - pub enabled_events: CreateWebhookDestinationRequestApplicationJsonenabledEvents, - #[serde(rename = "name")] - pub name: String, - ///Default: `enabled`. - #[serde( - rename = "status", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub status: Option, - ///HTTPS URL without credentials or a fragment. - #[serde(rename = "url")] - pub url: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "description", - "enabledEvents", - "name", - "status", - "url", - ], - )?; - CreateWebhookDestinationRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateWebhookDestinationRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for CreateWebhookDestinationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWebhookDestinationRequestApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum CreateWebhookDestinationRequestApplicationJsonenabledEvents { - CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( - Box>, - ), - CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( - Box>, - ), + pub enum DeleteProjectForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationRequestApplicationJsonenabledEvents { + impl<'de> serde::Deserialize<'de> for DeleteProjectForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateWebhookDestinationRequestApplicationJsonenabledEvents, - ), - >; - let pass = |strict: bool| -> (usize, Selected) { + type Selected = Option<((usize, u32), DeleteProjectForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 } else { - serde_json::from_value::>>(candidate) - .ok() + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteProjectForbiddenProblem::ForbiddenProblem(inner), + )); } - })() { + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 800u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -67068,30 +67892,46 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationRequestApplicationJsonenabledEvents::CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( + DeleteProjectForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -67099,60 +67939,188 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationRequestApplicationJsonenabledEvents::CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( + DeleteProjectForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteProjectForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); } - if match_count >= 1 { + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union CreateWebhookDestinationRequestApplicationJsonenabledEvents", + "data must match exactly one typed variant of union DeleteProjectForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match at least one typed variant of union CreateWebhookDestinationRequestApplicationJsonenabledEvents", + "data must match exactly one typed variant of union DeleteProjectForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWebhookDestinationRequestApplicationJsonenabledEvents { + impl serde::Serialize for DeleteProjectForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWebhookDestinationRequestApplicationJsonenabledEvents::CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWebhookDestinationRequestApplicationJsonenabledEvents::CreateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteProjectForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteProjectForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteProjectForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteProjectForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option>> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate) + serde_json::from_value::< + Box, + >(candidate) .ok() } })() @@ -67160,15 +68128,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate).ok() + serde_json::from_value::>(candidate) + .ok() } })() .is_some() @@ -67181,122 +68150,66 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match at least one typed variant of union CreateWebhookDestinationRequestApplicationJsonenabledEvents", + "serialized value must match exactly one typed variant of union DeleteProjectForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateWebhookDestinationRequestApplicationJsonstatus { - #[serde(rename = "enabled")] - Enabled, - #[serde(rename = "disabled")] - Disabled, - } - impl std::fmt::Display for CreateWebhookDestinationRequestApplicationJsonstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - CreateWebhookDestinationRequestApplicationJsonstatus::Enabled => { - "enabled" - } - CreateWebhookDestinationRequestApplicationJsonstatus::Disabled => { - "disabled" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWebhookDestinationResponse201ApplicationJson { - #[serde(rename = "destination")] - pub destination: CreateWebhookDestinationResponse201ApplicationJsondestination, - #[serde(rename = "signingSecret")] - pub signing_secret: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["destination", "signingSecret"])?; - CreateWebhookDestinationResponse201ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - CreateWebhookDestinationResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateWebhookDestinationResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWebhookDestinationResponse201ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents { - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant0( - Box>, - ), - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant1( - Box>, - ), + pub enum DeleteProjectGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents { + impl<'de> serde::Deserialize<'de> for DeleteProjectGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents, - ), - >; - let pass = |strict: bool| -> (usize, Selected) { + type Selected = Option<((usize, u32), DeleteProjectGatewayTimeoutProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 800u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -67304,30 +68217,46 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents::CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant0( + DeleteProjectGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); } } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -67335,7 +68264,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents::CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant1( + DeleteProjectGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -67343,52 +68272,77 @@ pub mod types { } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + { + (match_count, selected) = select(true); } - if match_count >= 1 { + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents", + "data must match exactly one typed variant of union DeleteProjectGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match at least one typed variant of union CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents", + "data must match exactly one typed variant of union DeleteProjectGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents { + impl serde::Serialize for DeleteProjectGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents::CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents::CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEventsVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteProjectGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteProjectGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -67396,15 +68350,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate).ok() + serde_json::from_value::>(candidate) + .ok() } })() .is_some() @@ -67417,254 +68372,55 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { - Err( - serde::ser::Error::custom( - "serialized value must match at least one typed variant of union CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents", - ), - ) - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum CreateWebhookDestinationResponse201ApplicationJsondestinationstatus { - ///`enabled` - Enabled, - ///`disabled` - Disabled, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl CreateWebhookDestinationResponse201ApplicationJsondestinationstatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Enabled => "enabled", - Self::Disabled => "disabled", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for CreateWebhookDestinationResponse201ApplicationJsondestinationstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for CreateWebhookDestinationResponse201ApplicationJsondestinationstatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationResponse201ApplicationJsondestinationstatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "enabled" => Ok(Self::Enabled), - "disabled" => Ok(Self::Disabled), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `enabled`, `disabled`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWebhookDestinationResponse201ApplicationJsondestination { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "destinationId")] - pub destination_id: String, - #[serde(rename = "enabledEvents")] - pub enabled_events: CreateWebhookDestinationResponse201ApplicationJsondestinationenabledEvents, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "status")] - pub status: CreateWebhookDestinationResponse201ApplicationJsondestinationstatus, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "url")] - pub url: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationResponse201ApplicationJsondestination { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url", - ], - )?; - CreateWebhookDestinationResponse201ApplicationJsondestination::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWebhookDestinationResponse201ApplicationJsondestination::deserialize( - deserializer, + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union DeleteProjectGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for CreateWebhookDestinationResponse201ApplicationJsondestination { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWebhookDestinationResponse201ApplicationJsondestination::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as CreateWebhookDestinationResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateWebhookDestinationResponse403ApplicationProblemPlusJson { - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DeleteProjectUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWebhookDestinationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteProjectUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWebhookDestinationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteProjectUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -67677,7 +68433,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -67685,7 +68441,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -67693,33 +68449,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -67740,7 +68488,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + DeleteProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -67758,29 +68506,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -67791,73 +68534,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteProjectUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteProjectUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for CreateWebhookDestinationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DeleteProjectUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWebhookDestinationResponse403ApplicationProblemPlusJson::CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + DeleteProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -67865,24 +68576,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -67902,212 +68605,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWebhookDestinationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteProjectUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateWebhookDestinationResponse422ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateWebhookDestinationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateWebhookDestinationResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateWebhookDestinationResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappSharedLineAssignmentRequestApplicationJson { - #[serde( - rename = "email", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub email: Option, - #[serde( - rename = "firstName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub first_name: Option, - #[serde(rename = "handle")] - pub handle: String, - #[serde( - rename = "lastName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub last_name: Option, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["email", "firstName", "handle", "lastName"])?; - CreateWhatsappSharedLineAssignmentRequestApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappSharedLineAssignmentRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for CreateWhatsappSharedLineAssignmentRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappSharedLineAssignmentRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappSharedLineAssignmentResponse201ApplicationJson { - #[serde(rename = "assignedPhoneNumber")] - pub assigned_phone_number: String, - #[serde(rename = "assignmentId")] - pub assignment_id: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "email", default, skip_serializing_if = "Option::is_none")] - pub email: Option, - #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")] - pub first_name: Option, - #[serde(rename = "handle")] - pub handle: String, - #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")] - pub last_name: Option, - #[serde(rename = "platform")] - pub platform: CreateWhatsappSharedLineAssignmentResponse201ApplicationJsonplatform, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "releasedAt", default, skip_serializing_if = "Option::is_none")] - pub released_at: Option, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "assignedPhoneNumber", - "assignmentId", - "createdAt", - "email", - "firstName", - "handle", - "lastName", - "platform", - "projectId", - "releasedAt", - "updatedAt", - ], - )?; - CreateWhatsappSharedLineAssignmentResponse201ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappSharedLineAssignmentResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappSharedLineAssignmentResponse201ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as CreateWhatsappSharedLineAssignmentResponse201ApplicationJsonplatform; #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + pub enum DeleteVoiceProfileConflictProblem { + VoiceProfileInUseProblem(Box), + VoiceDefaultProfileDeletionForbiddenProblem( + Box, ), + VoiceProfileVersionConflictProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), DeleteVoiceProfileConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VOICE_PROFILE_IN_USE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Voice Profile In Use") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/voice-profile-in-use", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -68128,7 +68670,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileConflictProblem::VoiceProfileInUseProblem( inner, ), )); @@ -68136,33 +68678,74 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Default Profile Deletion Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden", )) .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteVoiceProfileConflictProblem::VoiceDefaultProfileDeletionForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -68183,7 +68766,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -68202,24 +68785,32 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VOICE_PROFILE_IN_USE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Voice Profile In Use") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/voice-profile-in-use") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Default Profile Deletion Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", ) { (match_count, selected) = select(true); @@ -68231,51 +68822,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileConflictProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileConflictProblem::VoiceProfileInUseProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileConflictProblem::VoiceDefaultProfileDeletionForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -68284,24 +68869,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, >(candidate) .ok() } @@ -68321,43 +68916,102 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceProfileInUseProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_profile_in_use_de", + serialize_with = "const_voice_profile_in_use_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_profile_in_use_38ccc257_de", + serialize_with = "const_voice_profile_in_use_38ccc257_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_in_use_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_profile_in_use_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceDefaultProfileDeletionForbiddenProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_default_profile_deletion_forbidden_de", + serialize_with = "const_voice_default_profile_deletion_forbidden_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_default_profile_deletion_forbidden_7ab56977_de", + serialize_with = "const_voice_default_profile_deletion_forbidden_7ab56977_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_deletion_forbidden_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_default_profile_deletion_forbidden_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum DeleteVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), DeleteVoiceProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -68370,24 +69024,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteVoiceProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -68408,7 +69097,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -68416,27 +69105,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -68449,7 +69136,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -68457,7 +69144,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -68474,24 +69161,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -68512,7 +69191,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -68545,6 +69224,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -68563,54 +69252,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteVoiceProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -68619,16 +69317,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -68637,25 +69335,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -68674,82 +69362,68 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum DeleteVoiceProfileForceInput { + #[serde(rename = "true")] + True, + #[serde(rename = "false")] + False, + } + impl std::fmt::Display for DeleteVoiceProfileForceInput { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + DeleteVoiceProfileForceInput::True => "true", + DeleteVoiceProfileForceInput::False => "false", + }, + ) + } + } #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - ), - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - ), + pub enum DeleteVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -68770,7 +69444,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -68778,33 +69452,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_MODE_DEDICATED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Mode Is Dedicated") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-mode-dedicated", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -68825,41 +69491,163 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union DeleteVoiceProfileGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union DeleteVoiceProfileGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for DeleteVoiceProfileGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + DeleteVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union DeleteVoiceProfileGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum DeleteVoiceProfileInboundConflictProblem { + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), + } + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileInboundConflictProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), DeleteVoiceProfileInboundConflictProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_CAP_EXCEEDED") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Cap Exceeded") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/shared-line-cap-exceeded", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -68880,7 +69668,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -68888,33 +69676,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ASSIGNMENT_EXISTS") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment Exists") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/assignment-exists", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -68935,7 +69715,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( + DeleteVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ), )); @@ -68954,41 +69734,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_MODE_DEDICATED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Mode Is Dedicated") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-mode-dedicated", - ) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_CAP_EXCEEDED") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Cap Exceeded") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/shared-line-cap-exceeded", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("ASSIGNMENT_EXISTS") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment Exists") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/assignment-exists") { (match_count, selected) = select(true); } @@ -68999,109 +69763,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundConflictProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileInboundConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3( + DeleteVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -69110,24 +69807,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -69147,156 +69836,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_mode_dedicated_de", - serialize_with = "const_whatsapp_mode_dedicated_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_mode_is_dedicated_de", - serialize_with = "const_whats_app_mode_is_dedicated_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_mode_dedicated_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_mode_dedicated_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2 as CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant2; - pub use self::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3 as CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonVariant3; #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum DeleteVoiceProfileInboundForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileInboundForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileInboundForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteVoiceProfileInboundForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -69309,7 +69937,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -69317,7 +69945,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -69325,33 +69953,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -69372,7 +70039,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -69390,24 +70057,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -69418,51 +70100,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileInboundForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileInboundForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -69471,24 +70165,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -69497,6 +70183,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -69508,61 +70210,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum DeleteVoiceProfileInboundGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + for DeleteVoiceProfileInboundGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileInboundGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -69575,7 +70267,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -69583,7 +70275,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DeleteVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -69591,33 +70283,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -69638,7 +70322,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -69657,23 +70341,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -69684,44 +70366,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileInboundGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DeleteVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -69729,25 +70408,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -69766,132 +70435,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - ), - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - ), - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum DeleteVoiceProfileInboundInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson { + for DeleteVoiceProfileInboundInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileInboundInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_POOL_EXHAUSTED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Pool Exhausted") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/shared-line-pool-exhausted", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -69912,7 +70498,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -69920,33 +70506,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -69967,7 +70545,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -69986,32 +70564,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SHARED_LINE_POOL_EXHAUSTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Shared Line Pool Exhausted") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/shared-line-pool-exhausted", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -70023,55 +70591,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileInboundInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -70079,50 +70633,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -70142,73 +70662,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant0; - pub use self::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1 as CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum DeleteVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -70229,7 +70724,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -70237,33 +70732,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -70284,7 +70771,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -70303,21 +70790,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -70328,52 +70817,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -70381,148 +70859,79 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderRequestApplicationJson { - #[serde( - rename = "displayName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub display_name: Option, - #[serde(rename = "voipResourceId")] - pub voip_resource_id: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["displayName", "voipResourceId"])?; - CreateWhatsappVoipSenderRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) } else { - CreateWhatsappVoipSenderRequestApplicationJson::deserialize(deserializer) + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union DeleteVoiceProfileInternalServerErrorProblem", + ), + ) } } } - impl serde::Serialize for CreateWhatsappVoipSenderRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderRequestApplicationJson::serialize(self, serializer) - } - } - pub use self::ConnectWhatsappBusinessResponse202ApplicationJson as CreateWhatsappVoipSenderResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as CreateWhatsappVoipSenderResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as CreateWhatsappVoipSenderResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as CreateWhatsappVoipSenderResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeleteVoiceProfileOutboundConflictProblem { + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundNotConfiguredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileOutboundConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileOutboundConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -70543,7 +70952,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -70551,33 +70960,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Outbound Not Configured") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-outbound-not-configured", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -70598,7 +70999,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileOutboundConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ), )); @@ -70617,24 +71018,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/voice-profile-version-conflict", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Outbound Not Configured") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-outbound-not-configured", ) { (match_count, selected) = select(true); @@ -70646,51 +71047,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundConflictProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileOutboundConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileOutboundConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -70699,24 +71091,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -70736,39 +71120,65 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonVariant1; - pub use self::ConnectEmailDomainResponse402ApplicationProblemPlusJson as CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct VoiceOutboundNotConfiguredProblem { + #[serde( + rename = "code", + deserialize_with = "const_voice_outbound_not_configured_de", + serialize_with = "const_voice_outbound_not_configured_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_outbound_not_configured_f981c427_de", + serialize_with = "const_voice_outbound_not_configured_f981c427_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_not_configured_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_not_configured_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DeleteVoiceProfileOutboundForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileOutboundForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileOutboundForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -70782,25 +71192,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -70820,7 +71220,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -70837,18 +71237,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteVoiceProfileOutboundForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -70861,7 +71306,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -70869,7 +71314,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteVoiceProfileOutboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -70886,24 +71331,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -70924,7 +71361,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileOutboundForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -70957,6 +71394,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -70975,54 +71422,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileOutboundForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteVoiceProfileOutboundForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DeleteVoiceProfileOutboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2( + DeleteVoiceProfileOutboundForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -71031,16 +71487,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -71049,25 +71505,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -71086,68 +71532,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeleteVoiceProfileOutboundGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson { + for DeleteVoiceProfileOutboundGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileOutboundGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_WABA_NOT_CONNECTED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Not Connected") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-waba-not-connected", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -71168,7 +71597,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -71176,33 +71605,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp VoIP Source Not Eligible") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -71223,7 +71644,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileOutboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -71242,25 +71663,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_WABA_NOT_CONNECTED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Not Connected") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-waba-not-connected", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp VoIP Source Not Eligible") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -71271,52 +71688,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileOutboundGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0( + DeleteVoiceProfileOutboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1( + DeleteVoiceProfileOutboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -71324,25 +71730,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -71361,464 +71757,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundGatewayTimeoutProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_waba_not_connected_de", - serialize_with = "const_whatsapp_waba_not_connected_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_business_account_not_connected_de", - serialize_with = "const_whats_app_business_account_not_connected_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_waba_not_connected_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_waba_not_connected_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_voip_source_not_eligible_de", - serialize_with = "const_whatsapp_voip_source_not_eligible_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_vo_ip_source_not_eligible_de", - serialize_with = "const_whats_app_vo_ip_source_not_eligible_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_not_eligible_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_not_eligible_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4( - Box, - ), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5( - Box, - ), + pub enum DeleteVoiceProfileOutboundInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson { + for DeleteVoiceProfileOutboundInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteVoiceProfileOutboundInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_DISCONNECTING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Disconnecting") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-account-disconnecting", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_PROVISIONING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Has Provisioning Numbers") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-account-provisioning", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_CONNECTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Connected") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-connected", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_PROVISIONING") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Provisioning") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-provisioning", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate) .ok() } @@ -71839,7 +71820,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4( + DeleteVoiceProfileOutboundInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -71847,33 +71828,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VOIP_SOURCE_RELEASING") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp VoIP Source Releasing") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate) .ok() } @@ -71894,7 +71867,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5( + DeleteVoiceProfileOutboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -71913,62 +71886,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_DISCONNECTING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Disconnecting") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-account-disconnecting", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_PROVISIONING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Has Provisioning Numbers") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-account-provisioning", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_CONNECTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Connected") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-connected", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_PROVISIONING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Provisioning") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-provisioning", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VOIP_SOURCE_RELEASING") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp VoIP Source Releasing") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-voip-source-releasing", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -71980,168 +71913,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteVoiceProfileOutboundInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson { + impl serde::Serialize for DeleteVoiceProfileOutboundInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3( + DeleteVoiceProfileOutboundInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5( + DeleteVoiceProfileOutboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -72149,24 +71955,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate) .ok() } @@ -72183,387 +71981,27 @@ pub mod types { } if match_count == 1 { value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_account_disconnecting_de", - serialize_with = "const_whatsapp_account_disconnecting_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_business_account_disconnecting_de", - serialize_with = "const_whats_app_business_account_disconnecting_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_disconnecting_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_disconnecting_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_account_provisioning_de", - serialize_with = "const_whatsapp_account_provisioning_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_business_account_has_provisioning_numbers_de", - serialize_with = "const_whats_app_business_account_has_provisioning_numbers_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_provisioning_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_account_provisioning_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_sender_connected_de", - serialize_with = "const_whatsapp_sender_connected_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_sender_connected_de", - serialize_with = "const_whats_app_sender_connected_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_connected_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_connected_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_sender_provisioning_de", - serialize_with = "const_whatsapp_sender_provisioning_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_sender_provisioning_de", - serialize_with = "const_whats_app_sender_provisioning_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_provisioning_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_sender_provisioning_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4::serialize( - self, - serializer, - ) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundInternalServerErrorProblem", + ), + ) + } } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_voip_source_releasing_de", - serialize_with = "const_whatsapp_voip_source_releasing_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_vo_ip_source_releasing_de", - serialize_with = "const_whats_app_vo_ip_source_releasing_ser", - )] - pub title: String, + pub struct DeleteVoiceProfileOutboundResponse { + #[serde(rename = "outbound")] + pub outbound: Option<()>, #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_releasing_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_voip_source_releasing_ser", + rename = "profileVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub r#type: String, + pub profile_version: i64, } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5 { + impl<'de> serde::Deserialize<'de> for DeleteVoiceProfileOutboundResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -72572,99 +72010,105 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5::deserialize( - value, - ) + >(&value, &["outbound", "profileVersion"])?; + DeleteVoiceProfileOutboundResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5::deserialize( - deserializer, - ) + DeleteVoiceProfileOutboundResponse::deserialize(deserializer) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5 { + impl serde::Serialize for DeleteVoiceProfileOutboundResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant5::serialize( - self, - serializer, - ) + DeleteVoiceProfileOutboundResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DeleteWebhookDestinationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeleteWebhookDestinationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), DeleteWebhookDestinationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteWebhookDestinationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -72677,7 +72121,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -72685,7 +72129,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0( + DeleteWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -72693,33 +72137,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_DISPLAY_NAME_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Display Name Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -72740,7 +72176,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1( + DeleteWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -72748,33 +72184,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -72795,7 +72223,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2( + DeleteWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -72813,34 +72241,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_DISPLAY_NAME_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Display Name Unavailable") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-display-name-unavailable", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -72851,54 +72284,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteWebhookDestinationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeleteWebhookDestinationForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson { + impl serde::Serialize for DeleteWebhookDestinationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0( + DeleteWebhookDestinationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeleteWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1( + DeleteWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2( + DeleteWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -72907,24 +72349,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -72933,25 +72367,239 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union DeleteWebhookDestinationForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum DeleteWebhookDestinationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> for DeleteWebhookDestinationGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), DeleteWebhookDestinationGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DeleteWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union DeleteWebhookDestinationGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union DeleteWebhookDestinationGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for DeleteWebhookDestinationGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + DeleteWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeleteWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) .ok() } })() @@ -72970,54 +72618,120 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeleteWebhookDestinationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant0; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_display_name_unavailable_de", - serialize_with = "const_whatsapp_display_name_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, + pub struct DeprecatedWebhookApiVersion { + #[serde(rename = "retirement")] + pub retirement: WebhookApiVersionRetirement, + #[serde(rename = "selectable")] + pub selectable: bool, #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", + rename = "status", + deserialize_with = "const_deprecated_de", + serialize_with = "const_deprecated_ser", )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, + pub status: String, + #[serde(rename = "successor")] + pub successor: Option, + #[serde(rename = "version")] + pub version: Date, + } + impl<'de> serde::Deserialize<'de> for DeprecatedWebhookApiVersion { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &["retirement", "selectable", "status", "successor", "version"], + )?; + DeprecatedWebhookApiVersion::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + DeprecatedWebhookApiVersion::deserialize(deserializer) + } + } + } + impl serde::Serialize for DeprecatedWebhookApiVersion { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + DeprecatedWebhookApiVersion::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WebhookApiVersionRetirement { + #[serde(rename = "migrationGuide")] + pub migration_guide: String, + #[serde(rename = "reason")] + pub reason: String, + } + impl<'de> serde::Deserialize<'de> for WebhookApiVersionRetirement { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["migrationGuide", "reason"])?; + WebhookApiVersionRetirement::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + WebhookApiVersionRetirement::deserialize(deserializer) + } + } + } + impl serde::Serialize for WebhookApiVersionRetirement { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WebhookApiVersionRetirement::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct DeprecatedWebhookEventCatalog { + #[serde(rename = "apiVersion")] + pub api_version: Date, #[serde( - rename = "title", - deserialize_with = "const_whats_app_display_name_unavailable_de", - serialize_with = "const_whats_app_display_name_unavailable_ser", + rename = "contractNamespace", + deserialize_with = "const_photon_hq_contracts_de", + serialize_with = "const_photon_hq_contracts_ser", )] - pub title: String, + pub contract_namespace: String, + #[serde(rename = "events")] + pub events: Vec, + #[serde(rename = "packageVersion")] + pub package_version: String, + #[serde(rename = "retirement")] + pub retirement: WebhookApiVersionRetirement, + #[serde(rename = "selectable")] + pub selectable: bool, #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_display_name_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_display_name_unavailable_ser", + rename = "status", + deserialize_with = "const_deprecated_de", + serialize_with = "const_deprecated_ser", )] - pub r#type: String, + pub status: String, + #[serde(rename = "successor")] + pub successor: Option, } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1 { + impl<'de> serde::Deserialize<'de> for DeprecatedWebhookEventCatalog { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -73029,83 +72743,212 @@ pub mod types { >( &value, &[ - "code", - "detail", - "instance", - "remediation", - "requestId", + "apiVersion", + "contractNamespace", + "events", + "packageVersion", + "retirement", + "selectable", "status", - "title", - "type", + "successor", ], )?; - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) + DeprecatedWebhookEventCatalog::deserialize(value) .map_err(serde::de::Error::custom) } else { - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) + DeprecatedWebhookEventCatalog::deserialize(deserializer) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1 { + impl serde::Serialize for DeprecatedWebhookEventCatalog { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) + DeprecatedWebhookEventCatalog::serialize(self, serializer) } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WebhookEventType { + #[serde(rename = "audience")] + pub audience: WebhookEventTypeAudience, + #[serde(rename = "description")] + pub description: String, + #[serde( + rename = "schemaProfile", + deserialize_with = "const_reader_de", + serialize_with = "const_reader_ser", + )] + pub schema_profile: String, + #[serde(rename = "schemaUrl")] + pub schema_url: String, + #[serde(rename = "type")] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for WebhookEventType { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &["audience", "description", "schemaProfile", "schemaUrl", "type"], + )?; + WebhookEventType::deserialize(value).map_err(serde::de::Error::custom) + } else { + WebhookEventType::deserialize(deserializer) + } + } + } + impl serde::Serialize for WebhookEventType { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WebhookEventType::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum WebhookEventTypeAudience { + ///`agent` + Agent, + ///`infrastructure` + Infrastructure, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl WebhookEventTypeAudience { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Agent => "agent", + Self::Infrastructure => "infrastructure", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for WebhookEventTypeAudience { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for WebhookEventTypeAudience { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for WebhookEventTypeAudience { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "agent" => Ok(Self::Agent), + "infrastructure" => Ok(Self::Infrastructure), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `agent`, `infrastructure`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct DeviceAuthorizeResponse { + ///Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. + #[serde(rename = "device_code")] + pub device_code: String, + ///Lifetime of the device code and user code, in seconds. + #[serde(rename = "expires_in")] + pub expires_in: f64, + ///Minimum number of seconds to wait between token polling requests. + #[serde(rename = "interval")] + pub interval: f64, + ///Code the user enters at verification_uri to authorize this device. + #[serde(rename = "user_code")] + pub user_code: String, + ///Browser URL where the user enters user_code and authorizes the device. + #[serde(rename = "verification_uri")] + pub verification_uri: String, + ///Browser URL with user_code included, ready to open or encode as a QR code. + #[serde(rename = "verification_uri_complete")] + pub verification_uri_complete: String, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct DeviceCodeGrantRequest { + ///device_code returned by POST /v1/auth/device/code. Required for a device-code grant. + #[serde(rename = "device_code")] + pub device_code: String, + ///Selects the device authorization grant to poll or exchange a device code. + #[serde( + rename = "grant_type", + deserialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_de", + serialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_ser", + )] + pub grant_type: String, + /// Members the schema does not declare, kept as received. + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct DeviceTokenBadRequestResponse { + ///OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. + #[serde(rename = "error")] + pub error: String, + ///Optional human-readable explanation of the OAuth error. + #[serde( + rename = "error_description", + default, + skip_serializing_if = "Option::is_none", + )] + pub error_description: Option, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DeviceTokenRequest { + DeviceCodeGrantRequest(Box), + RefreshTokenGrantRequest(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DeviceTokenRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), DeviceTokenRequest)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + || value.get("grant_type").and_then(serde_json::Value::as_str) + == Some("urn:ietf:params:oauth:grant-type:device_code")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -73118,7 +72961,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1042u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -73126,41 +72969,23 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ), + DeviceTokenRequest::DeviceCodeGrantRequest(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + || value.get("grant_type").and_then(serde_json::Value::as_str) + == Some("refresh_token")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73173,7 +72998,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1042u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -73181,9 +73006,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1( - inner, - ), + DeviceTokenRequest::RefreshTokenGrantRequest(inner), )); } } @@ -73199,24 +73022,10 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + if value.get("grant_type").and_then(serde_json::Value::as_str) + == Some("urn:ietf:params:oauth:grant-type:device_code") + || value.get("grant_type").and_then(serde_json::Value::as_str) + == Some("refresh_token") { (match_count, selected) = select(true); } @@ -73227,44 +73036,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeviceTokenRequest", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DeviceTokenRequest", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson { + impl serde::Serialize for DeviceTokenRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DeviceTokenRequest::DeviceCodeGrantRequest(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DeviceTokenRequest::RefreshTokenGrantRequest(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -73272,24 +73078,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73309,68 +73107,109 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DeviceTokenRequest", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct RefreshTokenGrantRequest { + ///Selects the refresh-token grant to obtain a new token pair. + #[serde( + rename = "grant_type", + deserialize_with = "const_refresh_token_de", + serialize_with = "const_refresh_token_ser", + )] + pub grant_type: String, + ///Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. + #[serde(rename = "refresh_token")] + pub refresh_token: String, + /// Members the schema does not declare, kept as received. + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct DeviceTokenResponse { + ///Bearer access token for authenticated Photon API requests. + #[serde(rename = "access_token")] + pub access_token: String, + ///Authentication method used for the device login, when returned. Omitted for refresh grants. + #[serde( + rename = "authentication_method", + default, + skip_serializing_if = "Option::is_none", + )] + pub authentication_method: Option, + ///Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. + #[serde(rename = "expires_in")] + pub expires_in: f64, + ///Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. + #[serde(rename = "refresh_token")] + pub refresh_token: String, + #[serde(rename = "user")] + pub user: DeviceTokenResponseUser, + #[serde(flatten)] + pub additional: BTreeMap, + } + ///Profile of the authenticated user. + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct DeviceTokenResponseUser { + ///Authenticated user's email address. + #[serde(rename = "email")] + pub email: String, + ///User's first name, or null when not set. + #[serde(rename = "first_name")] + pub first_name: Option, + ///Authenticated user's identity identifier; distinct from the Photon Account ID. + #[serde(rename = "id")] + pub id: String, + ///User's last name, or null when not set. + #[serde(rename = "last_name")] + pub last_name: Option, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisableOrganizationSsoBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DisableOrganizationSsoBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), DisableOrganizationSsoBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -73391,7 +73230,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -73399,33 +73238,119 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DisableOrganizationSsoBadRequestProblem::InvalidArgumentProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DisableOrganizationSsoBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73446,7 +73371,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -73465,22 +73390,40 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/idempotency-key-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", ) { (match_count, selected) = select(true); @@ -73492,51 +73435,80 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoBadRequestProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoBadRequestProblem::InvalidReturnToProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DisableOrganizationSsoBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DisableOrganizationSsoBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -73545,24 +73517,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73582,68 +73546,94 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoBadRequestProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson { - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisableOrganizationSsoForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DisableOrganizationSsoForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), DisableOrganizationSsoForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DisableOrganizationSsoForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -73664,7 +73654,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -73672,33 +73662,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73719,7 +73701,7 @@ pub mod types { if replace { selected = Some(( rank, - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -73737,22 +73719,31 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -73763,51 +73754,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoForbiddenProblem", ), ) } } } - impl serde::Serialize - for CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DisableOrganizationSsoForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson::CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -73816,24 +73816,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -73853,114 +73845,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CommitAccountProfilePictureResponse200ApplicationJson as DeleteAccountResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum DeleteAccountResponse403ApplicationProblemPlusJson { - DeleteAccountResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteAccountResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DisableOrganizationSsoGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteAccountResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DisableOrganizationSsoGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteAccountResponse403ApplicationProblemPlusJson), + ((usize, u32), DisableOrganizationSsoGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DeleteAccountResponse403ApplicationProblemPlusJson::DeleteAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -73973,7 +73901,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -73981,7 +73909,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisableOrganizationSsoGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -73989,31 +73917,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -74034,7 +73956,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse403ApplicationProblemPlusJson::DeleteAccountResponse403ApplicationProblemPlusJsonVariant2( + DisableOrganizationSsoGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -74052,29 +73974,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -74085,70 +74000,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for DeleteAccountResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteAccountResponse403ApplicationProblemPlusJson::DeleteAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisableOrganizationSsoGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteAccountResponse403ApplicationProblemPlusJson::DeleteAccountResponse403ApplicationProblemPlusJsonVariant2( + DisableOrganizationSsoGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -74156,23 +74042,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -74191,190 +74069,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteAccountResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteAccountResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteAccountResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteAccountResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_not_found_de", - serialize_with = "const_account_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_not_found_db03c960_de", - serialize_with = "const_account_not_found_db03c960_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_account_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteAccountResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteAccountResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteAccountResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteAccountResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteAccountResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteAccountResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_owns_organizations_de", - serialize_with = "const_account_owns_organizations_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_owns_organizations_04e4af1e_de", - serialize_with = "const_account_owns_organizations_04e4af1e_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_owns_organizations_de", - serialize_with = "const_https_photon_codes_docs_problems_account_owns_organizations_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteAccountResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteAccountResponse409ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteAccountResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteAccountResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteAccountResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum DeleteAccountResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DeleteAccountResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisableOrganizationSsoInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteAccountResponse500ApplicationProblemPlusJson { + for DisableOrganizationSsoInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteAccountResponse500ApplicationProblemPlusJson), + ((usize, u32), DisableOrganizationSsoInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -74388,16 +74102,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -74410,7 +74124,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -74418,7 +74132,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DisableOrganizationSsoInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -74435,22 +74149,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -74471,7 +74179,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse500ApplicationProblemPlusJson::DeleteAccountResponse500ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -74517,43 +74225,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for DeleteAccountResponse500ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DisableOrganizationSsoInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteAccountResponse500ApplicationProblemPlusJson::DeleteAccountResponse500ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -74561,22 +74267,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -74596,64 +74296,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteAccountResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DeleteAccountResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as DeleteAccountResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as DeleteAccountResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteAccountResponse504ApplicationProblemPlusJson { - DeleteAccountResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteAccountResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum DisableOrganizationSsoPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteAccountResponse504ApplicationProblemPlusJson { + for DisableOrganizationSsoPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteAccountResponse504ApplicationProblemPlusJson), + ((usize, u32), DisableOrganizationSsoPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -74674,7 +74365,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse504ApplicationProblemPlusJson::DeleteAccountResponse504ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -74682,31 +74373,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -74727,7 +74412,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteAccountResponse504ApplicationProblemPlusJson::DeleteAccountResponse504ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -74746,21 +74431,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -74771,48 +74460,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoPreconditionFailedProblem", ), ) } } } - impl serde::Serialize for DeleteAccountResponse504ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteAccountResponse504ApplicationProblemPlusJson::DeleteAccountResponse504ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteAccountResponse504ApplicationProblemPlusJson::DeleteAccountResponse504ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -74821,22 +74504,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -74856,67 +74533,90 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteAccountResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteAccountResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DeleteAccountResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateProjectResponse201ApplicationJson as DeleteProjectResponse200ApplicationJson; - pub use self::CommitAgentProfileAvatarResponse200ApplicationJson as DeleteProjectResponse200ApplicationJsonagentProfile; - pub use self::CreateProjectResponse201ApplicationJsonbillingInitialization as DeleteProjectResponse200ApplicationJsonbillingInitialization; - pub use self::CreateProjectResponse201ApplicationJsoncreatedByActorKind as DeleteProjectResponse200ApplicationJsoncreatedByActorKind; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct DisableOrganizationSsoRequest { + ///Default (not applied): `[]`. + #[serde( + rename = "domains", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub domains: Option>, + #[serde(rename = "expectedVersion")] + pub expected_version: String, + } + impl<'de> serde::Deserialize<'de> for DisableOrganizationSsoRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["domains", "expectedVersion"])?; + DisableOrganizationSsoRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + DisableOrganizationSsoRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for DisableOrganizationSsoRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + DisableOrganizationSsoRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum DeleteProjectResponse400ApplicationProblemPlusJson { - DeleteProjectResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteProjectResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisableOrganizationSsoUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteProjectResponse400ApplicationProblemPlusJson { + for DisableOrganizationSsoUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteProjectResponse400ApplicationProblemPlusJson), + ((usize, u32), DisableOrganizationSsoUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -74929,7 +74629,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -74937,7 +74637,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse400ApplicationProblemPlusJson::DeleteProjectResponse400ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -74945,31 +74645,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -74990,7 +74684,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse400ApplicationProblemPlusJson::DeleteProjectResponse400ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -75009,24 +74703,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -75038,49 +74730,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisableOrganizationSsoUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for DeleteProjectResponse400ApplicationProblemPlusJson { + impl serde::Serialize for DisableOrganizationSsoUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteProjectResponse400ApplicationProblemPlusJson::DeleteProjectResponse400ApplicationProblemPlusJsonVariant0( + DisableOrganizationSsoUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteProjectResponse400ApplicationProblemPlusJson::DeleteProjectResponse400ApplicationProblemPlusJsonVariant1( + DisableOrganizationSsoUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -75088,22 +74772,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -75123,113 +74801,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteProjectResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisableOrganizationSsoUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as DeleteProjectResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as DeleteProjectResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum DeleteProjectResponse403ApplicationProblemPlusJson { - DeleteProjectResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteProjectResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountBadRequestProblem { + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteProjectResponse403ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteProjectResponse403ApplicationProblemPlusJson), + ((usize, u32), DisconnectWhatsappBusinessAccountBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DeleteProjectResponse403ApplicationProblemPlusJson::DeleteProjectResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -75242,7 +74858,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -75250,7 +74866,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisconnectWhatsappBusinessAccountBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -75258,31 +74874,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -75303,7 +74913,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse403ApplicationProblemPlusJson::DeleteProjectResponse403ApplicationProblemPlusJsonVariant2( + DisconnectWhatsappBusinessAccountBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -75321,29 +74931,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/idempotency-key-invalid") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) { (match_count, selected) = select(true); } @@ -75354,69 +74959,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountBadRequestProblem", ), ) } } } - impl serde::Serialize for DeleteProjectResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DisconnectWhatsappBusinessAccountBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteProjectResponse403ApplicationProblemPlusJson::DeleteProjectResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisconnectWhatsappBusinessAccountBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteProjectResponse403ApplicationProblemPlusJson::DeleteProjectResponse403ApplicationProblemPlusJsonVariant2( + DisconnectWhatsappBusinessAccountBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -75425,22 +75003,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -75460,144 +75032,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteProjectResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteProjectResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteProjectResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteProjectResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_not_found_de", - serialize_with = "const_project_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_not_found_fc31bf52_de", - serialize_with = "const_project_not_found_fc31bf52_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_project_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteProjectResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteProjectResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteProjectResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteProjectResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteProjectResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateProjectResponse413ApplicationProblemPlusJson as DeleteProjectResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteProjectResponse422ApplicationProblemPlusJson { - DeleteProjectResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteProjectResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountConflictProblem { + WhatsappAccountDisconnectingProblem(Box), + WhatsappAccountProvisioningProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteProjectResponse422ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteProjectResponse422ApplicationProblemPlusJson), + ((usize, u32), DisconnectWhatsappBusinessAccountConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("WHATSAPP_ACCOUNT_DISCONNECTING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("WhatsApp Business Account Disconnecting") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/whatsapp-account-disconnecting", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -75610,7 +75089,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -75618,7 +75097,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse422ApplicationProblemPlusJson::DeleteProjectResponse422ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountConflictProblem::WhatsappAccountDisconnectingProblem( inner, ), )); @@ -75626,31 +75105,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("WHATSAPP_ACCOUNT_PROVISIONING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("WhatsApp Business Account Has Provisioning Numbers") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/whatsapp-account-provisioning", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -75671,7 +75144,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse422ApplicationProblemPlusJson::DeleteProjectResponse422ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountConflictProblem::WhatsappAccountProvisioningProblem( inner, ), )); @@ -75690,22 +75163,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("WHATSAPP_ACCOUNT_DISCONNECTING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("WhatsApp Business Account Disconnecting") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some( + "https://photon.codes/docs/problems/whatsapp-account-disconnecting", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("WHATSAPP_ACCOUNT_PROVISIONING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("WhatsApp Business Account Has Provisioning Numbers") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/whatsapp-account-provisioning", ) { (match_count, selected) = select(true); @@ -75717,48 +75192,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountConflictProblem", ), ) } } } - impl serde::Serialize for DeleteProjectResponse422ApplicationProblemPlusJson { + impl serde::Serialize for DisconnectWhatsappBusinessAccountConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteProjectResponse422ApplicationProblemPlusJson::DeleteProjectResponse422ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountConflictProblem::WhatsappAccountDisconnectingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteProjectResponse422ApplicationProblemPlusJson::DeleteProjectResponse422ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountConflictProblem::WhatsappAccountProvisioningProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -75767,22 +75236,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -75802,121 +75265,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteProjectResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountConflictProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DeleteProjectResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DeleteProjectResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DeleteProjectResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as DeleteProjectResponse422ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as DeleteProjectResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as DeleteProjectResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteProjectResponse504ApplicationProblemPlusJson { - DeleteProjectResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteProjectResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteProjectResponse504ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DeleteProjectResponse504ApplicationProblemPlusJson), + ((usize, u32), DisconnectWhatsappBusinessAccountForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DeleteProjectResponse504ApplicationProblemPlusJson::DeleteProjectResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -75936,242 +75328,33 @@ pub mod types { if replace { selected = Some(( rank, - DeleteProjectResponse504ApplicationProblemPlusJson::DeleteProjectResponse504ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountForbiddenProblem::ForbiddenProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteProjectResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for DeleteProjectResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - DeleteProjectResponse504ApplicationProblemPlusJson::DeleteProjectResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteProjectResponse504ApplicationProblemPlusJson::DeleteProjectResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteProjectResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteProjectResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteProjectResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DeleteProjectResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteVoiceProfileInboundResponse200ApplicationJson { - #[serde(rename = "inbound")] - pub inbound: Option, - #[serde( - rename = "profileVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub profile_version: i64, - } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileInboundResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["inbound", "profileVersion"])?; - DeleteVoiceProfileInboundResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteVoiceProfileInboundResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteVoiceProfileInboundResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteVoiceProfileInboundResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as DeleteVoiceProfileInboundResponse200ApplicationJsoninboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as DeleteVoiceProfileInboundResponse200ApplicationJsoninbound; - #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson { - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -76192,7 +75375,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -76200,27 +75383,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -76233,7 +75414,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -76241,7 +75422,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisconnectWhatsappBusinessAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -76258,24 +75439,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -76296,7 +75469,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + DisconnectWhatsappBusinessAccountForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -76329,6 +75502,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -76347,54 +75530,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountForbiddenProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DisconnectWhatsappBusinessAccountForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DisconnectWhatsappBusinessAccountForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + DisconnectWhatsappBusinessAccountForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DisconnectWhatsappBusinessAccountForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -76403,16 +75595,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -76421,25 +75613,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -76458,69 +75640,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson { - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), DisconnectWhatsappBusinessAccountGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -76541,7 +75705,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -76549,33 +75713,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -76596,7 +75752,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -76615,25 +75771,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -76644,52 +75796,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson { + impl serde::Serialize for DisconnectWhatsappBusinessAccountGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -76697,25 +75838,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -76734,27 +75865,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -76763,7 +75886,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson, + DisconnectWhatsappBusinessAccountInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -76778,16 +75901,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -76800,7 +75923,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -76808,7 +75931,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DisconnectWhatsappBusinessAccountInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -76825,24 +75948,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -76863,7 +75978,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -76909,44 +76024,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DisconnectWhatsappBusinessAccountInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -76954,24 +76067,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -76991,26 +76096,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson { - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DisconnectWhatsappBusinessAccountUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -77019,7 +76117,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson, + DisconnectWhatsappBusinessAccountUnprocessableEntityProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -77027,33 +76125,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -77066,7 +76156,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -77074,7 +76164,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -77082,33 +76172,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -77129,7 +76211,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -77148,21 +76230,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -77173,52 +76257,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountUnprocessableEntityProblem", ), ) } } } impl serde::Serialize - for DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson { + for DisconnectWhatsappBusinessAccountUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( + DisconnectWhatsappBusinessAccountUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + DisconnectWhatsappBusinessAccountUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -77226,24 +76300,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -77263,81 +76329,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteVoiceProfileOutboundResponse200ApplicationJson { - #[serde(rename = "outbound")] - pub outbound: Option<()>, - #[serde( - rename = "profileVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub profile_version: i64, - } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["outbound", "profileVersion"])?; - DeleteVoiceProfileOutboundResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteVoiceProfileOutboundResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteVoiceProfileOutboundResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteVoiceProfileOutboundResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson { - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum DownloadAttachmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DownloadAttachmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), DownloadAttachmentForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -77350,24 +76361,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + DownloadAttachmentForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -77388,7 +76434,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( + DownloadAttachmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -77396,27 +76442,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -77429,7 +76473,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -77437,7 +76481,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + DownloadAttachmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -77454,24 +76498,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -77492,7 +76528,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( + DownloadAttachmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -77525,6 +76561,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -77543,54 +76589,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson { + impl serde::Serialize for DownloadAttachmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2( + DownloadAttachmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DownloadAttachmentForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + DownloadAttachmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DownloadAttachmentForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -77599,16 +76654,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -77617,25 +76672,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -77654,69 +76699,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DownloadAttachmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson { - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DownloadAttachmentGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DownloadAttachmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), DownloadAttachmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -77737,7 +76763,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( + DownloadAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -77745,33 +76771,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -77792,7 +76810,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( + DownloadAttachmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -77811,25 +76829,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -77840,52 +76854,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson { + impl serde::Serialize for DownloadAttachmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1( + DownloadAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + DownloadAttachmentGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -77893,25 +76896,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -77930,119 +76923,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DownloadAttachmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_voice_outbound_not_configured_de", - serialize_with = "const_voice_outbound_not_configured_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_outbound_not_configured_f981c427_de", - serialize_with = "const_voice_outbound_not_configured_f981c427_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_outbound_not_configured_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_outbound_not_configured_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum DownloadAttachmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for DownloadAttachmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), DownloadAttachmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -78056,16 +76955,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -78078,7 +76977,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -78086,7 +76985,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DownloadAttachmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -78103,24 +77002,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -78141,7 +77032,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( + DownloadAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -78187,44 +77078,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union DownloadAttachmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson { + impl serde::Serialize for DownloadAttachmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + DownloadAttachmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1( + DownloadAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -78232,24 +77120,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -78269,69 +77149,225 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union DownloadAttachmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson; + pub type DownloadAttachmentResponse = serde_json::Value; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct EntitlementRequiredProblem { + #[serde( + rename = "code", + deserialize_with = "const_entitlement_required_de", + serialize_with = "const_entitlement_required_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_entitlement_required_2c7d30a6_de", + serialize_with = "const_entitlement_required_2c7d30a6_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_entitlement_required_de", + serialize_with = "const_https_photon_codes_docs_problems_entitlement_required_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ExistingAppInstallationDelivery { + #[serde(rename = "installationId")] + pub installation_id: String, + #[serde(rename = "status")] + pub status: ExistingAppInstallationDeliveryStatus, + } + impl<'de> serde::Deserialize<'de> for ExistingAppInstallationDelivery { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["installationId", "status"])?; + ExistingAppInstallationDelivery::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ExistingAppInstallationDelivery::deserialize(deserializer) + } + } + } + impl serde::Serialize for ExistingAppInstallationDelivery { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ExistingAppInstallationDelivery::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum ExistingAppInstallationDeliveryStatus { + ///`delivery_consumed` + DeliveryConsumed, + ///`recovery_required` + RecoveryRequired, + ///`revocation_pending` + RevocationPending, + ///`revoked` + Revoked, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl ExistingAppInstallationDeliveryStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::DeliveryConsumed => "delivery_consumed", + Self::RecoveryRequired => "recovery_required", + Self::RevocationPending => "revocation_pending", + Self::Revoked => "revoked", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for ExistingAppInstallationDeliveryStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for ExistingAppInstallationDeliveryStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for ExistingAppInstallationDeliveryStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "delivery_consumed" => Ok(Self::DeliveryConsumed), + "recovery_required" => Ok(Self::RecoveryRequired), + "revocation_pending" => Ok(Self::RevocationPending), + "revoked" => Ok(Self::Revoked), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `delivery_consumed`, `recovery_required`, `revocation_pending`, `revoked`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson { - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetAccountForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAccountForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetAccountForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAccountForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -78352,41 +77388,31 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), + GetAccountForbiddenProblem::InsufficientScopeProblem(inner), )); } } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -78407,12 +77433,57 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( + GetAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAccountForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; let select = |keyed: bool| -> (usize, Selected) { @@ -78425,22 +77496,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -78451,51 +77539,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountForbiddenProblem", ), ) } } } - impl serde::Serialize - for DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetAccountForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson::DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAccountForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAccountForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAccountForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAccountForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -78504,24 +77604,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -78530,6 +77622,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -78541,115 +77649,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAccountForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileResponse403ApplicationProblemPlusJson { - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetAccountGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAccountGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), DeleteVoiceProfileResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetAccountGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -78662,7 +77703,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -78670,7 +77711,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -78678,33 +77719,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -78725,9 +77758,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + GetAccountGatewayTimeoutProblem::RequestTimeoutProblem(inner), )); } } @@ -78743,29 +77774,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -78776,70 +77800,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for DeleteVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetAccountGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileResponse403ApplicationProblemPlusJson::DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAccountGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAccountGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -78847,23 +77842,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -78882,66 +77869,46 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAccountGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileResponse409ApplicationProblemPlusJson { - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetAccountInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAccountInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), DeleteVoiceProfileResponse409ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetAccountInternalServerErrorProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_IN_USE") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile In Use") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-in-use", - )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -78962,7 +77929,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse409ApplicationProblemPlusJson::DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( + GetAccountInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -78970,33 +77937,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -79017,7 +77976,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse409ApplicationProblemPlusJson::DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + GetAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -79036,22 +77995,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_IN_USE") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile In Use") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/voice-profile-in-use") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -79063,49 +78022,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAccountInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for DeleteVoiceProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for GetAccountInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileResponse409ApplicationProblemPlusJson::DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileResponse409ApplicationProblemPlusJson::DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + GetAccountInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -79113,22 +78064,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -79148,139 +78093,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAccountInternalServerErrorProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_voice_profile_in_use_de", - serialize_with = "const_voice_profile_in_use_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_profile_in_use_38ccc257_de", - serialize_with = "const_voice_profile_in_use_38ccc257_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_in_use_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_profile_in_use_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as DeleteVoiceProfileResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DeleteVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DeleteVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DeleteVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as DeleteVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetAgentProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAgentProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), DeleteVoiceProfileResponse500ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetAgentProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAgentProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -79293,7 +78190,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -79301,7 +78198,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetAgentProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -79309,33 +78206,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAgentProfileForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -79356,7 +78292,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse500ApplicationProblemPlusJson::DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + GetAgentProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -79374,24 +78310,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -79402,42 +78353,81 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAgentProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAgentProfileForbiddenProblem", ), ) } } } - impl serde::Serialize for DeleteVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetAgentProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileResponse500ApplicationProblemPlusJson::DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + GetAgentProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAgentProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAgentProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAgentProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -79446,23 +78436,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -79481,66 +78463,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAgentProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DeleteVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DeleteVoiceProfileResponse504ApplicationProblemPlusJson { - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetAgentProfileGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteVoiceProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAgentProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), DeleteVoiceProfileResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetAgentProfileGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -79561,7 +78525,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse504ApplicationProblemPlusJson::DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + GetAgentProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -79569,33 +78533,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -79616,7 +78572,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteVoiceProfileResponse504ApplicationProblemPlusJson::DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + GetAgentProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -79635,21 +78591,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -79660,49 +78616,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAgentProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAgentProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for DeleteVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetAgentProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteVoiceProfileResponse504ApplicationProblemPlusJson::DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteVoiceProfileResponse504ApplicationProblemPlusJson::DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAgentProfileGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAgentProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -79710,23 +78658,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -79745,130 +78685,104 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAgentProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteWebhookDestinationResponse200ApplicationJson { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "destinationId")] - pub destination_id: String, - #[serde(rename = "enabledEvents")] - pub enabled_events: DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "status")] - pub status: DeleteWebhookDestinationResponse200ApplicationJsonstatus, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "url")] - pub url: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteWebhookDestinationResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url", - ], - )?; - DeleteWebhookDestinationResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - DeleteWebhookDestinationResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DeleteWebhookDestinationResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteWebhookDestinationResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents { - DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - Box>, - ), - DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - Box>, - ), + pub enum GetAttachmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents { + impl<'de> serde::Deserialize<'de> for GetAttachmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents, - ), - >; - let pass = |strict: bool| -> (usize, Selected) { + type Selected = Option<((usize, u32), GetAttachmentForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 } else { - serde_json::from_value::>>(candidate) - .ok() + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAttachmentForbiddenProblem::ForbiddenProblem(inner), + )); } - })() { + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 800u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -79876,30 +78790,46 @@ pub mod types { if replace { selected = Some(( rank, - DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents::DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( + GetAttachmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -79907,60 +78837,188 @@ pub mod types { if replace { selected = Some(( rank, - DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents::DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( + GetAttachmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetAttachmentForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); } - if match_count >= 1 { + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents", + "data must match exactly one typed variant of union GetAttachmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match at least one typed variant of union DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents", + "data must match exactly one typed variant of union GetAttachmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents { + impl serde::Serialize for GetAttachmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents::DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents::DeleteWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAttachmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAttachmentForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAttachmentForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAttachmentForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option>> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate) + serde_json::from_value::< + Box, + >(candidate) .ok() } })() @@ -79968,15 +79026,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate).ok() + serde_json::from_value::>(candidate) + .ok() } })() .is_some() @@ -79989,122 +79048,53 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match at least one typed variant of union DeleteWebhookDestinationResponse200ApplicationJsonenabledEvents", + "serialized value must match exactly one typed variant of union GetAttachmentForbiddenProblem", ), ) } } } - pub use self::CreateWebhookDestinationResponse201ApplicationJsondestinationstatus as DeleteWebhookDestinationResponse200ApplicationJsonstatus; #[derive(Debug, Clone)] - pub enum DeleteWebhookDestinationResponse403ApplicationProblemPlusJson { - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetAttachmentGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DeleteWebhookDestinationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetAttachmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetAttachmentGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80117,7 +79107,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -80125,7 +79115,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -80133,33 +79123,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -80180,7 +79162,7 @@ pub mod types { if replace { selected = Some(( rank, - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + GetAttachmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -80198,29 +79180,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -80231,73 +79206,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAttachmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeleteWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetAttachmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for DeleteWebhookDestinationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetAttachmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeleteWebhookDestinationResponse403ApplicationProblemPlusJson::DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAttachmentGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -80305,25 +79248,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -80342,158 +79275,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeleteWebhookDestinationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetAttachmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DeleteWebhookDestinationResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_webhook_destination_not_found_de", - serialize_with = "const_webhook_destination_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_webhook_destination_not_found_d6d379c2_de", - serialize_with = "const_webhook_destination_not_found_d6d379c2_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_webhook_destination_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_webhook_destination_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DeleteWebhookDestinationResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DeleteWebhookDestinationResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DeleteWebhookDestinationResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for DeleteWebhookDestinationResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DeleteWebhookDestinationResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DeleteWebhookDestinationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DeleteWebhookDestinationResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DeleteWebhookDestinationResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceAuthorizeResponse200ApplicationJson { - ///Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. - #[serde(rename = "device_code")] - pub device_code: String, - ///Lifetime of the device code and user code, in seconds. - #[serde(rename = "expires_in")] - pub expires_in: f64, - ///Minimum number of seconds to wait between token polling requests. - #[serde(rename = "interval")] - pub interval: f64, - ///Code the user enters at verification_uri to authorize this device. - #[serde(rename = "user_code")] - pub user_code: String, - ///Browser URL where the user enters user_code and authorizes the device. - #[serde(rename = "verification_uri")] - pub verification_uri: String, - ///Browser URL with user_code included, ready to open or encode as a QR code. - #[serde(rename = "verification_uri_complete")] - pub verification_uri_complete: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } #[derive(Debug, Clone)] - pub enum DeviceTokenRequestApplicationForm { - DeviceTokenRequestApplicationFormVariant0( - Box, - ), - DeviceTokenRequestApplicationFormVariant1( - Box, - ), + pub enum GetAttachmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> for DeviceTokenRequestApplicationForm { + impl<'de> serde::Deserialize<'de> for GetAttachmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option<((usize, u32), DeviceTokenRequestApplicationForm)>; + type Selected = Option< + ((usize, u32), GetAttachmentInternalServerErrorProblem), + >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("urn:ietf:params:oauth:grant-type:device_code")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80506,7 +79329,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -80514,27 +79337,33 @@ pub mod types { if replace { selected = Some(( rank, - DeviceTokenRequestApplicationForm::DeviceTokenRequestApplicationFormVariant0( + GetAttachmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("refresh_token")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80547,7 +79376,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -80555,7 +79384,7 @@ pub mod types { if replace { selected = Some(( rank, - DeviceTokenRequestApplicationForm::DeviceTokenRequestApplicationFormVariant1( + GetAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -80573,10 +79402,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("urn:ietf:params:oauth:grant-type:device_code") - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("refresh_token") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -80587,43 +79430,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeviceTokenRequestApplicationForm", + "data must match exactly one typed variant of union GetAttachmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeviceTokenRequestApplicationForm", + "data must match exactly one typed variant of union GetAttachmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for DeviceTokenRequestApplicationForm { + impl serde::Serialize for GetAttachmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeviceTokenRequestApplicationForm::DeviceTokenRequestApplicationFormVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeviceTokenRequestApplicationForm::DeviceTokenRequestApplicationFormVariant1( + GetAttachmentInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -80631,16 +79472,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80660,78 +79501,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeviceTokenRequestApplicationForm", + "serialized value must match exactly one typed variant of union GetAttachmentInternalServerErrorProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenRequestApplicationFormVariant0 { - ///device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - #[serde(rename = "device_code")] - pub device_code: String, - ///Selects the device authorization grant to poll or exchange a device code. - #[serde( - rename = "grant_type", - deserialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_de", - serialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_ser", - )] - pub grant_type: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenRequestApplicationFormVariant1 { - ///Selects the refresh-token grant to obtain a new token pair. - #[serde( - rename = "grant_type", - deserialize_with = "const_refresh_token_de", - serialize_with = "const_refresh_token_ser", - )] - pub grant_type: String, - ///Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - #[serde(rename = "refresh_token")] - pub refresh_token: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } #[derive(Debug, Clone)] - pub enum DeviceTokenRequestApplicationJson { - DeviceTokenRequestApplicationJsonVariant0( - Box, - ), - DeviceTokenRequestApplicationJsonVariant1( - Box, - ), + pub enum GetBillingOperationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> for DeviceTokenRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for GetBillingOperationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option<((usize, u32), DeviceTokenRequestApplicationJson)>; + type Selected = Option<((usize, u32), GetBillingOperationForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("urn:ietf:params:oauth:grant-type:device_code")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetBillingOperationForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80744,7 +79598,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -80752,27 +79606,33 @@ pub mod types { if replace { selected = Some(( rank, - DeviceTokenRequestApplicationJson::DeviceTokenRequestApplicationJsonVariant0( + GetBillingOperationForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("refresh_token")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80785,7 +79645,54 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetBillingOperationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -80793,7 +79700,7 @@ pub mod types { if replace { selected = Some(( rank, - DeviceTokenRequestApplicationJson::DeviceTokenRequestApplicationJsonVariant1( + GetBillingOperationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -80811,10 +79718,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("urn:ietf:params:oauth:grant-type:device_code") - || value.get("grant_type").and_then(serde_json::Value::as_str) - == Some("refresh_token") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -80825,42 +79761,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DeviceTokenRequestApplicationJson", + "data must match exactly one typed variant of union GetBillingOperationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DeviceTokenRequestApplicationJson", + "data must match exactly one typed variant of union GetBillingOperationForbiddenProblem", ), ) } } } - impl serde::Serialize for DeviceTokenRequestApplicationJson { + impl serde::Serialize for GetBillingOperationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DeviceTokenRequestApplicationJson::DeviceTokenRequestApplicationJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DeviceTokenRequestApplicationJson::DeviceTokenRequestApplicationJsonVariant1( + GetBillingOperationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetBillingOperationForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetBillingOperationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetBillingOperationForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80869,16 +79826,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -80887,6 +79844,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -80898,251 +79871,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DeviceTokenRequestApplicationJson", + "serialized value must match exactly one typed variant of union GetBillingOperationForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenRequestApplicationJsonVariant0 { - ///device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - #[serde(rename = "device_code")] - pub device_code: String, - ///Selects the device authorization grant to poll or exchange a device code. - #[serde( - rename = "grant_type", - deserialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_de", - serialize_with = "const_urn_ietf_params_oauth_grant_type_device_code_ser", - )] - pub grant_type: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenRequestApplicationJsonVariant1 { - ///Selects the refresh-token grant to obtain a new token pair. - #[serde( - rename = "grant_type", - deserialize_with = "const_refresh_token_de", - serialize_with = "const_refresh_token_ser", - )] - pub grant_type: String, - ///Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - #[serde(rename = "refresh_token")] - pub refresh_token: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenResponse200ApplicationJson { - ///Bearer access token for authenticated Photon API requests. - #[serde(rename = "access_token")] - pub access_token: String, - ///Authentication method used for the device login, when returned. Omitted for refresh grants. - #[serde( - rename = "authentication_method", - default, - skip_serializing_if = "Option::is_none", - )] - pub authentication_method: Option, - ///Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. - #[serde(rename = "expires_in")] - pub expires_in: f64, - ///Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. - #[serde(rename = "refresh_token")] - pub refresh_token: String, - #[serde(rename = "user")] - pub user: DeviceTokenResponse200ApplicationJsonuser, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - ///Profile of the authenticated user. - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenResponse200ApplicationJsonuser { - ///Authenticated user's email address. - #[serde(rename = "email")] - pub email: String, - ///User's first name, or null when not set. - #[serde(rename = "first_name")] - pub first_name: Option, - ///Authenticated user's identity identifier; distinct from the Photon Account ID. - #[serde(rename = "id")] - pub id: String, - ///User's last name, or null when not set. - #[serde(rename = "last_name")] - pub last_name: Option, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct DeviceTokenResponse400ApplicationJson { - ///OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. - #[serde(rename = "error")] - pub error: String, - ///Optional human-readable explanation of the OAuth error. - #[serde( - rename = "error_description", - default, - skip_serializing_if = "Option::is_none", - )] - pub error_description: Option, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DisconnectWhatsappBusinessAccountResponse200ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option< - DisconnectWhatsappBusinessAccountResponse200ApplicationJsonerror, - >, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: DisconnectWhatsappBusinessAccountResponse200ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: DisconnectWhatsappBusinessAccountResponse200ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - DisconnectWhatsappBusinessAccountResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DisconnectWhatsappBusinessAccountResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DisconnectWhatsappBusinessAccountResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as DisconnectWhatsappBusinessAccountResponse200ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as DisconnectWhatsappBusinessAccountResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as DisconnectWhatsappBusinessAccountResponse200ApplicationJsontype; - pub use self::DisconnectWhatsappBusinessAccountResponse200ApplicationJson as DisconnectWhatsappBusinessAccountResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as DisconnectWhatsappBusinessAccountResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as DisconnectWhatsappBusinessAccountResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as DisconnectWhatsappBusinessAccountResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson { - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0( - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1( - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetBillingOperationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetBillingOperationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), GetBillingOperationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -81163,7 +79935,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0( + GetBillingOperationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -81171,33 +79943,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -81218,7 +79982,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1( + GetBillingOperationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -81237,23 +80001,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-invalid") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -81264,52 +80026,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOperationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOperationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson { + impl serde::Serialize for GetBillingOperationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0( + GetBillingOperationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1( + GetBillingOperationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -81317,25 +80068,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -81354,73 +80095,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetBillingOperationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum GetBillingOperationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetBillingOperationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetBillingOperationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -81441,56 +80157,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetBillingOperationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -81498,33 +80165,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -81545,7 +80204,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( + GetBillingOperationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -81563,29 +80222,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -81596,73 +80250,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOperationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOperationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetBillingOperationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetBillingOperationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( + GetBillingOperationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -81670,24 +80292,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -81707,73 +80321,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetBillingOperationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 as DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson { - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0( - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1( - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetBillingOverviewForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetBillingOverviewForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetBillingOverviewForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_DISCONNECTING") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Disconnecting") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetBillingOverviewForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-account-disconnecting", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -81794,7 +80426,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0( + GetBillingOverviewForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -81802,33 +80434,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_PROVISIONING") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Has Provisioning Numbers") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-account-provisioning", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -81849,7 +80473,54 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1( + GetBillingOverviewForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetBillingOverviewForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -81867,26 +80538,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_DISCONNECTING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Disconnecting") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-account-disconnecting", - ) + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_ACCOUNT_PROVISIONING") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Business Account Has Provisioning Numbers") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-account-provisioning", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -81897,51 +80581,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewForbiddenProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson { + impl serde::Serialize for GetBillingOverviewForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1( + GetBillingOverviewForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetBillingOverviewForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetBillingOverviewForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetBillingOverviewForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -81950,24 +80646,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -81976,6 +80664,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -81987,72 +80691,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetBillingOverviewForbiddenProblem", ), ) } } } - pub use self::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant1 as DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant0; - pub use self::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant2 as DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson { - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0( - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1( - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetBillingOverviewGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetBillingOverviewGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), GetBillingOverviewGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -82065,7 +80747,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -82073,7 +80755,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0( + GetBillingOverviewGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -82081,33 +80763,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -82128,7 +80802,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1( + GetBillingOverviewGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -82147,23 +80821,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -82174,52 +80846,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson { + impl serde::Serialize for GetBillingOverviewGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1( + GetBillingOverviewGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetBillingOverviewGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -82227,25 +80888,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -82264,38 +80915,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetBillingOverviewGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetBillingOverviewInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetBillingOverviewInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetBillingOverviewInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -82309,16 +80947,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -82331,7 +80969,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -82339,7 +80977,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetBillingOverviewInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -82356,24 +80994,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -82394,7 +81024,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( + GetBillingOverviewInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -82440,44 +81070,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetBillingOverviewInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetBillingOverviewInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetBillingOverviewInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( + GetBillingOverviewInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -82485,24 +81112,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -82522,73 +81141,366 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetBillingOverviewInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct GetBillingOverviewResponse { + ///Bumps on every entitlement change in any category. + #[serde( + rename = "entitlementsVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub entitlements_version: i64, + ///One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. + #[serde(rename = "subscriptions")] + pub subscriptions: Vec, + ///Current-period metered usage, priced. + #[serde(rename = "usage")] + pub usage: Vec, + } + impl<'de> serde::Deserialize<'de> for GetBillingOverviewResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["entitlementsVersion", "subscriptions", "usage"])?; + GetBillingOverviewResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + GetBillingOverviewResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetBillingOverviewResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetBillingOverviewResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProjectSubscription { + ///When the subscription will end instead of renewing, ISO 8601. + #[serde(rename = "cancelsAt")] + pub cancels_at: Option, + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + ///Display name for the subscription category; absent or null when unconfigured. + #[serde( + rename = "categoryDisplayName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub category_display_name: Option>, + ///End of the current billing period, ISO 8601. + #[serde(rename = "currentPeriodEnd")] + pub current_period_end: Option, + ///Feature gates granted by this category's plan. + #[serde(rename = "entitlements")] + pub entitlements: Vec, + ///Fixed charges defined by this category's current plan. Quantity is the plan default. + #[serde(rename = "fixedCharges")] + pub fixed_charges: Vec, + ///This category's plan; display only. + #[serde(rename = "planCode")] + pub plan_code: String, + #[serde(rename = "status")] + pub status: SubscriptionStatus, + } + impl<'de> serde::Deserialize<'de> for ProjectSubscription { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "cancelsAt", + "category", + "categoryDisplayName", + "currentPeriodEnd", + "entitlements", + "fixedCharges", + "planCode", + "status", + ], + )?; + ProjectSubscription::deserialize(value).map_err(serde::de::Error::custom) + } else { + ProjectSubscription::deserialize(deserializer) + } + } + } + impl serde::Serialize for ProjectSubscription { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ProjectSubscription::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProjectSubscriptionEntitlement { + ///Feature gate key, e.g. imessage_shared_lines.max_user_assignments. + #[serde(rename = "featureKey")] + pub feature_key: String, + ///Gate value as a string. + #[serde(rename = "value")] + pub value: String, + } + impl<'de> serde::Deserialize<'de> for ProjectSubscriptionEntitlement { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["featureKey", "value"])?; + ProjectSubscriptionEntitlement::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ProjectSubscriptionEntitlement::deserialize(deserializer) + } + } + } + impl serde::Serialize for ProjectSubscriptionEntitlement { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ProjectSubscriptionEntitlement::serialize(self, serializer) + } + } + ///State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SubscriptionStatus { + ///`active` + Active, + ///`past_due` + PastDue, + ///`terminated` + Terminated, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl SubscriptionStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Active => "active", + Self::PastDue => "past_due", + Self::Terminated => "terminated", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for SubscriptionStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SubscriptionStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SubscriptionStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "active" => Ok(Self::Active), + "past_due" => Ok(Self::PastDue), + "terminated" => Ok(Self::Terminated), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `active`, `past_due`, `terminated`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MeteredUsage { + ///Cost accrued so far. + #[serde( + rename = "amountCents", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub amount_cents: i64, + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + ///Display name for the subscription category; absent or null when unconfigured. + #[serde( + rename = "categoryDisplayName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub category_display_name: Option>, + ///ISO currency code. + #[serde(rename = "currency")] + pub currency: String, + ///Display name for this usage item. + #[serde(rename = "displayName")] + pub display_name: String, + ///Metered thing, e.g. imessage_message. + #[serde(rename = "metricCode")] + pub metric_code: String, + ///Units consumed this period. + #[serde(rename = "units", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub units: i64, + } + impl<'de> serde::Deserialize<'de> for MeteredUsage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "amountCents", + "category", + "categoryDisplayName", + "currency", + "displayName", + "metricCode", + "units", + ], + )?; + MeteredUsage::deserialize(value).map_err(serde::de::Error::custom) + } else { + MeteredUsage::deserialize(deserializer) + } + } + } + impl serde::Serialize for MeteredUsage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MeteredUsage::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetDefaultVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetDefaultVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetDefaultVoiceProfileForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetDefaultVoiceProfileForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -82609,7 +81521,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( + GetDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -82617,33 +81529,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -82664,7 +81615,7 @@ pub mod types { if replace { selected = Some(( rank, - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( + GetDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -82682,22 +81633,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -82708,51 +81676,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetDefaultVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( + GetDefaultVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( + GetDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -82761,24 +81741,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -82787,6 +81759,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -82798,116 +81786,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1; - pub type DownloadAttachmentResponse200ApplicationOctetStream = serde_json::Value; #[derive(Debug, Clone)] - pub enum DownloadAttachmentResponse403ApplicationProblemPlusJson { - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetDefaultVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DownloadAttachmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetDefaultVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DownloadAttachmentResponse403ApplicationProblemPlusJson), + ((usize, u32), GetDefaultVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - DownloadAttachmentResponse403ApplicationProblemPlusJson::DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -82920,7 +81842,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -82928,7 +81850,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -82936,33 +81858,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -82983,7 +81897,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse403ApplicationProblemPlusJson::DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2( + GetDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -83001,29 +81915,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -83034,70 +81941,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for DownloadAttachmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetDefaultVoiceProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DownloadAttachmentResponse403ApplicationProblemPlusJson::DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DownloadAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DownloadAttachmentResponse403ApplicationProblemPlusJson::DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2( + GetDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -83105,23 +81983,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -83140,197 +82010,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DownloadAttachmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as DownloadAttachmentResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DownloadAttachmentResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_attachment_not_found_de", - serialize_with = "const_attachment_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_attachment_not_found_3a39522e_de", - serialize_with = "const_attachment_not_found_3a39522e_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DownloadAttachmentResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DownloadAttachmentResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DownloadAttachmentResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DownloadAttachmentResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DownloadAttachmentResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct DownloadAttachmentResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_attachment_not_ready_de", - serialize_with = "const_attachment_not_ready_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_attachment_not_ready_99e5a689_de", - serialize_with = "const_attachment_not_ready_99e5a689_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_attachment_not_ready_de", - serialize_with = "const_https_photon_codes_docs_problems_attachment_not_ready_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for DownloadAttachmentResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - DownloadAttachmentResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - DownloadAttachmentResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for DownloadAttachmentResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - DownloadAttachmentResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as DownloadAttachmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as DownloadAttachmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as DownloadAttachmentResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum DownloadAttachmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetDefaultVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for DownloadAttachmentResponse500ApplicationProblemPlusJson { + for GetDefaultVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DownloadAttachmentResponse500ApplicationProblemPlusJson), + ((usize, u32), GetDefaultVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -83344,16 +82043,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -83366,7 +82065,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -83374,7 +82073,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -83391,24 +82090,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -83429,7 +82120,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse500ApplicationProblemPlusJson::DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1( + GetDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -83475,43 +82166,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for DownloadAttachmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetDefaultVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DownloadAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DownloadAttachmentResponse500ApplicationProblemPlusJson::DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1( + GetDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -83519,22 +82208,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -83554,66 +82237,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DownloadAttachmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as DownloadAttachmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as DownloadAttachmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as DownloadAttachmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum DownloadAttachmentResponse504ApplicationProblemPlusJson { - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetMessageMetricsBackfillForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for DownloadAttachmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetMessageMetricsBackfillForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), DownloadAttachmentResponse504ApplicationProblemPlusJson), + ((usize, u32), GetMessageMetricsBackfillForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetMessageMetricsBackfillForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -83634,7 +82346,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse504ApplicationProblemPlusJson::DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0( + GetMessageMetricsBackfillForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -83642,33 +82354,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetMessageMetricsBackfillForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -83689,7 +82440,7 @@ pub mod types { if replace { selected = Some(( rank, - DownloadAttachmentResponse504ApplicationProblemPlusJson::DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1( + GetMessageMetricsBackfillForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -83707,22 +82458,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -83733,48 +82501,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetMessageMetricsBackfillForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union DownloadAttachmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetMessageMetricsBackfillForbiddenProblem", ), ) } } } - impl serde::Serialize for DownloadAttachmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetMessageMetricsBackfillForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - DownloadAttachmentResponse504ApplicationProblemPlusJson::DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0( + GetMessageMetricsBackfillForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetMessageMetricsBackfillForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - DownloadAttachmentResponse504ApplicationProblemPlusJson::DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1( + GetMessageMetricsBackfillForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetMessageMetricsBackfillForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -83783,22 +82566,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -83807,6 +82584,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -83818,61 +82611,190 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union DownloadAttachmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetMessageMetricsBackfillForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as DownloadAttachmentResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CommitAccountProfilePictureResponse200ApplicationJson as GetAccountResponse200ApplicationJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct GetMessageMetricsBackfillResponse { + #[serde( + rename = "failedWrites", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub failed_writes: i64, + #[serde(rename = "lastVerifiedAt")] + pub last_verified_at: Option, + #[serde( + rename = "processedWrites", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub processed_writes: i64, + #[serde(rename = "state")] + pub state: MessageMetricsBackfillState, + #[serde(rename = "version")] + pub version: Date, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum MessageMetricsBackfillState { + ///`disabled` + Disabled, + ///`pending` + Pending, + ///`running` + Running, + ///`verifying` + Verifying, + ///`completed` + Completed, + ///`paused` + Paused, + ///`failed` + Failed, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl MessageMetricsBackfillState { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Disabled => "disabled", + Self::Pending => "pending", + Self::Running => "running", + Self::Verifying => "verifying", + Self::Completed => "completed", + Self::Paused => "paused", + Self::Failed => "failed", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for MessageMetricsBackfillState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for MessageMetricsBackfillState { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for MessageMetricsBackfillState { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "disabled" => Ok(Self::Disabled), + "pending" => Ok(Self::Pending), + "running" => Ok(Self::Running), + "verifying" => Ok(Self::Verifying), + "completed" => Ok(Self::Completed), + "paused" => Ok(Self::Paused), + "failed" => Ok(Self::Failed), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `disabled`, `pending`, `running`, `verifying`, `completed`, `paused`, `failed`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } #[derive(Debug, Clone)] - pub enum GetAccountResponse403ApplicationProblemPlusJson { - GetAccountResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetAccountResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetMessageMetricsSqlSchemaForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetMessageMetricsSqlSchemaForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetAccountResponse403ApplicationProblemPlusJson), + ((usize, u32), GetMessageMetricsSqlSchemaForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetMessageMetricsSqlSchemaForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -83893,7 +82815,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAccountResponse403ApplicationProblemPlusJson::GetAccountResponse403ApplicationProblemPlusJsonVariant0( + GetMessageMetricsSqlSchemaForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -83901,27 +82823,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -83934,7 +82854,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -83942,7 +82862,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetMessageMetricsSqlSchemaForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -83959,18 +82879,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -83991,7 +82909,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAccountResponse403ApplicationProblemPlusJson::GetAccountResponse403ApplicationProblemPlusJsonVariant2( + GetMessageMetricsSqlSchemaForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -84024,6 +82942,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -84042,47 +82970,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetMessageMetricsSqlSchemaForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetMessageMetricsSqlSchemaForbiddenProblem", ), ) } } } - impl serde::Serialize for GetAccountResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetMessageMetricsSqlSchemaForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAccountResponse403ApplicationProblemPlusJson::GetAccountResponse403ApplicationProblemPlusJsonVariant0( + GetMessageMetricsSqlSchemaForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetMessageMetricsSqlSchemaForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetMessageMetricsSqlSchemaForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAccountResponse403ApplicationProblemPlusJson::GetAccountResponse403ApplicationProblemPlusJsonVariant2( + GetMessageMetricsSqlSchemaForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -84091,16 +83035,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -84109,19 +83053,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -84140,53 +83080,29 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAccountResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetMessageMetricsSqlSchemaForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetAccountResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetAccountResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetAccountResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_not_found_de", - serialize_with = "const_account_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_not_found_db03c960_de", - serialize_with = "const_account_not_found_db03c960_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_account_not_found_ser", - )] - pub r#type: String, + pub struct GetMessageMetricsSqlSchemaResponse { + #[serde(rename = "capabilities")] + pub capabilities: MessageMetricsSqlCapabilities, + #[serde(rename = "dialect")] + pub dialect: String, + #[serde(rename = "limits")] + pub limits: MessageMetricsSqlLimits, + #[serde(rename = "projectScoped")] + pub project_scoped: bool, + #[serde(rename = "tables")] + pub tables: Vec, + #[serde(rename = "version")] + pub version: Date, } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetMessageMetricsSqlSchemaResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -84198,72 +83114,108 @@ pub mod types { >( &value, &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", + "capabilities", + "dialect", + "limits", + "projectScoped", + "tables", + "version", ], )?; - GetAccountResponse404ApplicationProblemPlusJson::deserialize(value) + GetMessageMetricsSqlSchemaResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetAccountResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) + GetMessageMetricsSqlSchemaResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetMessageMetricsSqlSchemaResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetMessageMetricsSqlSchemaResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsSqlCapabilities { + #[serde(rename = "arrayJoin")] + pub array_join: bool, + #[serde(rename = "ctes")] + pub ctes: bool, + #[serde(rename = "joins")] + pub joins: bool, + #[serde(rename = "parameters")] + pub parameters: bool, + #[serde(rename = "selectWithoutFrom")] + pub select_without_from: bool, + #[serde(rename = "subqueries")] + pub subqueries: bool, + #[serde(rename = "unions")] + pub unions: bool, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsSqlCapabilities { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "arrayJoin", + "ctes", + "joins", + "parameters", + "selectWithoutFrom", + "subqueries", + "unions", + ], + )?; + MessageMetricsSqlCapabilities::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsSqlCapabilities::deserialize(deserializer) } } } - impl serde::Serialize for GetAccountResponse404ApplicationProblemPlusJson { + impl serde::Serialize for MessageMetricsSqlCapabilities { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetAccountResponse404ApplicationProblemPlusJson::serialize(self, serializer) + MessageMetricsSqlCapabilities::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetAccountResponse410ApplicationProblemPlusJson { + pub struct MessageMetricsSqlLimits { #[serde( - rename = "code", - deserialize_with = "const_account_deleted_de", - serialize_with = "const_account_deleted_ser", + rename = "maximumParameterValueBytes", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, + pub maximum_parameter_value_bytes: i64, #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", + rename = "maximumParameters", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, + pub maximum_parameters: i64, #[serde( - rename = "title", - deserialize_with = "const_account_deleted_7029ef3c_de", - serialize_with = "const_account_deleted_7029ef3c_ser", + rename = "maximumSqlBytes", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub title: String, + pub maximum_sql_bytes: i64, #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_account_deleted_ser", + rename = "maximumTotalParameterBytes", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub r#type: String, + pub maximum_total_parameter_bytes: i64, } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse410ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for MessageMetricsSqlLimits { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -84275,309 +83227,176 @@ pub mod types { >( &value, &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", + "maximumParameterValueBytes", + "maximumParameters", + "maximumSqlBytes", + "maximumTotalParameterBytes", ], )?; - GetAccountResponse410ApplicationProblemPlusJson::deserialize(value) + MessageMetricsSqlLimits::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetAccountResponse410ApplicationProblemPlusJson::deserialize( - deserializer, - ) + MessageMetricsSqlLimits::deserialize(deserializer) } } } - impl serde::Serialize for GetAccountResponse410ApplicationProblemPlusJson { + impl serde::Serialize for MessageMetricsSqlLimits { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetAccountResponse410ApplicationProblemPlusJson::serialize(self, serializer) + MessageMetricsSqlLimits::serialize(self, serializer) } } - #[derive(Debug, Clone)] - pub enum GetAccountResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetAccountResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsSqlTable { + #[serde(rename = "columns")] + pub columns: Vec, + #[serde(rename = "currentState")] + pub current_state: String, + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "name")] + pub name: MessageMetricsSqlTableName, } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for MessageMetricsSqlTable { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetAccountResponse500ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetAccountResponse500ApplicationProblemPlusJson::GetAccountResponse500ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse500ApplicationProblemPlusJson", - )) + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["columns", "currentState", "description", "name"])?; + MessageMetricsSqlTable::deserialize(value) + .map_err(serde::de::Error::custom) } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse500ApplicationProblemPlusJson", - ), - ) + MessageMetricsSqlTable::deserialize(deserializer) } } } - impl serde::Serialize for GetAccountResponse500ApplicationProblemPlusJson { + impl serde::Serialize for MessageMetricsSqlTable { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - let value = match self { - GetAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAccountResponse500ApplicationProblemPlusJson::GetAccountResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); + MessageMetricsSqlTable::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsSqlColumn { + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "json", default, skip_serializing_if = "Option::is_none")] + pub json: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "type")] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsSqlColumn { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["description", "json", "name", "type"])?; + MessageMetricsSqlColumn::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsSqlColumn::deserialize(deserializer) } - if match_count == 1 { - value.serialize(serializer) + } + } + impl serde::Serialize for MessageMetricsSqlColumn { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsSqlColumn::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsJsonCatalog { + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "commonPaths")] + pub common_paths: Vec, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "discriminators")] + pub discriminators: Vec, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "platforms")] + pub platforms: Vec, + #[serde(rename = "resource")] + pub resource: MessageMetricsJsonResource, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonCatalog { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["commonPaths", "discriminators", "platforms", "resource"])?; + MessageMetricsJsonCatalog::deserialize(value) + .map_err(serde::de::Error::custom) } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAccountResponse500ApplicationProblemPlusJson", - ), - ) + MessageMetricsJsonCatalog::deserialize(deserializer) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetAccountResponse500ApplicationProblemPlusJsonVariant1; - pub use self::ChangePlanResponse502ApplicationProblemPlusJson as GetAccountResponse502ApplicationProblemPlusJson; + impl serde::Serialize for MessageMetricsJsonCatalog { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsJsonCatalog::serialize(self, serializer) + } + } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetAccountResponse503ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_upstream_unavailable_de", - serialize_with = "const_upstream_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, + pub struct MessageMetricsJsonPath { #[serde( - rename = "remediation", + rename = "additionalProperties", default, skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_upstream_service_unavailable_de", - serialize_with = "const_upstream_service_unavailable_ser", - )] - pub title: String, + pub additional_properties: Option, + ///Read-only: set by the server; ignored in requests. #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_ser", + rename = "contentTypes", + default, + skip_serializing_if = "Option::is_none", )] + pub content_types: Option>, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "directions", default, skip_serializing_if = "Option::is_none")] + pub directions: Option>, + #[serde(rename = "expression")] + pub expression: String, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "itemTypes", default, skip_serializing_if = "Option::is_none")] + pub item_types: Option>, + #[serde(rename = "path")] + pub path: String, + #[serde(rename = "required")] + pub required: bool, + #[serde(rename = "type")] pub r#type: String, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "values", default, skip_serializing_if = "Option::is_none")] + pub values: Option>, } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonPath { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -84589,287 +83408,235 @@ pub mod types { >( &value, &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", + "additionalProperties", + "contentTypes", + "directions", + "expression", + "itemTypes", + "path", + "required", "type", + "values", ], )?; - GetAccountResponse503ApplicationProblemPlusJson::deserialize(value) + MessageMetricsJsonPath::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetAccountResponse503ApplicationProblemPlusJson::deserialize( - deserializer, - ) + MessageMetricsJsonPath::deserialize(deserializer) + } + } + } + impl serde::Serialize for MessageMetricsJsonPath { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsJsonPath::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum MessageMetricsDirection { + ///`addressed` + Addressed, + ///`received` + Received, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl MessageMetricsDirection { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Addressed => "addressed", + Self::Received => "received", + Self::Unknown(value) => value, } } } - impl serde::Serialize for GetAccountResponse503ApplicationProblemPlusJson { + impl std::fmt::Display for MessageMetricsDirection { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for MessageMetricsDirection { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetAccountResponse503ApplicationProblemPlusJson::serialize(self, serializer) + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for MessageMetricsDirection { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "addressed" => Ok(Self::Addressed), + "received" => Ok(Self::Received), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `addressed`, `received`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } } } #[derive(Debug, Clone)] - pub enum GetAccountResponse504ApplicationProblemPlusJson { - GetAccountResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetAccountResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum MessageMetricsJsonPathValue { + MessageMetricsJsonPathValueVariant0(Box), + MessageMetricsJsonPathValueVariant1(Box), + MessageMetricsJsonPathValueVariant2(Box), } - impl<'de> serde::Deserialize<'de> - for GetAccountResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonPathValue { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetAccountResponse504ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetAccountResponse504ApplicationProblemPlusJson::GetAccountResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetAccountResponse504ApplicationProblemPlusJson::GetAccountResponse504ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - { - (match_count, selected) = select(true); + if value.is_boolean() { + return serde_json::from_value(value) + .map( + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant0, + ) + .map_err(serde::de::Error::custom); } - if match_count != 1 { - (match_count, selected) = select(false); + if value.is_number() { + return serde_json::from_value(value) + .map( + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant1, + ) + .map_err(serde::de::Error::custom); } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetAccountResponse504ApplicationProblemPlusJson", - ), - ) + if value.is_string() { + return serde_json::from_value(value) + .map( + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant2, + ) + .map_err(serde::de::Error::custom); } + Err( + serde::de::Error::custom( + "data did not match any variant of union MessageMetricsJsonPathValue", + ), + ) } } - impl serde::Serialize for GetAccountResponse504ApplicationProblemPlusJson { + impl serde::Serialize for MessageMetricsJsonPathValue { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - let value = match self { - GetAccountResponse504ApplicationProblemPlusJson::GetAccountResponse504ApplicationProblemPlusJsonVariant0( + match self { + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant0( inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAccountResponse504ApplicationProblemPlusJson::GetAccountResponse504ApplicationProblemPlusJsonVariant1( + ) => inner.serialize(serializer), + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant1( inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); + ) => inner.serialize(serializer), + MessageMetricsJsonPathValue::MessageMetricsJsonPathValueVariant2( + inner, + ) => inner.serialize(serializer), } - if match_count == 1 { - value.serialize(serializer) + } + } + #[derive(Debug, Clone)] + pub enum MessageMetricsJsonDiscriminator { + MessageMetricsJsonPathDiscriminator(Box), + MessageMetricsJsonOneOfPathsDiscriminator( + Box, + ), + } + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonDiscriminator { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + if value.get("path").is_some() { + return serde_json::from_value(value) + .map( + MessageMetricsJsonDiscriminator::MessageMetricsJsonPathDiscriminator, + ) + .map_err(serde::de::Error::custom); + } + if value.get("oneOfPaths").is_some() { + return serde_json::from_value(value) + .map( + MessageMetricsJsonDiscriminator::MessageMetricsJsonOneOfPathsDiscriminator, + ) + .map_err(serde::de::Error::custom); + } + Err( + serde::de::Error::custom( + "data did not match any variant of union MessageMetricsJsonDiscriminator", + ), + ) + } + } + impl serde::Serialize for MessageMetricsJsonDiscriminator { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + MessageMetricsJsonDiscriminator::MessageMetricsJsonPathDiscriminator( + inner, + ) => inner.serialize(serializer), + MessageMetricsJsonDiscriminator::MessageMetricsJsonOneOfPathsDiscriminator( + inner, + ) => inner.serialize(serializer), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsJsonPathDiscriminator { + #[serde(rename = "path")] + pub path: String, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "values")] + pub values: Vec, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonPathDiscriminator { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["path", "values"])?; + MessageMetricsJsonPathDiscriminator::deserialize(value) + .map_err(serde::de::Error::custom) } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAccountResponse504ApplicationProblemPlusJson", - ), - ) + MessageMetricsJsonPathDiscriminator::deserialize(deserializer) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetAccountResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetAccountResponse504ApplicationProblemPlusJsonVariant1; + impl serde::Serialize for MessageMetricsJsonPathDiscriminator { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsJsonPathDiscriminator::serialize(self, serializer) + } + } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetAgentProfileResponse200ApplicationJson { - #[serde(rename = "avatarUrl")] - pub avatar_url: String, - #[serde(rename = "firstName")] - pub first_name: String, - #[serde(rename = "lastName")] - pub last_name: Option, + pub struct MessageMetricsJsonOneOfPathsDiscriminator { + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "oneOfPaths")] + pub one_of_paths: Vec, } - impl<'de> serde::Deserialize<'de> for GetAgentProfileResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonOneOfPathsDiscriminator { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -84878,72 +83645,261 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["avatarUrl", "firstName", "lastName"])?; - GetAgentProfileResponse200ApplicationJson::deserialize(value) + >(&value, &["oneOfPaths"])?; + MessageMetricsJsonOneOfPathsDiscriminator::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsJsonOneOfPathsDiscriminator::deserialize(deserializer) + } + } + } + impl serde::Serialize for MessageMetricsJsonOneOfPathsDiscriminator { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsJsonOneOfPathsDiscriminator::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsPlatformJsonPaths { + #[serde(rename = "name")] + pub name: MessageMetricsPlatform, + ///Read-only: set by the server; ignored in requests. + #[serde(rename = "paths")] + pub paths: Vec, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsPlatformJsonPaths { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["name", "paths"])?; + MessageMetricsPlatformJsonPaths::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsPlatformJsonPaths::deserialize(deserializer) + } + } + } + impl serde::Serialize for MessageMetricsPlatformJsonPaths { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsPlatformJsonPaths::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum MessageMetricsPlatform { + ///`email` + Email, + ///`imessage` + Imessage, + ///`sms` + Sms, + ///`telegram` + Telegram, + ///`voice` + Voice, + ///`whatsapp` + Whatsapp, + ///`whatsapp_business` + WhatsappBusiness, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl MessageMetricsPlatform { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Email => "email", + Self::Imessage => "imessage", + Self::Sms => "sms", + Self::Telegram => "telegram", + Self::Voice => "voice", + Self::Whatsapp => "whatsapp", + Self::WhatsappBusiness => "whatsapp_business", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for MessageMetricsPlatform { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for MessageMetricsPlatform { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for MessageMetricsPlatform { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "email" => Ok(Self::Email), + "imessage" => Ok(Self::Imessage), + "sms" => Ok(Self::Sms), + "telegram" => Ok(Self::Telegram), + "voice" => Ok(Self::Voice), + "whatsapp" => Ok(Self::Whatsapp), + "whatsapp_business" => Ok(Self::WhatsappBusiness), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `email`, `imessage`, `sms`, `telegram`, `voice`, `whatsapp`, `whatsapp_business`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsJsonResource { + #[serde(rename = "contractsVersion")] + pub contracts_version: String, + #[serde( + rename = "type", + deserialize_with = "const_message_de", + serialize_with = "const_message_ser", + )] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsJsonResource { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["contractsVersion", "type"])?; + MessageMetricsJsonResource::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetAgentProfileResponse200ApplicationJson::deserialize(deserializer) + MessageMetricsJsonResource::deserialize(deserializer) } } } - impl serde::Serialize for GetAgentProfileResponse200ApplicationJson { + impl serde::Serialize for MessageMetricsJsonResource { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetAgentProfileResponse200ApplicationJson::serialize(self, serializer) + MessageMetricsJsonResource::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum MessageMetricsSqlTableName { + #[serde(rename = "message_events")] + MessageEvents, + } + impl std::fmt::Display for MessageMetricsSqlTableName { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + MessageMetricsSqlTableName::MessageEvents => "message_events", + }, + ) } } #[derive(Debug, Clone)] - pub enum GetAgentProfileResponse403ApplicationProblemPlusJson { - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetOperationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetAgentProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetOperationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetAgentProfileResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetOperationForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOperationForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -84964,35 +83920,31 @@ pub mod types { if replace { selected = Some(( rank, - GetAgentProfileResponse403ApplicationProblemPlusJson::GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), + GetOperationForbiddenProblem::InsufficientScopeProblem(inner), )); } } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -85005,7 +83957,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -85013,7 +83965,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAgentProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOperationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -85030,22 +83982,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -85066,9 +84012,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAgentProfileResponse403ApplicationProblemPlusJson::GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + GetOperationForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -85099,6 +84043,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -85117,51 +84071,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAgentProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAgentProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationForbiddenProblem", ), ) } } } - impl serde::Serialize for GetAgentProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetOperationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAgentProfileResponse403ApplicationProblemPlusJson::GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAgentProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAgentProfileResponse403ApplicationProblemPlusJson::GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOperationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOperationForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOperationForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOperationForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -85170,16 +84136,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -85188,23 +84154,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -85223,149 +84181,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAgentProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOperationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetAgentProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetAgentProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteProjectResponse404ApplicationProblemPlusJson as GetAgentProfileResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetAgentProfileResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_deleted_de", - serialize_with = "const_project_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_deleted_07a3e332_de", - serialize_with = "const_project_deleted_07a3e332_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_project_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetAgentProfileResponse410ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetAgentProfileResponse410ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetAgentProfileResponse410ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetAgentProfileResponse410ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetAgentProfileResponse410ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as GetAgentProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetAgentProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetAgentProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as GetAgentProfileResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as GetAgentProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetAgentProfileResponse504ApplicationProblemPlusJson { - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOperationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetAgentProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetOperationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetAgentProfileResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetOperationGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -85386,7 +84243,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAgentProfileResponse504ApplicationProblemPlusJson::GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0( + GetOperationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -85394,31 +84251,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -85439,7 +84290,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAgentProfileResponse504ApplicationProblemPlusJson::GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1( + GetOperationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -85458,21 +84309,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -85483,49 +84334,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAgentProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAgentProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetAgentProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetOperationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAgentProfileResponse504ApplicationProblemPlusJson::GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAgentProfileResponse504ApplicationProblemPlusJson::GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOperationGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOperationGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -85533,23 +84376,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -85568,127 +84403,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAgentProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOperationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetAgentProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetAgentProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetAttachmentResponse200ApplicationJson { - #[serde(rename = "contentType")] - pub content_type: String, - #[serde( - rename = "createdAt", - serialize_with = "super::support::serialize_millis", - )] - pub created_at: DateTime, - #[serde(rename = "filename", default, skip_serializing_if = "Option::is_none")] - pub filename: Option, - #[serde(rename = "id")] - pub id: String, - #[serde(rename = "metadata", default, skip_serializing_if = "Option::is_none")] - pub metadata: Option>, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "sizeBytes", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub size_bytes: i64, - #[serde( - rename = "updatedAt", - serialize_with = "super::support::serialize_millis", - )] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for GetAttachmentResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "contentType", - "createdAt", - "filename", - "id", - "metadata", - "projectId", - "sizeBytes", - "updatedAt", - ], - )?; - GetAttachmentResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetAttachmentResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for GetAttachmentResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetAttachmentResponse200ApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum GetAttachmentResponse403ApplicationProblemPlusJson { - GetAttachmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetAttachmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetOperationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetAttachmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetOperationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetAttachmentResponse403ApplicationProblemPlusJson), + ((usize, u32), GetOperationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -85709,56 +84465,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse403ApplicationProblemPlusJson::GetAttachmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOperationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -85766,31 +84473,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -85811,7 +84512,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse403ApplicationProblemPlusJson::GetAttachmentResponse403ApplicationProblemPlusJsonVariant2( + GetOperationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -85829,29 +84530,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -85862,70 +84558,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOperationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetAttachmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetOperationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAttachmentResponse403ApplicationProblemPlusJson::GetAttachmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAttachmentResponse403ApplicationProblemPlusJson::GetAttachmentResponse403ApplicationProblemPlusJsonVariant2( + GetOperationInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOperationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -85933,22 +84600,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -85968,53 +84629,303 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAttachmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOperationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetAttachmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetAttachmentResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetAttachmentResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_attachment_not_found_de", - serialize_with = "const_attachment_not_found_ser", - )] - pub code: String, + pub struct GetOperationResponse { + #[serde(rename = "operation")] + pub operation: Operation, + #[serde(rename = "resource", default, skip_serializing_if = "Option::is_none")] + pub resource: Option, + } + impl<'de> serde::Deserialize<'de> for GetOperationResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["operation", "resource"])?; + GetOperationResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + GetOperationResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetOperationResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetOperationResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct Operation { + #[serde(rename = "cancellable")] + pub cancellable: bool, + #[serde(rename = "createdAt")] + pub created_at: DateTime, #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_attachment_not_found_3a39522e_de", - serialize_with = "const_attachment_not_found_3a39522e_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_attachment_not_found_ser", - )] + pub detail: Option>, + #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] + pub ended_at: Option, + #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] + pub error: Option, + #[serde(rename = "operationId")] + pub operation_id: String, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] + pub resource_id: Option, + #[serde(rename = "resourceType")] + pub resource_type: String, + #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] + pub started_at: Option, + #[serde(rename = "state")] + pub state: OperationState, + #[serde(rename = "type")] + pub r#type: OperationType, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for Operation { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "cancellable", + "createdAt", + "detail", + "endedAt", + "error", + "operationId", + "projectId", + "resourceId", + "resourceType", + "startedAt", + "state", + "type", + "updatedAt", + ], + )?; + Operation::deserialize(value).map_err(serde::de::Error::custom) + } else { + Operation::deserialize(deserializer) + } + } + } + impl serde::Serialize for Operation { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + Operation::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OperationError { + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "detail")] + pub detail: String, + } + impl<'de> serde::Deserialize<'de> for OperationError { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["code", "detail"])?; + OperationError::deserialize(value).map_err(serde::de::Error::custom) + } else { + OperationError::deserialize(deserializer) + } + } + } + impl serde::Serialize for OperationError { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OperationError::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OperationState { + ///`pending` + Pending, + ///`running` + Running, + ///`succeeded` + Succeeded, + ///`failed` + Failed, + ///`cancelled` + Cancelled, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OperationState { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Pending => "pending", + Self::Running => "running", + Self::Succeeded => "succeeded", + Self::Failed => "failed", + Self::Cancelled => "cancelled", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OperationState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OperationState { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OperationState { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pending" => Ok(Self::Pending), + "running" => Ok(Self::Running), + "succeeded" => Ok(Self::Succeeded), + "failed" => Ok(Self::Failed), + "cancelled" => Ok(Self::Cancelled), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `pending`, `running`, `succeeded`, `failed`, `cancelled`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OperationType { + ///`resource.provision` + ResourceProvision, + ///`resource.release` + ResourceRelease, + ///`whatsapp.account.disconnect` + WhatsappAccountDisconnect, + ///`sms.campaign.assign` + SmsCampaignAssign, + ///`sms.campaign.unassign` + SmsCampaignUnassign, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OperationType { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::ResourceProvision => "resource.provision", + Self::ResourceRelease => "resource.release", + Self::WhatsappAccountDisconnect => "whatsapp.account.disconnect", + Self::SmsCampaignAssign => "sms.campaign.assign", + Self::SmsCampaignUnassign => "sms.campaign.unassign", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OperationType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OperationType { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OperationType { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "resource.provision" => Ok(Self::ResourceProvision), + "resource.release" => Ok(Self::ResourceRelease), + "whatsapp.account.disconnect" => Ok(Self::WhatsappAccountDisconnect), + "sms.campaign.assign" => Ok(Self::SmsCampaignAssign), + "sms.campaign.unassign" => Ok(Self::SmsCampaignUnassign), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `resource.provision`, `resource.release`, `whatsapp.account.disconnect`, `sms.campaign.assign`, `sms.campaign.unassign`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct Resource { + #[serde(rename = "abilities")] + pub abilities: Vec, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "detail")] + pub detail: std::collections::BTreeMap, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "resourceId")] + pub resource_id: String, + #[serde(rename = "retiredAt", default, skip_serializing_if = "Option::is_none")] + pub retired_at: Option, + #[serde(rename = "state")] + pub state: ResourceState, + #[serde(rename = "type")] pub r#type: String, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, } - impl<'de> serde::Deserialize<'de> - for GetAttachmentResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for Resource { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -86026,78 +84937,173 @@ pub mod types { >( &value, &[ - "code", + "abilities", + "createdAt", "detail", - "instance", - "remediation", - "requestId", - "status", - "title", + "projectId", + "resourceId", + "retiredAt", + "state", "type", + "updatedAt", ], )?; - GetAttachmentResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) + Resource::deserialize(value).map_err(serde::de::Error::custom) } else { - GetAttachmentResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) + Resource::deserialize(deserializer) } } } - impl serde::Serialize for GetAttachmentResponse404ApplicationProblemPlusJson { + impl serde::Serialize for Resource { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetAttachmentResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + Resource::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum ResourceState { + ///`unallocated` + Unallocated, + ///`active` + Active, + ///`retired` + Retired, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl ResourceState { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Unallocated => "unallocated", + Self::Active => "active", + Self::Retired => "retired", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for ResourceState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for ResourceState { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for ResourceState { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "unallocated" => Ok(Self::Unallocated), + "active" => Ok(Self::Active), + "retired" => Ok(Self::Retired), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `unallocated`, `active`, `retired`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } } } - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as GetAttachmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetAttachmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetAttachmentResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetAttachmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetAttachmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationBillingOverviewForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetAttachmentResponse500ApplicationProblemPlusJson { + for GetOrganizationBillingOverviewForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetAttachmentResponse500ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationBillingOverviewForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationBillingOverviewForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -86110,7 +85116,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -86118,7 +85124,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationBillingOverviewForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -86126,31 +85132,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationBillingOverviewForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -86171,7 +85218,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse500ApplicationProblemPlusJson::GetAttachmentResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationBillingOverviewForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -86189,24 +85236,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -86217,42 +85279,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewForbiddenProblem", ), ) } } } - impl serde::Serialize for GetAttachmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationBillingOverviewForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationBillingOverviewForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAttachmentResponse500ApplicationProblemPlusJson::GetAttachmentResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationBillingOverviewForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOrganizationBillingOverviewForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOrganizationBillingOverviewForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -86261,22 +85344,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -86285,6 +85362,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -86296,64 +85389,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAttachmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetAttachmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as GetAttachmentResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as GetAttachmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetAttachmentResponse504ApplicationProblemPlusJson { - GetAttachmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetAttachmentResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationBillingOverviewGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetAttachmentResponse504ApplicationProblemPlusJson { + for GetOrganizationBillingOverviewGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetAttachmentResponse504ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationBillingOverviewGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -86374,7 +85454,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse504ApplicationProblemPlusJson::GetAttachmentResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationBillingOverviewGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -86382,31 +85462,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -86427,7 +85501,7 @@ pub mod types { if replace { selected = Some(( rank, - GetAttachmentResponse504ApplicationProblemPlusJson::GetAttachmentResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationBillingOverviewGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -86446,21 +85520,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -86471,49 +85545,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetAttachmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetAttachmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationBillingOverviewGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetAttachmentResponse504ApplicationProblemPlusJson::GetAttachmentResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationBillingOverviewGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetAttachmentResponse504ApplicationProblemPlusJson::GetAttachmentResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationBillingOverviewGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -86521,23 +85587,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -86556,95 +85614,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetAttachmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetAttachmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetAttachmentResponse504ApplicationProblemPlusJsonVariant1; - ///Authoritative provisioning state. Poll the operation route while pending. #[derive(Debug, Clone)] - pub enum GetBillingOperationResponse200ApplicationJson { - GetBillingOperationResponse200ApplicationJsonVariant0( - Box, - ), - GetBillingOperationResponse200ApplicationJsonVariant1( - Box, - ), - GetBillingOperationResponse200ApplicationJsonVariant2( - Box, - ), + pub enum GetOrganizationBillingOverviewInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> for GetBillingOperationResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> + for GetOrganizationBillingOverviewInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOperationResponse200ApplicationJson), + ((usize, u32), GetOrganizationBillingOverviewInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("pending")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1147u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("succeeded")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -86657,7 +85669,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1147u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -86665,27 +85677,33 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant1( + GetOrganizationBillingOverviewInternalServerErrorProblem::InternalErrorProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("failed")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -86698,7 +85716,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1147u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -86706,7 +85724,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant2( + GetOrganizationBillingOverviewInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -86724,11 +85742,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("status").and_then(serde_json::Value::as_str) == Some("pending") - || value.get("status").and_then(serde_json::Value::as_str) - == Some("succeeded") - || value.get("status").and_then(serde_json::Value::as_str) - == Some("failed") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -86739,68 +85770,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse200ApplicationJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse200ApplicationJson", + "data must match exactly one typed variant of union GetOrganizationBillingOverviewInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetBillingOperationResponse200ApplicationJson { + impl serde::Serialize for GetOrganizationBillingOverviewInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant1( + GetOrganizationBillingOverviewInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse200ApplicationJson::GetBillingOperationResponse200ApplicationJsonVariant2( + GetOrganizationBillingOverviewInternalServerErrorProblem::InvalidAuthContextProblem( inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -86808,18 +85812,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -86839,94 +85841,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOperationResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewInternalServerErrorProblem", ), ) } } } - pub use self::ChangePlanResponse200ApplicationJsonVariant0kind as GetBillingOperationResponse200ApplicationJsonVariant0kind; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOperationResponse200ApplicationJsonVariant0 { - #[serde(rename = "failure")] - pub failure: Option<()>, - #[serde(rename = "kind")] - pub kind: GetBillingOperationResponse200ApplicationJsonVariant0kind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option<()>, - #[serde(rename = "result")] - pub result: Option<()>, - ///Accepted and still executing. Poll the operation route. - #[serde( - rename = "status", - deserialize_with = "const_pending_de", - serialize_with = "const_pending_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", - "status", - "submittedAt", - ], - )?; - GetBillingOperationResponse200ApplicationJsonVariant0::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetBillingOperationResponse200ApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetBillingOperationResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOperationResponse200ApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::ChangePlanResponse200ApplicationJsonVariant0kind as GetBillingOperationResponse200ApplicationJsonVariant1kind; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetBillingOperationResponse200ApplicationJsonVariant1result { + pub struct GetOrganizationBillingOverviewResponse { + ///Bumps on every entitlement change for the organization. #[serde( - rename = "type", - deserialize_with = "const_version_de", - serialize_with = "const_version_ser", + rename = "entitlementsVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", )] - pub r#type: String, - #[serde(rename = "version")] - pub version: String, + pub entitlements_version: i64, + ///The organization-owned subscription, or null when billing was never opened or has ended. + #[serde(rename = "subscription")] + pub subscription: Option, } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse200ApplicationJsonVariant1result { + impl<'de> serde::Deserialize<'de> for GetOrganizationBillingOverviewResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -86935,56 +85869,43 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["type", "version"])?; - GetBillingOperationResponse200ApplicationJsonVariant1result::deserialize( - value, - ) + >(&value, &["entitlementsVersion", "subscription"])?; + GetOrganizationBillingOverviewResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetBillingOperationResponse200ApplicationJsonVariant1result::deserialize( - deserializer, - ) + GetOrganizationBillingOverviewResponse::deserialize(deserializer) } } } - impl serde::Serialize - for GetBillingOperationResponse200ApplicationJsonVariant1result { + impl serde::Serialize for GetOrganizationBillingOverviewResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetBillingOperationResponse200ApplicationJsonVariant1result::serialize( - self, - serializer, - ) + GetOrganizationBillingOverviewResponse::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetBillingOperationResponse200ApplicationJsonVariant1 { - #[serde(rename = "failure")] - pub failure: Option<()>, - #[serde(rename = "kind")] - pub kind: GetBillingOperationResponse200ApplicationJsonVariant1kind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option, - #[serde(rename = "result")] - pub result: GetBillingOperationResponse200ApplicationJsonVariant1result, - ///Terminal. The result is authoritative. - #[serde( - rename = "status", - deserialize_with = "const_succeeded_de", - serialize_with = "const_succeeded_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, + pub struct OrganizationSubscription { + ///When the subscription will end, ISO 8601. + #[serde(rename = "cancelsAt")] + pub cancels_at: Option, + ///End of the current billing period, ISO 8601. + #[serde(rename = "currentPeriodEnd")] + pub current_period_end: Option, + #[serde(rename = "entitlements")] + pub entitlements: Vec, + ///Fixed charges defined by the organization's current plan. Quantity is the plan default. + #[serde(rename = "fixedCharges")] + pub fixed_charges: Vec, + ///The organization's plan; display only. + #[serde(rename = "planCode")] + pub plan_code: String, + #[serde(rename = "status")] + pub status: SubscriptionStatus, } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse200ApplicationJsonVariant1 { + impl<'de> serde::Deserialize<'de> for OrganizationSubscription { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -86996,111 +85917,40 @@ pub mod types { >( &value, &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", + "cancelsAt", + "currentPeriodEnd", + "entitlements", + "fixedCharges", + "planCode", "status", - "submittedAt", ], )?; - GetBillingOperationResponse200ApplicationJsonVariant1::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetBillingOperationResponse200ApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetBillingOperationResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOperationResponse200ApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } - ///Stable provider-neutral failure category. - pub use self::ChangePlanResponse200ApplicationJsonVariant1failurecode as GetBillingOperationResponse200ApplicationJsonVariant2failurecode; - pub use self::ChangePlanResponse200ApplicationJsonVariant1failuredetail as GetBillingOperationResponse200ApplicationJsonVariant2failuredetail; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOperationResponse200ApplicationJsonVariant2failure { - #[serde(rename = "code")] - pub code: GetBillingOperationResponse200ApplicationJsonVariant2failurecode, - #[serde(rename = "detail")] - pub detail: Option< - GetBillingOperationResponse200ApplicationJsonVariant2failuredetail, - >, - #[serde(rename = "retryable")] - pub retryable: bool, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse200ApplicationJsonVariant2failure { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "detail", "retryable"])?; - GetBillingOperationResponse200ApplicationJsonVariant2failure::deserialize( - value, - ) + OrganizationSubscription::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetBillingOperationResponse200ApplicationJsonVariant2failure::deserialize( - deserializer, - ) + OrganizationSubscription::deserialize(deserializer) } } } - impl serde::Serialize - for GetBillingOperationResponse200ApplicationJsonVariant2failure { + impl serde::Serialize for OrganizationSubscription { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetBillingOperationResponse200ApplicationJsonVariant2failure::serialize( - self, - serializer, - ) + OrganizationSubscription::serialize(self, serializer) } } - pub use self::ChangePlanResponse200ApplicationJsonVariant0kind as GetBillingOperationResponse200ApplicationJsonVariant2kind; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetBillingOperationResponse200ApplicationJsonVariant2 { - #[serde(rename = "failure")] - pub failure: GetBillingOperationResponse200ApplicationJsonVariant2failure, - #[serde(rename = "kind")] - pub kind: GetBillingOperationResponse200ApplicationJsonVariant2kind, - ///Stable handle for this provisioning action. - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "resolvedAt")] - pub resolved_at: Option, - #[serde(rename = "result")] - pub result: Option<()>, - ///Terminal. Failure contains a stable code and retryability. - #[serde( - rename = "status", - deserialize_with = "const_failed_de", - serialize_with = "const_failed_ser", - )] - pub status: String, - #[serde(rename = "submittedAt")] - pub submitted_at: Option, + pub struct OrganizationSubscriptionEntitlement { + ///Feature gate key. + #[serde(rename = "featureKey")] + pub feature_key: String, + ///Gate value as a string. + #[serde(rename = "value")] + pub value: String, } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse200ApplicationJsonVariant2 { + impl<'de> serde::Deserialize<'de> for OrganizationSubscriptionEntitlement { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -87109,60 +85959,37 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "failure", - "kind", - "operationId", - "resolvedAt", - "result", - "status", - "submittedAt", - ], - )?; - GetBillingOperationResponse200ApplicationJsonVariant2::deserialize(value) + >(&value, &["featureKey", "value"])?; + OrganizationSubscriptionEntitlement::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetBillingOperationResponse200ApplicationJsonVariant2::deserialize( - deserializer, - ) + OrganizationSubscriptionEntitlement::deserialize(deserializer) } } } - impl serde::Serialize for GetBillingOperationResponse200ApplicationJsonVariant2 { + impl serde::Serialize for OrganizationSubscriptionEntitlement { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetBillingOperationResponse200ApplicationJsonVariant2::serialize( - self, - serializer, - ) + OrganizationSubscriptionEntitlement::serialize(self, serializer) } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetBillingOperationResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetBillingOperationResponse403ApplicationProblemPlusJson { - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetOrganizationConnectionStatusForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse403ApplicationProblemPlusJson { + for GetOrganizationConnectionStatusForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOperationResponse403ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationConnectionStatusForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -87176,25 +86003,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -87214,7 +86031,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse403ApplicationProblemPlusJson::GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0( + GetOrganizationConnectionStatusForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -87231,18 +86048,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -87255,7 +86070,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -87263,7 +86078,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationConnectionStatusForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -87271,33 +86086,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -87318,7 +86125,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse403ApplicationProblemPlusJson::GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationConnectionStatusForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -87352,13 +86159,15 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -87369,69 +86178,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusForbiddenProblem", ), ) } } } - impl serde::Serialize for GetBillingOperationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationConnectionStatusForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOperationResponse403ApplicationProblemPlusJson::GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0( + GetOrganizationConnectionStatusForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationConnectionStatusForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse403ApplicationProblemPlusJson::GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationConnectionStatusForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -87440,22 +86240,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -87475,139 +86269,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOperationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetBillingOperationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetBillingOperationResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOperationResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_operation_not_found_de", - serialize_with = "const_operation_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_operation_not_found_33d81836_de", - serialize_with = "const_operation_not_found_33d81836_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_operation_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_operation_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetBillingOperationResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOperationResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetBillingOperationResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOperationResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as GetBillingOperationResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetBillingOperationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetBillingOperationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetBillingOperationResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetBillingOperationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationConnectionStatusGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse500ApplicationProblemPlusJson { + for GetOrganizationConnectionStatusGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOperationResponse500ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationConnectionStatusGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -87620,7 +86326,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -87628,7 +86334,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationConnectionStatusGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -87636,33 +86342,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -87683,7 +86381,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse500ApplicationProblemPlusJson::GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationConnectionStatusGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -87702,23 +86400,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -87729,43 +86425,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetBillingOperationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationConnectionStatusGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationConnectionStatusGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse500ApplicationProblemPlusJson::GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationConnectionStatusGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -87773,23 +86467,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -87808,66 +86494,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOperationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetBillingOperationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetBillingOperationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetBillingOperationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetBillingOperationResponse504ApplicationProblemPlusJson { - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationConnectionStatusInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOperationResponse504ApplicationProblemPlusJson { + for GetOrganizationConnectionStatusInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOperationResponse504ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationConnectionStatusInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -87888,7 +86557,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse504ApplicationProblemPlusJson::GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationConnectionStatusInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -87896,33 +86565,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -87943,7 +86604,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOperationResponse504ApplicationProblemPlusJson::GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationConnectionStatusInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -87962,21 +86623,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -87987,49 +86650,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationConnectionStatusInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetBillingOperationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationConnectionStatusInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOperationResponse504ApplicationProblemPlusJson::GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationConnectionStatusInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOperationResponse504ApplicationProblemPlusJson::GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationConnectionStatusInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -88037,22 +86692,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -88072,640 +86721,425 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOperationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetBillingOperationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetBillingOperationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJson { - ///Bumps on every entitlement change in any category. - #[serde( - rename = "entitlementsVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub entitlements_version: i64, - ///One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. - #[serde(rename = "subscriptions")] - pub subscriptions: Vec< - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem, - >, - ///Current-period metered usage, priced. - #[serde(rename = "usage")] - pub usage: Vec, - } - impl<'de> serde::Deserialize<'de> for GetBillingOverviewResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["entitlementsVersion", "subscriptions", "usage"])?; - GetBillingOverviewResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for GetBillingOverviewResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem { - ///Feature gate key, e.g. imessage_shared_lines.max_user_assignments. - #[serde(rename = "featureKey")] - pub feature_key: String, - ///Gate value as a string. - #[serde(rename = "value")] - pub value: String, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["featureKey", "value"])?; - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel { - ///`graduated` - Graduated, - ///`standard` - Standard, - ///`volume` - Volume, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Graduated => "graduated", - Self::Standard => "standard", - Self::Volume => "volume", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } + #[derive(Debug, Clone)] + pub enum GetOrganizationPaymentMethodForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel { + impl<'de> serde::Deserialize<'de> for GetOrganizationPaymentMethodForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "graduated" => Ok(Self::Graduated), - "standard" => Ok(Self::Standard), - "volume" => Ok(Self::Volume), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `graduated`, `standard`, `volume`", - ), - ) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), GetOrganizationPaymentMethodForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationPaymentMethodForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem { - #[serde(rename = "flatAmount")] - pub flat_amount: Option, - #[serde(rename = "fromUnit", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub from_unit: i64, - #[serde(rename = "perUnitAmount")] - pub per_unit_amount: Option, - #[serde( - rename = "toUnit", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub to_unit: Option, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["flatAmount", "fromUnit", "perUnitAmount", "toUnit"])?; - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing { - #[serde(rename = "amount")] - pub amount: Option, - #[serde(rename = "tiers")] - pub tiers: Vec< - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem, - >, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["amount", "tiers"])?; - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem { - #[serde(rename = "chargeModel")] - pub charge_model: GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel, - #[serde(rename = "displayName")] - pub display_name: String, - #[serde(rename = "fixedChargeCode")] - pub fixed_charge_code: String, - #[serde(rename = "payInAdvance")] - pub pay_in_advance: bool, - #[serde(rename = "pricing")] - pub pricing: GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing, - #[serde(rename = "prorated")] - pub prorated: bool, - #[serde(rename = "quantity", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub quantity: i64, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "chargeModel", - "displayName", - "fixedChargeCode", - "payInAdvance", - "pricing", - "prorated", - "quantity", - ], - )?; - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem::serialize( - self, - serializer, - ) - } - } - ///State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus { - ///`active` - Active, - ///`past_due` - PastDue, - ///`terminated` - Terminated, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Active => "active", - Self::PastDue => "past_due", - Self::Terminated => "terminated", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "active" => Ok(Self::Active), - "past_due" => Ok(Self::PastDue), - "terminated" => Ok(Self::Terminated), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `active`, `past_due`, `terminated`", - ), - ) + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationPaymentMethodForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem { - ///When the subscription will end instead of renewing, ISO 8601. - #[serde(rename = "cancelsAt")] - pub cancels_at: Option, - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - ///Display name for the subscription category; absent or null when unconfigured. - #[serde( - rename = "categoryDisplayName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub category_display_name: Option>, - ///End of the current billing period, ISO 8601. - #[serde(rename = "currentPeriodEnd")] - pub current_period_end: Option, - ///Feature gates granted by this category's plan. - #[serde(rename = "entitlements")] - pub entitlements: Vec< - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItementitlementsItem, - >, - ///Fixed charges defined by this category's current plan. Quantity is the plan default. - #[serde(rename = "fixedCharges")] - pub fixed_charges: Vec< - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem, - >, - ///This category's plan; display only. - #[serde(rename = "planCode")] - pub plan_code: String, - #[serde(rename = "status")] - pub status: GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancelsAt", - "category", - "categoryDisplayName", - "currentPeriodEnd", - "entitlements", - "fixedCharges", - "planCode", - "status", - ], - )?; - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetBillingOverviewResponse200ApplicationJsonsubscriptionsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetBillingOverviewResponse200ApplicationJsonusageItem { - ///Cost accrued so far. - #[serde( - rename = "amountCents", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub amount_cents: i64, - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - ///Display name for the subscription category; absent or null when unconfigured. - #[serde( - rename = "categoryDisplayName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub category_display_name: Option>, - ///ISO currency code. - #[serde(rename = "currency")] - pub currency: String, - ///Display name for this usage item. - #[serde(rename = "displayName")] - pub display_name: String, - ///Metered thing, e.g. imessage_message. - #[serde(rename = "metricCode")] - pub metric_code: String, - ///Units consumed this period. - #[serde(rename = "units", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub units: i64, - } - impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse200ApplicationJsonusageItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "amountCents", - "category", - "categoryDisplayName", - "currency", - "displayName", - "metricCode", - "units", - ], - )?; - GetBillingOverviewResponse200ApplicationJsonusageItem::deserialize(value) - .map_err(serde::de::Error::custom) + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationPaymentMethodForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationPaymentMethodForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetOrganizationPaymentMethodForbiddenProblem", + )) } else { - GetBillingOverviewResponse200ApplicationJsonusageItem::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetOrganizationPaymentMethodForbiddenProblem", + ), ) } } } - impl serde::Serialize for GetBillingOverviewResponse200ApplicationJsonusageItem { + impl serde::Serialize for GetOrganizationPaymentMethodForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetBillingOverviewResponse200ApplicationJsonusageItem::serialize( - self, - serializer, - ) + let value = match self { + GetOrganizationPaymentMethodForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetOrganizationPaymentMethodForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOrganizationPaymentMethodForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOrganizationPaymentMethodForbiddenProblem::ResourceMismatchProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodForbiddenProblem", + ), + ) + } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetBillingOverviewResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetBillingOverviewResponse403ApplicationProblemPlusJson { - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetOrganizationPaymentMethodGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse403ApplicationProblemPlusJson { + for GetOrganizationPaymentMethodGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOverviewResponse403ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationPaymentMethodGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetBillingOverviewResponse403ApplicationProblemPlusJson::GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -88718,7 +87152,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -88726,7 +87160,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationPaymentMethodGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -88734,33 +87168,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -88781,7 +87207,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse403ApplicationProblemPlusJson::GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationPaymentMethodGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -88799,29 +87225,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -88832,70 +87251,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationPaymentMethodGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationPaymentMethodGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetBillingOverviewResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationPaymentMethodGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOverviewResponse403ApplicationProblemPlusJson::GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOverviewResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationPaymentMethodGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOverviewResponse403ApplicationProblemPlusJson::GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationPaymentMethodGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -88903,23 +87293,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -88938,34 +87320,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOverviewResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetBillingOverviewResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as GetBillingOverviewResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetBillingOverviewResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetBillingOverviewResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetBillingOverviewResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetBillingOverviewResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationPaymentMethodInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse500ApplicationProblemPlusJson { + for GetOrganizationPaymentMethodInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOverviewResponse500ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationPaymentMethodInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -88979,16 +87353,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -89001,7 +87375,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -89009,7 +87383,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationPaymentMethodInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -89026,24 +87400,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -89064,7 +87430,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse500ApplicationProblemPlusJson::GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationPaymentMethodInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -89110,43 +87476,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationPaymentMethodInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationPaymentMethodInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetBillingOverviewResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationPaymentMethodInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOverviewResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationPaymentMethodInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOverviewResponse500ApplicationProblemPlusJson::GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationPaymentMethodInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -89154,22 +87518,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -89189,66 +87547,134 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOverviewResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetBillingOverviewResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetBillingOverviewResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetBillingOverviewResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct GetOrganizationPaymentMethodResponse { + ///True once a card is captured for the payer. + #[serde(rename = "cardOnFile")] + pub card_on_file: bool, + ///Metadata for the default card, or null. + #[serde(rename = "paymentMethod")] + pub payment_method: Option, + } + impl<'de> serde::Deserialize<'de> for GetOrganizationPaymentMethodResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["cardOnFile", "paymentMethod"])?; + GetOrganizationPaymentMethodResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + GetOrganizationPaymentMethodResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetOrganizationPaymentMethodResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetOrganizationPaymentMethodResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct PaymentMethod { + ///Card network brand, e.g. visa. + #[serde(rename = "brand")] + pub brand: Option, + ///Card expiration month. + #[serde( + rename = "expiresMonth", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub expires_month: Option, + ///Four-digit card expiration year. + #[serde( + rename = "expiresYear", + default, + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub expires_year: Option, + ///Last four card digits. + #[serde(rename = "last4")] + pub last4: Option, + } + impl<'de> serde::Deserialize<'de> for PaymentMethod { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["brand", "expiresMonth", "expiresYear", "last4"])?; + PaymentMethod::deserialize(value).map_err(serde::de::Error::custom) + } else { + PaymentMethod::deserialize(deserializer) + } + } + } + impl serde::Serialize for PaymentMethod { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + PaymentMethod::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum GetBillingOverviewResponse504ApplicationProblemPlusJson { - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationSsoConfigurationBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetBillingOverviewResponse504ApplicationProblemPlusJson { + for GetOrganizationSsoConfigurationBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetBillingOverviewResponse504ApplicationProblemPlusJson), + ((usize, u32), GetOrganizationSsoConfigurationBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -89269,7 +87695,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse504ApplicationProblemPlusJson::GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -89277,33 +87703,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -89324,7 +87742,7 @@ pub mod types { if replace { selected = Some(( rank, - GetBillingOverviewResponse504ApplicationProblemPlusJson::GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -89343,21 +87761,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -89368,49 +87786,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetBillingOverviewResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationBadRequestProblem", ), ) } } } - impl serde::Serialize for GetBillingOverviewResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationSsoConfigurationBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetBillingOverviewResponse504ApplicationProblemPlusJson::GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetBillingOverviewResponse504ApplicationProblemPlusJson::GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -89418,23 +87828,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -89453,121 +87855,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetBillingOverviewResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetBillingOverviewResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetDefaultVoiceProfileResponse200ApplicationJson { - #[serde(rename = "configuration")] - pub configuration: GetDefaultVoiceProfileResponse200ApplicationJsonconfiguration, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "isDefault")] - pub is_default: bool, - #[serde(rename = "lineCount", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub line_count: i64, - #[serde(rename = "mediaEncryption")] - pub media_encryption: GetDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "profileId")] - pub profile_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", - )] - pub protocol: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub version: i64, - } - impl<'de> serde::Deserialize<'de> - for GetDefaultVoiceProfileResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version", - ], - )?; - GetDefaultVoiceProfileResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetDefaultVoiceProfileResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetDefaultVoiceProfileResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetDefaultVoiceProfileResponse200ApplicationJson::serialize(self, serializer) - } - } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as GetDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as GetDefaultVoiceProfileResponse200ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as GetDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption; #[derive(Debug, Clone)] - pub enum GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson { - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetOrganizationSsoConfigurationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + for GetOrganizationSsoConfigurationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetOrganizationSsoConfigurationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -89581,25 +87889,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -89619,7 +87917,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -89636,18 +87934,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -89660,7 +87956,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -89668,7 +87964,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationSsoConfigurationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -89676,33 +87972,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -89723,7 +88011,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationSsoConfigurationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -89757,13 +88045,15 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -89774,54 +88064,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationSsoConfigurationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetOrganizationSsoConfigurationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + GetOrganizationSsoConfigurationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -89830,16 +88126,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -89848,25 +88144,224 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum GetOrganizationSsoConfigurationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> + for GetOrganizationSsoConfigurationGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), GetOrganizationSsoConfigurationGatewayTimeoutProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationSsoConfigurationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetOrganizationSsoConfigurationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for GetOrganizationSsoConfigurationGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + GetOrganizationSsoConfigurationGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetOrganizationSsoConfigurationGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) .ok() } })() @@ -89885,38 +88380,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetOrganizationSsoConfigurationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + for GetOrganizationSsoConfigurationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetOrganizationSsoConfigurationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -89930,16 +88413,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -89952,7 +88435,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -89960,7 +88443,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationSsoConfigurationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -89977,24 +88460,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -90015,7 +88490,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -90061,44 +88536,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationSsoConfigurationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetOrganizationSsoConfigurationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -90106,24 +88578,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -90143,69 +88607,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson { - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum GetOrganizationSsoConfigurationPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + for GetOrganizationSsoConfigurationPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetOrganizationSsoConfigurationPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -90226,7 +88676,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -90234,33 +88684,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -90281,7 +88723,7 @@ pub mod types { if replace { selected = Some(( rank, - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -90300,21 +88742,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -90325,51 +88771,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetOrganizationSsoConfigurationPreconditionFailedProblem", ), ) } } } - impl serde::Serialize - for GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetOrganizationSsoConfigurationPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + GetOrganizationSsoConfigurationPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson::GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + GetOrganizationSsoConfigurationPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -90378,24 +88815,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -90415,216 +88844,424 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetMessageMetricsBackfillResponse200ApplicationJson { - #[serde( - rename = "failedWrites", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub failed_writes: i64, - #[serde(rename = "lastVerifiedAt")] - pub last_verified_at: Option, - #[serde( - rename = "processedWrites", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub processed_writes: i64, - #[serde(rename = "state")] - pub state: GetMessageMetricsBackfillResponse200ApplicationJsonstate, - #[serde(rename = "version")] - pub version: Date, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetMessageMetricsBackfillResponse200ApplicationJsonstate { - ///`disabled` - Disabled, - ///`pending` - Pending, - ///`running` - Running, - ///`verifying` - Verifying, - ///`completed` - Completed, - ///`paused` - Paused, - ///`failed` - Failed, - /// A value this version of the client does not know, kept as received. - Unknown(String), + #[derive(Debug, Clone)] + pub enum GetProjectClosureStatusForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl GetMessageMetricsBackfillResponse200ApplicationJsonstate { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Disabled => "disabled", - Self::Pending => "pending", - Self::Running => "running", - Self::Verifying => "verifying", - Self::Completed => "completed", - Self::Paused => "paused", - Self::Failed => "failed", - Self::Unknown(value) => value, + impl<'de> serde::Deserialize<'de> for GetProjectClosureStatusForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), GetProjectClosureStatusForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectClosureStatusForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectClosureStatusForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectClosureStatusForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectClosureStatusForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetProjectClosureStatusForbiddenProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetProjectClosureStatusForbiddenProblem", + ), + ) } } } - impl std::fmt::Display for GetMessageMetricsBackfillResponse200ApplicationJsonstate { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for GetMessageMetricsBackfillResponse200ApplicationJsonstate { + impl serde::Serialize for GetProjectClosureStatusForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsBackfillResponse200ApplicationJsonstate { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "disabled" => Ok(Self::Disabled), - "pending" => Ok(Self::Pending), - "running" => Ok(Self::Running), - "verifying" => Ok(Self::Verifying), - "completed" => Ok(Self::Completed), - "paused" => Ok(Self::Paused), - "failed" => Ok(Self::Failed), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `disabled`, `pending`, `running`, `verifying`, `completed`, `paused`, `failed`", - ), - ) + let value = match self { + GetProjectClosureStatusForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectClosureStatusForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectClosureStatusForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectClosureStatusForbiddenProblem::ResourceMismatchProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; } - _ => Ok(Self::Unknown(value)), + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetProjectClosureStatusForbiddenProblem", + ), + ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson { - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetProjectClosureStatusGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetProjectClosureStatusGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectClosureStatusGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -90637,7 +89274,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -90645,7 +89282,7 @@ pub mod types { if replace { selected = Some(( rank, - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectClosureStatusGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -90653,33 +89290,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -90700,7 +89329,7 @@ pub mod types { if replace { selected = Some(( rank, - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2( + GetProjectClosureStatusGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -90718,29 +89347,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -90751,73 +89373,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectClosureStatusGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectClosureStatusGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectClosureStatusGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectClosureStatusGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson::GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2( + GetProjectClosureStatusGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -90825,25 +89415,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -90862,597 +89442,70 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectClosureStatusGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJson { - #[serde(rename = "capabilities")] - pub capabilities: GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities, - #[serde(rename = "dialect")] - pub dialect: String, - #[serde(rename = "limits")] - pub limits: GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits, - #[serde(rename = "projectScoped")] - pub project_scoped: bool, - #[serde(rename = "tables")] - pub tables: Vec, - #[serde(rename = "version")] - pub version: Date, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "capabilities", - "dialect", - "limits", - "projectScoped", - "tables", - "version", - ], - )?; - GetMessageMetricsSqlSchemaResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetMessageMetricsSqlSchemaResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities { - #[serde(rename = "arrayJoin")] - pub array_join: bool, - #[serde(rename = "ctes")] - pub ctes: bool, - #[serde(rename = "joins")] - pub joins: bool, - #[serde(rename = "parameters")] - pub parameters: bool, - #[serde(rename = "selectWithoutFrom")] - pub select_without_from: bool, - #[serde(rename = "subqueries")] - pub subqueries: bool, - #[serde(rename = "unions")] - pub unions: bool, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "arrayJoin", - "ctes", - "joins", - "parameters", - "selectWithoutFrom", - "subqueries", - "unions", - ], - )?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsoncapabilities::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits { - #[serde( - rename = "maximumParameterValueBytes", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub maximum_parameter_value_bytes: i64, - #[serde( - rename = "maximumParameters", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub maximum_parameters: i64, - #[serde( - rename = "maximumSqlBytes", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub maximum_sql_bytes: i64, - #[serde( - rename = "maximumTotalParameterBytes", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub maximum_total_parameter_bytes: i64, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "maximumParameterValueBytes", - "maximumParameters", - "maximumSqlBytes", - "maximumTotalParameterBytes", - ], - )?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsonlimits::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem { - ///`addressed` - Addressed, - ///`received` - Received, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Addressed => "addressed", - Self::Received => "received", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "addressed" => Ok(Self::Addressed), - "received" => Ok(Self::Received), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `addressed`, `received`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone)] - pub enum GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant0( - Box, - ), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant1( - Box, - ), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - if value.is_boolean() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant0, - ) - .map_err(serde::de::Error::custom); - } - if value.is_number() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant1, - ) - .map_err(serde::de::Error::custom); - } - if value.is_string() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant2, - ) - .map_err(serde::de::Error::custom); - } - Err( - serde::de::Error::custom( - "data did not match any variant of union GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem", - ), - ) - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - match self { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant0( - inner, - ) => inner.serialize(serializer), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant1( - inner, - ) => inner.serialize(serializer), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItemVariant2( - inner, - ) => inner.serialize(serializer), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem { - #[serde( - rename = "additionalProperties", - default, - skip_serializing_if = "Option::is_none", - )] - pub additional_properties: Option, - ///Read-only: set by the server; ignored in requests. - #[serde( - rename = "contentTypes", - default, - skip_serializing_if = "Option::is_none", - )] - pub content_types: Option>, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "directions", default, skip_serializing_if = "Option::is_none")] - pub directions: Option< - Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem, - >, - >, - #[serde(rename = "expression")] - pub expression: String, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "itemTypes", default, skip_serializing_if = "Option::is_none")] - pub item_types: Option>, - #[serde(rename = "path")] - pub path: String, - #[serde(rename = "required")] - pub required: bool, - #[serde(rename = "type")] - pub r#type: String, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "values", default, skip_serializing_if = "Option::is_none")] - pub values: Option< - Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemvaluesItem, - >, - >, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "additionalProperties", - "contentTypes", - "directions", - "expression", - "itemTypes", - "path", - "required", - "type", - "values", - ], - )?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0 { - #[serde(rename = "path")] - pub path: String, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "values")] - pub values: Vec, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["path", "values"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0::serialize( - self, - serializer, - ) - } + pub struct GetProjectClosureStatusResponse { + #[serde(rename = "deletionOperationId")] + pub deletion_operation_id: Option, + #[serde(rename = "domains")] + pub domains: Vec, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "ready")] + pub ready: bool, + #[serde(flatten)] + pub additional: BTreeMap, } #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1 { - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "oneOfPaths")] - pub one_of_paths: Vec, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["oneOfPaths"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone)] - pub enum GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0( - Box< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0, - >, - ), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1( - Box< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1, - >, - ), - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - if value.get("path").is_some() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0, - ) - .map_err(serde::de::Error::custom); - } - if value.get("oneOfPaths").is_some() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1, - ) - .map_err(serde::de::Error::custom); - } - Err( - serde::de::Error::custom( - "data did not match any variant of union GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem", - ), - ) - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - match self { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant0( - inner, - ) => inner.serialize(serializer), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItemVariant1( - inner, - ) => inner.serialize(serializer), - } - } + pub struct ProjectClosureDomainStatus { + #[serde(rename = "blockers")] + pub blockers: Vec, + #[serde(rename = "domain")] + pub domain: ProjectClosureDomain, + #[serde(rename = "ready")] + pub ready: bool, + #[serde(flatten)] + pub additional: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] - pub enum GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname { - ///`email` - Email, - ///`imessage` - Imessage, - ///`sms` - Sms, - ///`telegram` - Telegram, - ///`voice` - Voice, - ///`whatsapp` - Whatsapp, - ///`whatsapp_business` - WhatsappBusiness, + pub enum ProjectClosureDomain { + ///`projects` + Projects, + ///`billing` + Billing, + ///`platforms` + Platforms, + ///`call_registry` + CallRegistry, /// A value this version of the client does not know, kept as received. Unknown(String), } - impl GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname { + impl ProjectClosureDomain { /// The value as it appears on the wire. pub fn as_str(&self) -> &str { match self { - Self::Email => "email", - Self::Imessage => "imessage", - Self::Sms => "sms", - Self::Telegram => "telegram", - Self::Voice => "voice", - Self::Whatsapp => "whatsapp", - Self::WhatsappBusiness => "whatsapp_business", + Self::Projects => "projects", + Self::Billing => "billing", + Self::Platforms => "platforms", + Self::CallRegistry => "call_registry", Self::Unknown(value) => value, } } } - impl std::fmt::Display - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname { + impl std::fmt::Display for ProjectClosureDomain { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str(self.as_str()) } } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname { + impl serde::Serialize for ProjectClosureDomain { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, @@ -91460,26 +89513,22 @@ pub mod types { serializer.serialize_str(self.as_str()) } } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname { + impl<'de> serde::Deserialize<'de> for ProjectClosureDomain { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = String::deserialize(deserializer)?; match value.as_str() { - "email" => Ok(Self::Email), - "imessage" => Ok(Self::Imessage), - "sms" => Ok(Self::Sms), - "telegram" => Ok(Self::Telegram), - "voice" => Ok(Self::Voice), - "whatsapp" => Ok(Self::Whatsapp), - "whatsapp_business" => Ok(Self::WhatsappBusiness), + "projects" => Ok(Self::Projects), + "billing" => Ok(Self::Billing), + "platforms" => Ok(Self::Platforms), + "call_registry" => Ok(Self::CallRegistry), _ if super::support::is_strict() => { Err( serde::de::Error::invalid_value( serde::de::Unexpected::Str(&value), - &"one of `email`, `imessage`, `sms`, `telegram`, `voice`, `whatsapp`, `whatsapp_business`", + &"one of `projects`, `billing`, `platforms`, `call_registry`", ), ) } @@ -91487,464 +89536,85 @@ pub mod types { } } } - pub use self::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItemdirectionsItem as GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemdirectionsItem; - #[derive(Debug, Clone)] - pub enum GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant0( - Box, - ), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant1( - Box, - ), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - if value.is_boolean() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant0, - ) - .map_err(serde::de::Error::custom); - } - if value.is_number() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant1, - ) - .map_err(serde::de::Error::custom); - } - if value.is_string() { - return serde_json::from_value(value) - .map( - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant2, - ) - .map_err(serde::de::Error::custom); - } - Err( - serde::de::Error::custom( - "data did not match any variant of union GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem", - ), - ) - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - match self { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant0( - inner, - ) => inner.serialize(serializer), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant1( - inner, - ) => inner.serialize(serializer), - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem::GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItemVariant2( - inner, - ) => inner.serialize(serializer), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem { - #[serde( - rename = "additionalProperties", - default, - skip_serializing_if = "Option::is_none", - )] - pub additional_properties: Option, - ///Read-only: set by the server; ignored in requests. - #[serde( - rename = "contentTypes", - default, - skip_serializing_if = "Option::is_none", - )] - pub content_types: Option>, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "directions", default, skip_serializing_if = "Option::is_none")] - pub directions: Option< - Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemdirectionsItem, - >, - >, - #[serde(rename = "expression")] - pub expression: String, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "itemTypes", default, skip_serializing_if = "Option::is_none")] - pub item_types: Option>, - #[serde(rename = "path")] - pub path: String, - #[serde(rename = "required")] - pub required: bool, - #[serde(rename = "type")] - pub r#type: String, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "values", default, skip_serializing_if = "Option::is_none")] - pub values: Option< - Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItemvaluesItem, - >, - >, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "additionalProperties", - "contentTypes", - "directions", - "expression", - "itemTypes", - "path", - "required", - "type", - "values", - ], - )?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem { - #[serde(rename = "name")] - pub name: GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItemname, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "paths")] - pub paths: Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItempathsItem, - >, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["name", "paths"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource { - #[serde(rename = "contractsVersion")] - pub contracts_version: String, - #[serde( - rename = "type", - deserialize_with = "const_message_de", - serialize_with = "const_message_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["contractsVersion", "type"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson { - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "commonPaths")] - pub common_paths: Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsoncommonPathsItem, - >, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "discriminators")] - pub discriminators: Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsondiscriminatorsItem, - >, - ///Read-only: set by the server; ignored in requests. - #[serde(rename = "platforms")] - pub platforms: Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonplatformsItem, - >, - #[serde(rename = "resource")] - pub resource: GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjsonresource, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["commonPaths", "discriminators", "platforms", "resource"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem { - #[serde(rename = "description")] - pub description: String, - #[serde(rename = "json", default, skip_serializing_if = "Option::is_none")] - pub json: Option< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItemjson, - >, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "type")] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["description", "json", "name", "type"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem { - #[serde(rename = "columns")] - pub columns: Vec< - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItemcolumnsItem, - >, - #[serde(rename = "currentState")] - pub current_state: String, - #[serde(rename = "description")] - pub description: String, - #[serde( - rename = "name", - deserialize_with = "const_message_events_de", - serialize_with = "const_message_events_ser", - )] - pub name: String, - } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["columns", "currentState", "description", "name"])?; - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetMessageMetricsSqlSchemaResponse200ApplicationJsontablesItem::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson { - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetProjectForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetProjectForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetProjectForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -91965,35 +89635,31 @@ pub mod types { if replace { selected = Some(( rank, - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), + GetProjectForbiddenProblem::InsufficientScopeProblem(inner), )); } } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -92006,7 +89672,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -92014,7 +89680,7 @@ pub mod types { if replace { selected = Some(( rank, - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -92031,24 +89697,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -92069,9 +89727,7 @@ pub mod types { if replace { selected = Some(( rank, - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + GetProjectForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -92102,6 +89758,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -92120,54 +89786,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson::GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -92176,16 +89851,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -92194,25 +89869,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -92231,270 +89896,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOperationResponse200ApplicationJson { - #[serde(rename = "operation")] - pub operation: GetOperationResponse200ApplicationJsonoperation, - #[serde(rename = "resource", default, skip_serializing_if = "Option::is_none")] - pub resource: Option, - } - impl<'de> serde::Deserialize<'de> for GetOperationResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["operation", "resource"])?; - GetOperationResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetOperationResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for GetOperationResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOperationResponse200ApplicationJson::serialize(self, serializer) - } - } - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonerror as GetOperationResponse200ApplicationJsonoperationerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as GetOperationResponse200ApplicationJsonoperationstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as GetOperationResponse200ApplicationJsonoperationtype; - pub use self::AssignSmsLineCampaignResponse200ApplicationJson as GetOperationResponse200ApplicationJsonoperation; - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetOperationResponse200ApplicationJsonresourcestate { - ///`unallocated` - Unallocated, - ///`active` - Active, - ///`retired` - Retired, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetOperationResponse200ApplicationJsonresourcestate { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Unallocated => "unallocated", - Self::Active => "active", - Self::Retired => "retired", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display for GetOperationResponse200ApplicationJsonresourcestate { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for GetOperationResponse200ApplicationJsonresourcestate { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetOperationResponse200ApplicationJsonresourcestate { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "unallocated" => Ok(Self::Unallocated), - "active" => Ok(Self::Active), - "retired" => Ok(Self::Retired), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `unallocated`, `active`, `retired`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOperationResponse200ApplicationJsonresource { - #[serde(rename = "abilities")] - pub abilities: Vec, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail")] - pub detail: std::collections::BTreeMap, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId")] - pub resource_id: String, - #[serde(rename = "retiredAt", default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option, - #[serde(rename = "state")] - pub state: GetOperationResponse200ApplicationJsonresourcestate, - #[serde(rename = "type")] - pub r#type: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for GetOperationResponse200ApplicationJsonresource { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "abilities", - "createdAt", - "detail", - "projectId", - "resourceId", - "retiredAt", - "state", - "type", - "updatedAt", - ], - )?; - GetOperationResponse200ApplicationJsonresource::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetOperationResponse200ApplicationJsonresource::deserialize(deserializer) - } - } - } - impl serde::Serialize for GetOperationResponse200ApplicationJsonresource { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOperationResponse200ApplicationJsonresource::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum GetOperationResponse403ApplicationProblemPlusJson { - GetOperationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetOperationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetProjectGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOperationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetProjectGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetOperationResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), GetProjectGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetOperationResponse403ApplicationProblemPlusJson::GetOperationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -92507,7 +89950,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -92515,7 +89958,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -92523,31 +89966,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -92568,9 +90005,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse403ApplicationProblemPlusJson::GetOperationResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + GetProjectGatewayTimeoutProblem::RequestTimeoutProblem(inner), )); } } @@ -92586,29 +90021,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -92619,70 +90047,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetOperationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOperationResponse403ApplicationProblemPlusJson::GetOperationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOperationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOperationResponse403ApplicationProblemPlusJson::GetOperationResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -92690,23 +90089,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOperationResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -92725,58 +90116,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOperationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetOperationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetOperationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse404ApplicationProblemPlusJson as GetOperationResponse404ApplicationProblemPlusJson; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as GetOperationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetOperationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetOperationResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse429ApplicationProblemPlusJson as GetOperationResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOperationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetOperationResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetProjectImessagePlatformForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOperationResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetProjectImessagePlatformForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetOperationResponse500ApplicationProblemPlusJson), + ((usize, u32), GetProjectImessagePlatformForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectImessagePlatformForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -92789,7 +90217,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -92797,7 +90225,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectImessagePlatformForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -92805,31 +90233,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectImessagePlatformForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -92850,7 +90319,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse500ApplicationProblemPlusJson::GetOperationResponse500ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -92868,24 +90337,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -92896,42 +90380,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformForbiddenProblem", ), ) } } } - impl serde::Serialize for GetOperationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectImessagePlatformForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOperationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectImessagePlatformForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectImessagePlatformForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOperationResponse500ApplicationProblemPlusJson::GetOperationResponse500ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectImessagePlatformForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -92940,22 +90445,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOperationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -92964,6 +90463,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -92975,33 +90490,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOperationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectImessagePlatformForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetOperationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as GetOperationResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as GetOperationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOperationResponse504ApplicationProblemPlusJson { - GetOperationResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetOperationResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetProjectImessagePlatformGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOperationResponse504ApplicationProblemPlusJson { + for GetProjectImessagePlatformGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetOperationResponse504ApplicationProblemPlusJson), + ((usize, u32), GetProjectImessagePlatformGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -93017,22 +90525,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -93053,7 +90555,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse504ApplicationProblemPlusJson::GetOperationResponse504ApplicationProblemPlusJsonVariant0( + GetProjectImessagePlatformGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -93070,22 +90572,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -93106,7 +90602,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOperationResponse504ApplicationProblemPlusJson::GetOperationResponse504ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -93150,49 +90646,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOperationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetOperationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectImessagePlatformGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOperationResponse504ApplicationProblemPlusJson::GetOperationResponse504ApplicationProblemPlusJsonVariant0( + GetProjectImessagePlatformGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOperationResponse504ApplicationProblemPlusJson::GetOperationResponse504ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -93200,23 +90688,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOperationResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -93235,240 +90715,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOperationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectImessagePlatformGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetOperationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetOperationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationBillingOverviewResponse200ApplicationJson { - ///Bumps on every entitlement change for the organization. - #[serde( - rename = "entitlementsVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub entitlements_version: i64, - #[serde(rename = "subscription")] - pub subscription: Option< - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription, - >, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["entitlementsVersion", "subscription"])?; - GetOrganizationBillingOverviewResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationBillingOverviewResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetOrganizationBillingOverviewResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationBillingOverviewResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem { - ///Feature gate key. - #[serde(rename = "featureKey")] - pub feature_key: String, - ///Gate value as a string. - #[serde(rename = "value")] - pub value: String, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["featureKey", "value"])?; - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem::serialize( - self, - serializer, - ) - } - } - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel as GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionfixedChargesItemchargeModel; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem as GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionfixedChargesItempricingtiersItem; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing as GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionfixedChargesItempricing; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem as GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionfixedChargesItem; - ///State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemstatus as GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionstatus; - ///The organization-owned subscription, or null when billing was never opened or has ended. - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription { - ///When the subscription will end, ISO 8601. - #[serde(rename = "cancelsAt")] - pub cancels_at: Option, - ///End of the current billing period, ISO 8601. - #[serde(rename = "currentPeriodEnd")] - pub current_period_end: Option, - #[serde(rename = "entitlements")] - pub entitlements: Vec< - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionentitlementsItem, - >, - ///Fixed charges defined by the organization's current plan. Quantity is the plan default. - #[serde(rename = "fixedCharges")] - pub fixed_charges: Vec< - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionfixedChargesItem, - >, - ///The organization's plan; display only. - #[serde(rename = "planCode")] - pub plan_code: String, - #[serde(rename = "status")] - pub status: GetOrganizationBillingOverviewResponse200ApplicationJsonsubscriptionstatus, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancelsAt", - "currentPeriodEnd", - "entitlements", - "fixedCharges", - "planCode", - "status", - ], - )?; - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationBillingOverviewResponse200ApplicationJsonsubscription::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson { - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum GetProjectImessagePlatformInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson { + for GetProjectImessagePlatformInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectImessagePlatformInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -93489,56 +90778,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectImessagePlatformInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -93546,33 +90786,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -93593,7 +90825,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( + GetProjectImessagePlatformInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -93611,29 +90843,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -93644,73 +90871,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectImessagePlatformInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectImessagePlatformInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2( + GetProjectImessagePlatformInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -93718,24 +90913,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -93755,62 +90942,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectImessagePlatformInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetProjectImessagePlatformServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson { + for GetProjectImessagePlatformServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectImessagePlatformServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/billing-not-provisioned", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -93823,7 +90999,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -93831,7 +91007,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectImessagePlatformServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -93839,33 +91015,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -93886,7 +91054,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -93905,22 +91073,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-unavailable", ) { (match_count, selected) = select(true); @@ -93932,43 +91100,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectImessagePlatformServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectImessagePlatformServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectImessagePlatformServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1( + GetProjectImessagePlatformServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -93977,24 +91144,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -94014,73 +91173,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectImessagePlatformServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson { - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetProjectWhatsappPlatformForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetProjectWhatsappPlatformForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectWhatsappPlatformForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectWhatsappPlatformForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -94101,7 +91282,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( + GetProjectWhatsappPlatformForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -94109,33 +91290,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetProjectWhatsappPlatformForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -94156,7 +91376,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -94174,22 +91394,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -94200,77 +91437,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectWhatsappPlatformForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0( + GetProjectWhatsappPlatformForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetProjectWhatsappPlatformForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetProjectWhatsappPlatformForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson::GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -94279,174 +91502,96 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetOrganizationConnectionStatusResponse200ApplicationJson { - #[serde(rename = "membership")] - pub membership: GetOrganizationConnectionStatusResponse200ApplicationJsonmembership, - #[serde(rename = "organization")] - pub organization: GetOrganizationConnectionStatusResponse200ApplicationJsonorganization, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "synchronized")] - pub synchronized: bool, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus { - ///`pending` - Pending, - ///`syncing` - Syncing, - ///`ready` - Ready, - ///`error` - Error, - ///`blocked` - Blocked, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Pending => "pending", - Self::Syncing => "syncing", - Self::Ready => "ready", - Self::Error => "error", - Self::Blocked => "blocked", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "pending" => Ok(Self::Pending), - "syncing" => Ok(Self::Syncing), - "ready" => Ok(Self::Ready), - "error" => Ok(Self::Error), - "blocked" => Ok(Self::Blocked), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `pending`, `syncing`, `ready`, `error`, `blocked`", - ), - ) + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; } - _ => Ok(Self::Unknown(value)), + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformForbiddenProblem", + ), + ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetOrganizationConnectionStatusResponse200ApplicationJsonmembership { - #[serde(rename = "errorCode")] - pub error_code: Option, - #[serde(rename = "retryAt")] - pub retry_at: Option, - #[serde(rename = "status")] - pub status: GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus as GetOrganizationConnectionStatusResponse200ApplicationJsonorganizationstatus; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetOrganizationConnectionStatusResponse200ApplicationJsonorganization { - #[serde(rename = "errorCode")] - pub error_code: Option, - #[serde(rename = "status")] - pub status: GetOrganizationConnectionStatusResponse200ApplicationJsonorganizationstatus, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum GetProjectWhatsappPlatformGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson { + for GetProjectWhatsappPlatformGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectWhatsappPlatformGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -94459,7 +91604,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -94467,7 +91612,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + GetProjectWhatsappPlatformGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -94475,27 +91620,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -94508,7 +91651,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -94516,7 +91659,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectWhatsappPlatformGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -94534,21 +91677,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -94559,44 +91703,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectWhatsappPlatformGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + GetProjectWhatsappPlatformGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetProjectWhatsappPlatformGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -94604,17 +91745,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -94633,202 +91772,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformGatewayTimeoutProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_organization_connection_not_found_de", - serialize_with = "const_organization_connection_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_organization_connection_not_found_acecfb56_de", - serialize_with = "const_organization_connection_not_found_acecfb56_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_organization_connection_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_organization_connection_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_organization_sync_unavailable_de", - serialize_with = "const_organization_sync_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_organization_synchronization_unavailable_de", - serialize_with = "const_organization_synchronization_unavailable_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_organization_sync_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_organization_sync_unavailable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetProjectWhatsappPlatformInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson { + for GetProjectWhatsappPlatformInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectWhatsappPlatformInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -94842,16 +91805,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -94864,7 +91827,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -94872,7 +91835,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectWhatsappPlatformInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -94889,24 +91852,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -94927,7 +91882,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -94973,44 +91928,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectWhatsappPlatformInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetProjectWhatsappPlatformInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -95018,24 +91970,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -95055,73 +91999,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson { - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetProjectWhatsappPlatformServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson { + for GetProjectWhatsappPlatformServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetProjectWhatsappPlatformServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -95142,7 +92064,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0( + GetProjectWhatsappPlatformServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -95150,33 +92072,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -95197,7 +92111,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -95216,21 +92130,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -95241,51 +92157,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetProjectWhatsappPlatformServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetProjectWhatsappPlatformServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0( + GetProjectWhatsappPlatformServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson::GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1( + GetProjectWhatsappPlatformServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -95294,24 +92201,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -95331,147 +92230,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationPaymentMethodResponse200ApplicationJson { - ///True once a card is captured for the payer. - #[serde(rename = "cardOnFile")] - pub card_on_file: bool, - #[serde(rename = "paymentMethod")] - pub payment_method: Option< - GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod, - >, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationPaymentMethodResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["cardOnFile", "paymentMethod"])?; - GetOrganizationPaymentMethodResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationPaymentMethodResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetOrganizationPaymentMethodResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationPaymentMethodResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - ///Metadata for the default card, or null. - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod { - ///Card network brand, e.g. visa. - #[serde(rename = "brand")] - pub brand: Option, - ///Card expiration month. - #[serde( - rename = "expiresMonth", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub expires_month: Option, - ///Four-digit card expiration year. - #[serde( - rename = "expiresYear", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub expires_year: Option, - ///Last four card digits. - #[serde(rename = "last4")] - pub last4: Option, - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["brand", "expiresMonth", "expiresYear", "last4"])?; - GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetOrganizationPaymentMethodResponse200ApplicationJsonpaymentMethod::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson { - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum GetResourceForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetResourceForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetResourceForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -95484,25 +92262,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -95522,9 +92290,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), + GetResourceForbiddenProblem::ForbiddenProblem(inner), )); } } @@ -95539,18 +92305,61 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetResourceForbiddenProblem::InsufficientScopeProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -95563,7 +92372,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -95571,7 +92380,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetResourceForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -95588,24 +92397,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -95626,9 +92427,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + GetResourceForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -95659,6 +92458,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -95677,54 +92486,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetResourceForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetResourceForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetResourceForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetResourceForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetResourceForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -95733,16 +92551,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -95751,25 +92569,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -95788,62 +92596,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetResourceForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetResourceGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetResourceGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetResourceGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -95856,7 +92650,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -95864,7 +92658,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetResourceGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -95872,33 +92666,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -95919,7 +92705,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1( + GetResourceGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -95938,23 +92724,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -95965,44 +92749,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetResourceGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetResourceGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetResourceGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -96010,25 +92791,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -96047,73 +92818,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetResourceGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson { - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetResourceInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetResourceInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetResourceInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -96134,7 +92880,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0( + GetResourceInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -96142,33 +92888,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -96189,7 +92927,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1( + GetResourceInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -96208,21 +92946,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -96233,52 +92973,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetResourceInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetResourceInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson::GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1( + GetResourceInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetResourceInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -96286,24 +93015,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -96323,305 +93044,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetResourceInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetOrganizationSsoConfigurationResponse200ApplicationJson { - #[serde(rename = "connectionChangedAt")] - pub connection_changed_at: Option, - #[serde(rename = "connectionGeneration")] - pub connection_generation: String, - #[serde(rename = "connectionState")] - pub connection_state: GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState, - #[serde( - rename = "connectionType", - default, - skip_serializing_if = "Option::is_none", - )] - pub connection_type: Option, - #[serde(rename = "desiredSsoEnforced")] - pub desired_sso_enforced: bool, - #[serde(rename = "domains", default, skip_serializing_if = "Option::is_none")] - pub domains: Option< - Vec, - >, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "policySyncStatus")] - pub policy_sync_status: GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus, - #[serde( - rename = "providerAvailable", - default, - skip_serializing_if = "Option::is_none", - )] - pub provider_available: Option, - #[serde(rename = "ssoEnforced")] - pub sso_enforced: bool, - #[serde(rename = "ssoJitEnabled")] - pub sso_jit_enabled: bool, - #[serde(rename = "version")] - pub version: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState { - ///`not_configured` - NotConfigured, - ///`configuring` - Configuring, - ///`ready` - Ready, - ///`error` - Error, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::NotConfigured => "not_configured", - Self::Configuring => "configuring", - Self::Ready => "ready", - Self::Error => "error", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "not_configured" => Ok(Self::NotConfigured), - "configuring" => Ok(Self::Configuring), - "ready" => Ok(Self::Ready), - "error" => Ok(Self::Error), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `not_configured`, `configuring`, `ready`, `error`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate { - ///`verified` - Verified, - ///`pending` - Pending, - ///`failed` - Failed, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Verified => "verified", - Self::Pending => "pending", - Self::Failed => "failed", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "verified" => Ok(Self::Verified), - "pending" => Ok(Self::Pending), - "failed" => Ok(Self::Failed), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `verified`, `pending`, `failed`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItem { - #[serde(rename = "domain")] - pub domain: String, - #[serde(rename = "state")] - pub state: GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus { - ///`synced` - Synced, - ///`manual_required` - ManualRequired, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Synced => "synced", - Self::ManualRequired => "manual_required", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "synced" => Ok(Self::Synced), - "manual_required" => Ok(Self::ManualRequired), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `synced`, `manual_required`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } #[derive(Debug, Clone)] - pub enum GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson { - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), GetSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-return-to", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -96642,7 +93153,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0( + GetSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -96650,33 +93161,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -96697,7 +93247,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1( + GetSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -96715,22 +93265,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -96741,51 +93308,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson { + impl serde::Serialize for GetSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0( + GetSharedLineAssignmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1( + GetSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -96794,24 +93373,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -96820,6 +93391,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -96831,56 +93418,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSharedLineAssignmentForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum GetSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -96893,7 +93474,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -96901,7 +93482,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + GetSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -96909,27 +93490,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -96942,7 +93521,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -96950,7 +93529,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -96968,21 +93547,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -96993,44 +93573,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + GetSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -97038,17 +93615,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -97067,39 +93642,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson { + for GetSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetSharedLineAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -97113,16 +93675,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -97135,7 +93697,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -97143,7 +93705,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -97160,24 +93722,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -97198,7 +93752,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1( + GetSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -97244,44 +93798,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1( + GetSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -97289,24 +93840,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -97326,73 +93869,57 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson { - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, + pub enum GetSmsLineCampaignAssignmentConflictProblem { + ProjectClosingProblem(Box), + SmsLineUnsupportedProblem(Box), + SmsCampaignNotReadyProblem(Box), + SmsCampaignVersionConflictProblem(Box), + SmsCampaignCapacityExceededProblem(Box), + SmsCampaignReconciliationRequiredProblem( + Box, ), + SmsCampaignMutationInProgressProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetSmsLineCampaignAssignmentConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -97413,7 +93940,7 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentConflictProblem::ProjectClosingProblem( inner, ), )); @@ -97421,33 +93948,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_LINE_UNSUPPORTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SMS line unsupported") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sms-line-unsupported", )) - .then(|| (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -97468,297 +93987,127 @@ pub mod types { if replace { selected = Some(( rank, - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentConflictProblem::SmsLineUnsupportedProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson::GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_NOT_READY") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign not ready") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-not-ready", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() { match_count += 1; - } - if (|| -> Option< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() + let retained = if strict { + 0 } else { - serde_json::from_value::< - Box< - GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignNotReadyProblem( + inner, + ), + )); } - })() - .is_some() + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment version conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-version-conflict", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() { match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignVersionConflictProblem( + inner, + ), + )); + } } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetProjectClosureStatusResponse200ApplicationJson { - #[serde(rename = "deletionOperationId")] - pub deletion_operation_id: Option, - #[serde(rename = "domains")] - pub domains: Vec, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "ready")] - pub ready: bool, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain { - ///`projects` - Projects, - ///`billing` - Billing, - ///`platforms` - Platforms, - ///`call_registry` - CallRegistry, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Projects => "projects", - Self::Billing => "billing", - Self::Platforms => "platforms", - Self::CallRegistry => "call_registry", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "projects" => Ok(Self::Projects), - "billing" => Ok(Self::Billing), - "platforms" => Ok(Self::Platforms), - "call_registry" => Ok(Self::CallRegistry), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `projects`, `billing`, `platforms`, `call_registry`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetProjectClosureStatusResponse200ApplicationJsondomainsItem { - #[serde(rename = "blockers")] - pub blockers: Vec, - #[serde(rename = "domain")] - pub domain: GetProjectClosureStatusResponse200ApplicationJsondomainsItemdomain, - #[serde(rename = "ready")] - pub ready: bool, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetProjectClosureStatusResponse400ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum GetProjectClosureStatusResponse403ApplicationProblemPlusJson { - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetProjectClosureStatusResponse403ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetProjectClosureStatusResponse403ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Campaign number capacity exhausted") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -97779,7 +94128,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignCapacityExceededProblem( inner, ), )); @@ -97787,27 +94136,27 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Campaign reconciliation required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -97820,7 +94169,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -97828,7 +94177,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignReconciliationRequiredProblem( inner, ), )); @@ -97836,33 +94185,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Assignment mutation in progress") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", )) - .then(|| (|| -> Option< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -97875,7 +94216,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1130u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -97883,7 +94224,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2( + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignMutationInProgressProblem( inner, ), )); @@ -97901,29 +94242,74 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SMS_LINE_UNSUPPORTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SMS line unsupported") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/sms-line-unsupported", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("SMS_CAMPAIGN_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Campaign not ready") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/sms-campaign-not-ready", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment version conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign number capacity exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign reconciliation required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment mutation in progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + ) { (match_count, selected) = select(true); } @@ -97934,54 +94320,73 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectClosureStatusResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectClosureStatusResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentConflictProblem", ), ) } } } - impl serde::Serialize - for GetProjectClosureStatusResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentConflictProblem::SmsLineUnsupportedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignNotReadyProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectClosureStatusResponse403ApplicationProblemPlusJson::GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2( + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignCapacityExceededProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignReconciliationRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentConflictProblem::SmsCampaignMutationInProgressProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -97990,16 +94395,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -98008,24 +94413,70 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -98045,75 +94496,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectClosureStatusResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetProjectClosureStatusResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as GetProjectClosureStatusResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetProjectClosureStatusResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetProjectClosureStatusResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetProjectClosureStatusResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetProjectClosureStatusResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetProjectClosureStatusResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetProjectClosureStatusResponse504ApplicationProblemPlusJson { - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum GetSmsLineCampaignAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + SmsCampaignOrganizationMismatchProblem( + Box, ), } - impl<'de> serde::Deserialize<'de> - for GetProjectClosureStatusResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetSmsLineCampaignAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectClosureStatusResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -98133,7 +94561,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectClosureStatusResponse504ApplicationProblemPlusJson::GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -98141,33 +94569,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -98188,189 +94608,80 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectClosureStatusResponse504ApplicationProblemPlusJson::GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectClosureStatusResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectClosureStatusResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for GetProjectClosureStatusResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetProjectClosureStatusResponse504ApplicationProblemPlusJson::GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectClosureStatusResponse504ApplicationProblemPlusJson::GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() { match_count += 1; - } - if (|| -> Option< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() + let retained = if strict { + 0 } else { - serde_json::from_value::< - Box< - GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetSmsLineCampaignAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); } - })() - .is_some() - { - match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectClosureStatusResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetProjectClosureStatusResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone)] - pub enum GetProjectImessagePlatformResponse200ApplicationJson { - GetProjectImessagePlatformResponse200ApplicationJsonVariant0( - Box, - ), - GetProjectImessagePlatformResponse200ApplicationJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetProjectImessagePlatformResponse200ApplicationJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("shared")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -98383,7 +94694,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -98391,31 +94702,33 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse200ApplicationJson::GetProjectImessagePlatformResponse200ApplicationJsonVariant0( + GetSmsLineCampaignAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("dedicated")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign belongs to another organization") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -98428,7 +94741,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1021u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -98436,7 +94749,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse200ApplicationJson::GetProjectImessagePlatformResponse200ApplicationJsonVariant1( + GetSmsLineCampaignAssignmentForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ), )); @@ -98454,9 +94767,49 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("mode").and_then(serde_json::Value::as_str) == Some("shared") - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("dedicated") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign belongs to another organization") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + ) { (match_count, selected) = select(true); } @@ -98467,48 +94820,66 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse200ApplicationJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse200ApplicationJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize for GetProjectImessagePlatformResponse200ApplicationJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectImessagePlatformResponse200ApplicationJson::GetProjectImessagePlatformResponse200ApplicationJsonVariant0( + GetSmsLineCampaignAssignmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetSmsLineCampaignAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse200ApplicationJson::GetProjectImessagePlatformResponse200ApplicationJsonVariant1( + GetSmsLineCampaignAssignmentForbiddenProblem::ResourceMismatchProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetSmsLineCampaignAssignmentForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -98517,22 +94888,50 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse200ApplicationJsonVariant1, - >, + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, >(candidate) .ok() } @@ -98552,207 +94951,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectImessagePlatformResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectImessagePlatformResponse200ApplicationJsonVariant0 { - #[serde( - rename = "maxUserAssignments", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub max_user_assignments: i64, - #[serde( - rename = "mode", - deserialize_with = "const_shared_de", - serialize_with = "const_shared_ser", - )] - pub mode: String, - } - impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["maxUserAssignments", "mode"])?; - GetProjectImessagePlatformResponse200ApplicationJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetProjectImessagePlatformResponse200ApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetProjectImessagePlatformResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectImessagePlatformResponse200ApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectImessagePlatformResponse200ApplicationJsonVariant1 { - #[serde( - rename = "mode", - deserialize_with = "const_dedicated_de", - serialize_with = "const_dedicated_ser", - )] - pub mode: String, - } - impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse200ApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["mode"])?; - GetProjectImessagePlatformResponse200ApplicationJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetProjectImessagePlatformResponse200ApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetProjectImessagePlatformResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectImessagePlatformResponse200ApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum GetProjectImessagePlatformResponse403ApplicationProblemPlusJson { - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetSmsLineCampaignAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse403ApplicationProblemPlusJson { + for GetSmsLineCampaignAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -98765,7 +95008,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -98773,7 +95016,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSmsLineCampaignAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -98781,33 +95024,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -98828,7 +95063,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2( + GetSmsLineCampaignAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -98846,29 +95081,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -98879,73 +95107,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetProjectImessagePlatformResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetSmsLineCampaignAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse403ApplicationProblemPlusJson::GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2( + GetSmsLineCampaignAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -98953,25 +95149,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -98990,36 +95176,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectImessagePlatformResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetProjectImessagePlatformResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetProjectImessagePlatformResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetProjectImessagePlatformResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetProjectImessagePlatformResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetSmsLineCampaignAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse500ApplicationProblemPlusJson { + for GetSmsLineCampaignAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectImessagePlatformResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -99033,16 +95209,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -99055,7 +95231,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -99063,7 +95239,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetSmsLineCampaignAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -99080,24 +95256,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -99118,7 +95286,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse500ApplicationProblemPlusJson::GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -99164,44 +95332,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetProjectImessagePlatformResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectImessagePlatformResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetSmsLineCampaignAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse500ApplicationProblemPlusJson::GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -99209,24 +95374,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -99246,68 +95403,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectImessagePlatformResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetProjectImessagePlatformResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetProjectImessagePlatformResponse503ApplicationProblemPlusJson { - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetSmsLineCampaignAssignmentNotFoundProblem { + SmsCampaignNotFoundProblem(Box), + SmsLineNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetSmsLineCampaignAssignmentNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentNotFoundProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("SMS_CAMPAIGN_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Campaign not found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/sms-campaign-not-found", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -99328,7 +95467,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson::GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentNotFoundProblem::SmsCampaignNotFoundProblem( inner, ), )); @@ -99336,33 +95475,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("SMS_LINE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("SMS line not found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/sms-line-not-found", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -99383,7 +95514,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson::GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentNotFoundProblem::SmsLineNotFoundProblem( inner, ), )); @@ -99402,23 +95533,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("SMS_CAMPAIGN_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Campaign not found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/sms-campaign-not-found") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("SMS_LINE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("SMS line not found") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-unavailable", - ) + == Some("https://photon.codes/docs/problems/sms-line-not-found") { (match_count, selected) = select(true); } @@ -99429,51 +95558,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentNotFoundProblem", ), ) } } } - impl serde::Serialize - for GetProjectImessagePlatformResponse503ApplicationProblemPlusJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson::GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentNotFoundProblem::SmsCampaignNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse503ApplicationProblemPlusJson::GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentNotFoundProblem::SmsLineNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -99482,25 +95602,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -99519,68 +95629,133 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectImessagePlatformResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentNotFoundProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct GetSmsLineCampaignAssignmentResponse { + #[serde(rename = "campaign")] + pub campaign: Option, + #[serde(rename = "eligibility")] + pub eligibility: SmsLineCampaignEligibility, + #[serde(rename = "reasonCode")] + pub reason_code: Option, + #[serde(rename = "resourceId")] + pub resource_id: String, + #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub version: i64, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct SmsLineCampaign { + #[serde(rename = "id")] + pub id: String, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SmsLineCampaignEligibility { + ///`eligible` + Eligible, + ///`blocked` + Blocked, + ///`unknown` + Unknown, + /// A value this version of the client does not know, kept as received. + Unknown2(String), + } + impl SmsLineCampaignEligibility { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Eligible => "eligible", + Self::Blocked => "blocked", + Self::Unknown => "unknown", + Self::Unknown2(value) => value, + } + } + } + impl std::fmt::Display for SmsLineCampaignEligibility { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SmsLineCampaignEligibility { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SmsLineCampaignEligibility { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "eligible" => Ok(Self::Eligible), + "blocked" => Ok(Self::Blocked), + "unknown" => Ok(Self::Unknown), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `eligible`, `blocked`, `unknown`", + ), + ) + } + _ => Ok(Self::Unknown2(value)), + } + } + } #[derive(Debug, Clone)] - pub enum GetProjectImessagePlatformResponse504ApplicationProblemPlusJson { - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetSmsLineCampaignAssignmentServiceUnavailableProblem { + SmsCampaignContextUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetProjectImessagePlatformResponse504ApplicationProblemPlusJson { + for GetSmsLineCampaignAssignmentServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetSmsLineCampaignAssignmentServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Campaign context unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -99601,7 +95776,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson::GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( inner, ), )); @@ -99609,33 +95784,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -99656,7 +95823,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson::GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -99675,21 +95842,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Campaign context unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -99700,51 +95871,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectImessagePlatformResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for GetProjectImessagePlatformResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetSmsLineCampaignAssignmentServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson::GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0( + GetSmsLineCampaignAssignmentServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectImessagePlatformResponse504ApplicationProblemPlusJson::GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1( + GetSmsLineCampaignAssignmentServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -99753,24 +95915,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -99790,152 +95944,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectImessagePlatformResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectResponse200ApplicationJson { - #[serde(rename = "agentProfile")] - pub agent_profile: GetProjectResponse200ApplicationJsonagentProfile, - #[serde( - rename = "billingInitialization", - default, - skip_serializing_if = "Option::is_none", - )] - pub billing_initialization: Option< - GetProjectResponse200ApplicationJsonbillingInitialization, - >, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "createdByAccountId")] - pub created_by_account_id: Option, - #[serde(rename = "createdByActorId")] - pub created_by_actor_id: Option, - #[serde(rename = "createdByActorKind")] - pub created_by_actor_kind: Option< - GetProjectResponse200ApplicationJsoncreatedByActorKind, - >, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "slug")] - pub slug: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for GetProjectResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "agentProfile", - "billingInitialization", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt", - ], - )?; - GetProjectResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetProjectResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for GetProjectResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectResponse200ApplicationJsonagentProfile { - #[serde(rename = "avatarUrl")] - pub avatar_url: String, - #[serde(rename = "firstName")] - pub first_name: String, - #[serde(rename = "lastName")] - pub last_name: Option, - } - impl<'de> serde::Deserialize<'de> - for GetProjectResponse200ApplicationJsonagentProfile { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["avatarUrl", "firstName", "lastName"])?; - GetProjectResponse200ApplicationJsonagentProfile::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetProjectResponse200ApplicationJsonagentProfile::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetProjectResponse200ApplicationJsonagentProfile { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectResponse200ApplicationJsonagentProfile::serialize(self, serializer) - } - } - pub use self::CreateProjectResponse201ApplicationJsonbillingInitialization as GetProjectResponse200ApplicationJsonbillingInitialization; - pub use self::CreateProjectResponse201ApplicationJsoncreatedByActorKind as GetProjectResponse200ApplicationJsoncreatedByActorKind; #[derive(Debug, Clone)] - pub enum GetProjectResponse403ApplicationProblemPlusJson { - GetProjectResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetProjectResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetVoiceLineProfileAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetVoiceLineProfileAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetProjectResponse403ApplicationProblemPlusJson), + ((usize, u32), GetVoiceLineProfileAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -99949,19 +95978,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -99981,7 +96006,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectResponse403ApplicationProblemPlusJson::GetProjectResponse403ApplicationProblemPlusJsonVariant0( + GetVoiceLineProfileAssignmentForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -99998,18 +96023,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100022,7 +96045,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -100030,7 +96053,54 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetVoiceLineProfileAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetVoiceLineProfileAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -100047,18 +96117,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100079,7 +96147,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectResponse403ApplicationProblemPlusJson::GetProjectResponse403ApplicationProblemPlusJsonVariant2( + GetVoiceLineProfileAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -100112,6 +96180,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -100130,47 +96208,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize for GetProjectResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetVoiceLineProfileAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectResponse403ApplicationProblemPlusJson::GetProjectResponse403ApplicationProblemPlusJsonVariant0( + GetVoiceLineProfileAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetVoiceLineProfileAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetVoiceLineProfileAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectResponse403ApplicationProblemPlusJson::GetProjectResponse403ApplicationProblemPlusJsonVariant2( + GetVoiceLineProfileAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100179,16 +96273,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100197,19 +96291,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -100228,297 +96318,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetProjectResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetProjectResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_not_found_de", - serialize_with = "const_project_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_not_found_fc31bf52_de", - serialize_with = "const_project_not_found_fc31bf52_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_project_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetProjectResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetProjectResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetProjectResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetProjectResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectResponse404ApplicationProblemPlusJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_project_deleted_de", - serialize_with = "const_project_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_project_deleted_07a3e332_de", - serialize_with = "const_project_deleted_07a3e332_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_project_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_project_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetProjectResponse410ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetProjectResponse410ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetProjectResponse410ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetProjectResponse410ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectResponse410ApplicationProblemPlusJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetProjectResponse422ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_validation_failed_de", - serialize_with = "const_validation_failed_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "issues")] - pub issues: Vec, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_request_validation_failed_de", - serialize_with = "const_request_validation_failed_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_validation_failed_de", - serialize_with = "const_https_photon_codes_docs_problems_validation_failed_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetProjectResponse422ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "issues", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetProjectResponse422ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetProjectResponse422ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetProjectResponse422ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetProjectResponse422ApplicationProblemPlusJson::serialize(self, serializer) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetProjectResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetProjectResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::ChangePlanResponse502ApplicationProblemPlusJson as GetProjectResponse502ApplicationProblemPlusJson; - pub use self::GetAccountResponse503ApplicationProblemPlusJson as GetProjectResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetProjectResponse504ApplicationProblemPlusJson { - GetProjectResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetVoiceLineProfileAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetProjectResponse504ApplicationProblemPlusJson { + for GetVoiceLineProfileAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetProjectResponse504ApplicationProblemPlusJson), + ((usize, u32), GetVoiceLineProfileAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100539,7 +96383,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectResponse504ApplicationProblemPlusJson::GetProjectResponse504ApplicationProblemPlusJsonVariant0( + GetVoiceLineProfileAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -100547,27 +96391,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -100588,7 +96430,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectResponse504ApplicationProblemPlusJson::GetProjectResponse504ApplicationProblemPlusJsonVariant1( + GetVoiceLineProfileAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -100607,21 +96449,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -100632,45 +96474,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetProjectResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetVoiceLineProfileAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectResponse504ApplicationProblemPlusJson::GetProjectResponse504ApplicationProblemPlusJsonVariant0( + GetVoiceLineProfileAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectResponse504ApplicationProblemPlusJson::GetProjectResponse504ApplicationProblemPlusJsonVariant1( + GetVoiceLineProfileAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -100678,19 +96516,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -100709,55 +96543,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetProjectResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetProjectResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum GetProjectWhatsappPlatformResponse200ApplicationJson { - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0( - Box, - ), - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1( - Box, - ), + pub enum GetVoiceLineProfileAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetProjectWhatsappPlatformResponse200ApplicationJson { + for GetVoiceLineProfileAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetProjectWhatsappPlatformResponse200ApplicationJson), + ((usize, u32), GetVoiceLineProfileAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("shared")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -100770,7 +96598,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -100778,31 +96606,33 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse200ApplicationJson::GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0( + GetVoiceLineProfileAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("dedicated")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -100815,7 +96645,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1021u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -100823,7 +96653,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse200ApplicationJson::GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1( + GetVoiceLineProfileAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -100841,9 +96671,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("mode").and_then(serde_json::Value::as_str) == Some("shared") - || value.get("mode").and_then(serde_json::Value::as_str) - == Some("dedicated") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -100854,49 +96699,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse200ApplicationJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse200ApplicationJson", + "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetProjectWhatsappPlatformResponse200ApplicationJson { + impl serde::Serialize for GetVoiceLineProfileAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectWhatsappPlatformResponse200ApplicationJson::GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0( + GetVoiceLineProfileAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse200ApplicationJson::GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1( + GetVoiceLineProfileAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -100904,22 +96741,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -100939,39 +96770,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::GetProjectImessagePlatformResponse200ApplicationJsonVariant0 as GetProjectWhatsappPlatformResponse200ApplicationJsonVariant0; - pub use self::GetProjectImessagePlatformResponse200ApplicationJsonVariant1 as GetProjectWhatsappPlatformResponse200ApplicationJsonVariant1; #[derive(Debug, Clone)] - pub enum GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson { - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), GetVoiceProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -100984,24 +96802,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetVoiceProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -101022,7 +96875,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0( + GetVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -101030,27 +96883,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -101063,7 +96914,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -101071,7 +96922,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -101088,24 +96939,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -101126,7 +96969,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2( + GetVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -101159,6 +97002,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -101177,54 +97030,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2( + GetVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetVoiceProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetVoiceProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -101233,16 +97095,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -101251,25 +97113,237 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetVoiceProfileForbiddenProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum GetVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), + } + impl<'de> serde::Deserialize<'de> for GetVoiceProfileGatewayTimeoutProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), GetVoiceProfileGatewayTimeoutProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetVoiceProfileGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetVoiceProfileGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for GetVoiceProfileGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + GetVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) .ok() } })() @@ -101288,36 +97362,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -101331,16 +97394,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -101353,7 +97416,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -101361,7 +97424,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -101378,24 +97441,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -101416,7 +97471,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1( + GetVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -101462,44 +97517,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1( + GetVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -101507,24 +97559,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -101544,68 +97588,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson { - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetWebhookDestinationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWebhookDestinationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), GetWebhookDestinationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWebhookDestinationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -101626,7 +97697,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0( + GetWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -101634,33 +97705,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -101681,7 +97744,54 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1( + GetWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -101699,24 +97809,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -101727,51 +97852,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookDestinationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookDestinationForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson { + impl serde::Serialize for GetWebhookDestinationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0( + GetWebhookDestinationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1( + GetWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWebhookDestinationForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -101780,24 +97917,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -101806,6 +97935,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -101817,35 +97962,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWebhookDestinationForbiddenProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson { - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetWebhookDestinationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWebhookDestinationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetWebhookDestinationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -101861,24 +97996,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -101899,7 +98026,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0( + GetWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -101916,24 +98043,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -101954,7 +98073,7 @@ pub mod types { if replace { selected = Some(( rank, - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1( + GetWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -101998,52 +98117,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookDestinationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookDestinationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetWebhookDestinationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0( + GetWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson::GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1( + GetWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -102051,25 +98159,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -102088,37 +98186,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWebhookDestinationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonVariant1; - pub use self::GetOperationResponse200ApplicationJsonresource as GetResourceResponse200ApplicationJson; - pub use self::GetOperationResponse200ApplicationJsonresourcestate as GetResourceResponse200ApplicationJsonstate; #[derive(Debug, Clone)] - pub enum GetResourceResponse403ApplicationProblemPlusJson { - GetResourceResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetResourceResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetWebhookEventSchemaForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetResourceResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWebhookEventSchemaForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetResourceResponse403ApplicationProblemPlusJson), + ((usize, u32), GetWebhookEventSchemaForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -102132,23 +98220,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -102168,7 +98248,7 @@ pub mod types { if replace { selected = Some(( rank, - GetResourceResponse403ApplicationProblemPlusJson::GetResourceResponse403ApplicationProblemPlusJsonVariant0( + GetWebhookEventSchemaForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -102185,18 +98265,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -102209,7 +98287,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -102217,7 +98295,54 @@ pub mod types { if replace { selected = Some(( rank, - GetResourceResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWebhookEventSchemaForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWebhookEventSchemaForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -102234,22 +98359,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -102270,7 +98389,7 @@ pub mod types { if replace { selected = Some(( rank, - GetResourceResponse403ApplicationProblemPlusJson::GetResourceResponse403ApplicationProblemPlusJsonVariant2( + GetWebhookEventSchemaForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -102303,6 +98422,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -102321,67 +98450,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookEventSchemaForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookEventSchemaForbiddenProblem", ), ) } } } - impl serde::Serialize for GetResourceResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetWebhookEventSchemaForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetResourceResponse403ApplicationProblemPlusJson::GetResourceResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetResourceResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWebhookEventSchemaForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetWebhookEventSchemaForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetResourceResponse403ApplicationProblemPlusJson::GetResourceResponse403ApplicationProblemPlusJsonVariant2( + GetWebhookEventSchemaForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWebhookEventSchemaForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -102390,20 +98515,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -102412,399 +98533,15 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetResourceResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetResourceResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetResourceResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetResourceResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_resource_not_found_de", - serialize_with = "const_resource_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_resource_not_found_804e32a7_de", - serialize_with = "const_resource_not_found_804e32a7_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_resource_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_resource_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetResourceResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetResourceResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetResourceResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetResourceResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetResourceResponse404ApplicationProblemPlusJson::serialize(self, serializer) - } - } - pub use self::GetProjectResponse422ApplicationProblemPlusJson as GetResourceResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetResourceResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetResourceResponse422ApplicationProblemPlusJsonissuesItem; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetResourceResponse429ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_rate_limited_de", - serialize_with = "const_rate_limited_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_too_many_requests_de", - serialize_with = "const_too_many_requests_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_rate_limited_de", - serialize_with = "const_https_photon_codes_docs_problems_rate_limited_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetResourceResponse429ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetResourceResponse429ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetResourceResponse429ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetResourceResponse429ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetResourceResponse429ApplicationProblemPlusJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone)] - pub enum GetResourceResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetResourceResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetResourceResponse500ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetResourceResponse500ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetResourceResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetResourceResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetResourceResponse500ApplicationProblemPlusJson::GetResourceResponse500ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse500ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse500ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for GetResourceResponse500ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetResourceResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetResourceResponse500ApplicationProblemPlusJson::GetResourceResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -102823,33 +98560,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetResourceResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWebhookEventSchemaForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetResourceResponse500ApplicationProblemPlusJsonVariant1; - pub use self::ChangePlanResponse502ApplicationProblemPlusJson as GetResourceResponse502ApplicationProblemPlusJson; - pub use self::GetAccountResponse503ApplicationProblemPlusJson as GetResourceResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetResourceResponse504ApplicationProblemPlusJson { - GetResourceResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetResourceResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetWebhookEventSchemaGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetResourceResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWebhookEventSchemaGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetResourceResponse504ApplicationProblemPlusJson), + ((usize, u32), GetWebhookEventSchemaGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -102865,22 +98594,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -102901,7 +98624,7 @@ pub mod types { if replace { selected = Some(( rank, - GetResourceResponse504ApplicationProblemPlusJson::GetResourceResponse504ApplicationProblemPlusJsonVariant0( + GetWebhookEventSchemaGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -102918,22 +98641,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -102954,7 +98671,7 @@ pub mod types { if replace { selected = Some(( rank, - GetResourceResponse504ApplicationProblemPlusJson::GetResourceResponse504ApplicationProblemPlusJsonVariant1( + GetWebhookEventSchemaGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -102998,47 +98715,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookEventSchemaGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetResourceResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWebhookEventSchemaGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetResourceResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetWebhookEventSchemaGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetResourceResponse504ApplicationProblemPlusJson::GetResourceResponse504ApplicationProblemPlusJsonVariant0( + GetWebhookEventSchemaGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetResourceResponse504ApplicationProblemPlusJson::GetResourceResponse504ApplicationProblemPlusJsonVariant1( + GetWebhookEventSchemaGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -103046,21 +98757,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -103079,71 +98784,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetResourceResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWebhookEventSchemaGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetResourceResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetResourceResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJson as GetSharedLineAssignmentResponse200ApplicationJson; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as GetSharedLineAssignmentResponse200ApplicationJsonplatform; #[derive(Debug, Clone)] - pub enum GetSharedLineAssignmentResponse403ApplicationProblemPlusJson { - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum GetWhatsappBusinessAccountForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWhatsappBusinessAccountForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappBusinessAccountForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWhatsappBusinessAccountForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -103164,7 +98893,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessAccountForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -103172,27 +98901,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -103205,7 +98932,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -103213,7 +98940,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappBusinessAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -103230,24 +98957,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -103268,7 +98987,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappBusinessAccountForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -103301,6 +99020,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -103319,54 +99048,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappBusinessAccountForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessAccountForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetWhatsappBusinessAccountForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappBusinessAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappBusinessAccountForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -103375,16 +99113,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -103393,25 +99131,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -103430,143 +99158,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetSharedLineAssignmentResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_assignment_not_found_de", - serialize_with = "const_assignment_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_assignment_not_found_7df7180e_de", - serialize_with = "const_assignment_not_found_7df7180e_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_assignment_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_assignment_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetSharedLineAssignmentResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetSharedLineAssignmentResponse404ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetSharedLineAssignmentResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetSharedLineAssignmentResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetSharedLineAssignmentResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetSharedLineAssignmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetSharedLineAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetWhatsappBusinessAccountGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSharedLineAssignmentResponse500ApplicationProblemPlusJson { + for GetWhatsappBusinessAccountGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappBusinessAccountGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -103579,7 +99215,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -103587,7 +99223,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappBusinessAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -103595,33 +99231,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -103642,7 +99270,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse500ApplicationProblemPlusJson::GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -103661,23 +99289,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -103688,44 +99314,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappBusinessAccountGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappBusinessAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSharedLineAssignmentResponse500ApplicationProblemPlusJson::GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -103733,25 +99356,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -103770,69 +99383,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetSharedLineAssignmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetSharedLineAssignmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetSharedLineAssignmentResponse504ApplicationProblemPlusJson { - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum GetWhatsappBusinessAccountInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSharedLineAssignmentResponse504ApplicationProblemPlusJson { + for GetWhatsappBusinessAccountInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappBusinessAccountInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -103853,7 +99446,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessAccountInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -103861,33 +99454,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -103908,7 +99493,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -103927,21 +99512,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -103952,52 +99539,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessAccountInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappBusinessAccountInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessAccountInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -104005,24 +99581,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -104042,147 +99610,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetSmsLineCampaignAssignmentResponse200ApplicationJson { - #[serde(rename = "campaign")] - pub campaign: Option< - GetSmsLineCampaignAssignmentResponse200ApplicationJsoncampaign, - >, - #[serde(rename = "campaignObservedAt")] - pub campaign_observed_at: Option, - #[serde(rename = "eligibility")] - pub eligibility: GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility, - #[serde(rename = "observedAt")] - pub observed_at: Option, - #[serde(rename = "operationId")] - pub operation_id: Option, - #[serde(rename = "providerAssignmentStatus")] - pub provider_assignment_status: Option, - #[serde(rename = "reasonCode")] - pub reason_code: Option, - #[serde(rename = "requestedCampaignId")] - pub requested_campaign_id: Option, - #[serde(rename = "resourceId")] - pub resource_id: String, - #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub version: i64, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetSmsLineCampaignAssignmentResponse200ApplicationJsoncampaign { - #[serde(rename = "id")] - pub id: String, - #[serde(rename = "organizationId")] - pub organization_id: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility { - ///`eligible` - Eligible, - ///`blocked` - Blocked, - ///`unknown` - Unknown, - /// A value this version of the client does not know, kept as received. - Unknown2(String), - } - impl GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Eligible => "eligible", - Self::Blocked => "blocked", - Self::Unknown => "unknown", - Self::Unknown2(value) => value, - } - } - } - impl std::fmt::Display - for GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse200ApplicationJsoneligibility { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "eligible" => Ok(Self::Eligible), - "blocked" => Ok(Self::Blocked), - "unknown" => Ok(Self::Unknown), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `eligible`, `blocked`, `unknown`", - ), - ) - } - _ => Ok(Self::Unknown2(value)), - } - } - } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson { - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3( - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, - ), + pub enum GetWhatsappBusinessVerificationCodeForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson { + for GetWhatsappBusinessVerificationCodeForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappBusinessVerificationCodeForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -104196,25 +99645,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -104234,7 +99673,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessVerificationCodeForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -104251,18 +99690,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -104275,7 +99712,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -104283,7 +99720,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappBusinessVerificationCodeForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -104291,33 +99728,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -104338,7 +99767,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappBusinessVerificationCodeForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -104346,33 +99775,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -104393,7 +99814,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3( + GetWhatsappBusinessVerificationCodeForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -104427,23 +99848,23 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -104454,75 +99875,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappBusinessVerificationCodeForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessVerificationCodeForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappBusinessVerificationCodeForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappBusinessVerificationCodeForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3( + GetWhatsappBusinessVerificationCodeForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -104531,24 +99940,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -104557,25 +99958,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -104594,73 +99985,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3 as GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonVariant3; #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson { - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0( - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, - ), - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1( - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson { + for GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-not-found", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -104681,7 +100050,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -104689,33 +100058,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line not found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-line-not-found", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -104736,7 +100097,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -104755,21 +100116,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/sms-campaign-not-found") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line not found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/sms-line-not-found") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -104780,52 +100141,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -104833,25 +100183,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -104870,54 +100210,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1 as GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson { - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, - ), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6( - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, - ), + pub enum GetWhatsappBusinessVerificationCodeInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson { + for GetWhatsappBusinessVerificationCodeInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -104926,7 +100231,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson, + GetWhatsappBusinessVerificationCodeInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -104934,33 +100239,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -104981,7 +100276,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0( + GetWhatsappBusinessVerificationCodeInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -104989,33 +100284,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -105036,96 +100323,171 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1( + GetWhatsappBusinessVerificationCodeInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); } } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeInternalServerErrorProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeInternalServerErrorProblem", + ), + ) + } + } + } + impl serde::Serialize + for GetWhatsappBusinessVerificationCodeInternalServerErrorProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + GetWhatsappBusinessVerificationCodeInternalServerErrorProblem::InternalErrorProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWhatsappBusinessVerificationCodeInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() { match_count += 1; - let retained = if strict { - 0 + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2( - inner, - ), - )); + serde_json::from_value::< + Box, + >(candidate) + .ok() } + })() + .is_some() + { + match_count += 1; } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeInternalServerErrorProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum GetWhatsappBusinessVerificationCodeNotFoundProblem { + ResourceNotFoundProblem(Box), + WhatsappVerificationCodeNotFoundProblem( + Box, + ), + } + impl<'de> serde::Deserialize<'de> + for GetWhatsappBusinessVerificationCodeNotFoundProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), GetWhatsappBusinessVerificationCodeNotFoundProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + == Some("RESOURCE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") + == Some("Resource Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", + "https://photon.codes/docs/problems/resource-not-found", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -105146,7 +100508,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3( + GetWhatsappBusinessVerificationCodeNotFoundProblem::ResourceNotFoundProblem( inner, ), )); @@ -105154,33 +100516,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + == Some("WHATSAPP_VERIFICATION_CODE_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") + == Some("WhatsApp Verification Code Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate) .ok() } @@ -105201,41 +100555,244 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4( + GetWhatsappBusinessVerificationCodeNotFoundProblem::WhatsappVerificationCodeNotFoundProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-not-found") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("WHATSAPP_VERIFICATION_CODE_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("WhatsApp Verification Code Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeNotFoundProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeNotFoundProblem", + ), + ) + } + } + } + impl serde::Serialize for GetWhatsappBusinessVerificationCodeNotFoundProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + GetWhatsappBusinessVerificationCodeNotFoundProblem::ResourceNotFoundProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWhatsappBusinessVerificationCodeNotFoundProblem::WhatsappVerificationCodeNotFoundProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeNotFoundProblem", + ), + ) + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappVerificationCodeNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_verification_code_not_found_de", + serialize_with = "const_whatsapp_verification_code_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_verification_code_not_found_de", + serialize_with = "const_whats_app_verification_code_not_found_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_code_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_code_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct GetWhatsappBusinessVerificationCodeResponse { + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "receivedAt")] + pub received_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for GetWhatsappBusinessVerificationCodeResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["code", "receivedAt"])?; + GetWhatsappBusinessVerificationCodeResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + GetWhatsappBusinessVerificationCodeResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetWhatsappBusinessVerificationCodeResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetWhatsappBusinessVerificationCodeResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem { + ValidationFailedProblem(Box), + WhatsappVerificationWindowExpiredProblem( + Box, + ), + } + impl<'de> serde::Deserialize<'de> + for GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ( + (usize, u32), + GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem, + ), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate) .ok() } @@ -105248,7 +100805,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -105256,7 +100813,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5( + GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -105264,33 +100821,27 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("WHATSAPP_VERIFICATION_WINDOW_EXPIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("WhatsApp Verification Window Expired") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "https://photon.codes/docs/problems/whatsapp-verification-window-expired", )) .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate) .ok() } @@ -105311,7 +100862,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6( + GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem::WhatsappVerificationWindowExpiredProblem( inner, ), )); @@ -105330,72 +100881,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", - ) + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("WHATSAPP_VERIFICATION_WINDOW_EXPIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("WhatsApp Verification Window Expired") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "https://photon.codes/docs/problems/whatsapp-verification-window-expired", ) { (match_count, selected) = select(true); @@ -105407,197 +100908,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem", ), ) } } } impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson { + for GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, - { - let value = match self { - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + S: serde::Serializer, + { + let value = match self { + GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem::WhatsappVerificationWindowExpiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -105605,24 +100951,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate) .ok() } @@ -105642,64 +100980,134 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant3; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant4; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant5; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6 as GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonVariant6; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WhatsappVerificationWindowExpiredProblem { + #[serde( + rename = "code", + deserialize_with = "const_whatsapp_verification_window_expired_de", + serialize_with = "const_whatsapp_verification_window_expired_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_whats_app_verification_window_expired_de", + serialize_with = "const_whats_app_verification_window_expired_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_window_expired_de", + serialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_window_expired_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetWhatsappSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson { + for GetWhatsappSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -105712,7 +101120,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -105720,7 +101128,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -105728,33 +101136,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -105775,7 +101222,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -105793,24 +101240,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -105821,43 +101283,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + GetWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -105866,24 +101348,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -105892,6 +101366,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -105903,72 +101393,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson { - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0( - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - ), - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1( - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetWhatsappSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson { + for GetWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -105989,7 +101458,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0( + GetWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -105997,33 +101466,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -106044,7 +101505,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -106063,25 +101524,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-unavailable", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -106092,52 +101549,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0( + GetWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -106145,25 +101591,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -106182,72 +101618,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson { - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetWhatsappSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson { + for GetWhatsappSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappSharedLineAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -106268,7 +101681,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0( + GetWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -106276,33 +101689,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -106323,7 +101728,7 @@ pub mod types { if replace { selected = Some(( rank, - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -106342,21 +101747,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -106367,52 +101774,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0( + GetWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson::GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1( + GetWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -106420,24 +101816,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -106457,43 +101845,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonVariant1; - pub use self::BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonassignmentsItem as GetVoiceLineProfileAssignmentResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson { - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum GetWhatsappSignupConfigForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for GetWhatsappSignupConfigForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappSignupConfigForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -106507,25 +101879,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -106545,7 +101907,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappSignupConfigForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -106562,18 +101924,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + GetWhatsappSignupConfigForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -106586,7 +101993,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -106594,7 +102001,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappSignupConfigForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -106611,24 +102018,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -106649,7 +102048,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappSignupConfigForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -106682,6 +102081,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -106700,54 +102109,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSignupConfigForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSignupConfigForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappSignupConfigForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0( + GetWhatsappSignupConfigForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + GetWhatsappSignupConfigForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + GetWhatsappSignupConfigForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2( + GetWhatsappSignupConfigForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -106756,16 +102174,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -106774,25 +102192,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -106811,40 +102219,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappSignupConfigForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum GetWhatsappSignupConfigInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson { + for GetWhatsappSignupConfigInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), GetWhatsappSignupConfigInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -106858,16 +102252,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -106880,7 +102274,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -106888,7 +102282,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappSignupConfigInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -106905,24 +102299,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -106943,7 +102329,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappSignupConfigInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -106989,44 +102375,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSignupConfigInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union GetWhatsappSignupConfigInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for GetWhatsappSignupConfigInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + GetWhatsappSignupConfigInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1( + GetWhatsappSignupConfigInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -107034,24 +102417,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -107071,74 +102446,497 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union GetWhatsappSignupConfigInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct GetWhatsappSignupConfigResponse { + #[serde(rename = "configId")] + pub config_id: String, + #[serde(rename = "graphVersion")] + pub graph_version: String, + #[serde(rename = "scopes")] + pub scopes: Vec, + } + impl<'de> serde::Deserialize<'de> for GetWhatsappSignupConfigResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["configId", "graphVersion", "scopes"])?; + GetWhatsappSignupConfigResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + GetWhatsappSignupConfigResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for GetWhatsappSignupConfigResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + GetWhatsappSignupConfigResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct HttpErrorProblem { + #[serde( + rename = "code", + deserialize_with = "const_http_error_de", + serialize_with = "const_http_error_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_request_failed_de", + serialize_with = "const_request_failed_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_http_error_de", + serialize_with = "const_https_photon_codes_docs_problems_http_error_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct InvalidAttachmentRequestProblem { + #[serde( + rename = "code", + deserialize_with = "const_invalid_attachment_request_de", + serialize_with = "const_invalid_attachment_request_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_invalid_attachment_request_3e31c04b_de", + serialize_with = "const_invalid_attachment_request_3e31c04b_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_invalid_attachment_request_de", + serialize_with = "const_https_photon_codes_docs_problems_invalid_attachment_request_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct InvitationEnterpriseLoginRequest { + #[serde(rename = "invitationToken")] + pub invitation_token: String, + #[serde(rename = "returnTo")] + pub return_to: String, + } + impl<'de> serde::Deserialize<'de> for InvitationEnterpriseLoginRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["invitationToken", "returnTo"])?; + InvitationEnterpriseLoginRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + InvitationEnterpriseLoginRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for InvitationEnterpriseLoginRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + InvitationEnterpriseLoginRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct Invoice { + ///ISO currency code. + #[serde(rename = "currency")] + pub currency: String, + ///Invoice id. + #[serde(rename = "invoiceId")] + pub invoice_id: String, + ///Issue date, ISO 8601. + #[serde(rename = "issuedAt")] + pub issued_at: Option, + #[serde(rename = "kind")] + pub kind: InvoiceKind, + ///Human invoice number. + #[serde(rename = "number")] + pub number: String, + #[serde(rename = "paymentStatus")] + pub payment_status: InvoicePaymentStatus, + ///Downloadable PDF link. + #[serde(rename = "pdfUrl")] + pub pdf_url: Option, + ///Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. + #[serde(rename = "subjects")] + pub subjects: Vec, + ///Invoice total in cents. + #[serde( + rename = "totalCents", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub total_cents: i64, + } + impl<'de> serde::Deserialize<'de> for Invoice { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "currency", + "invoiceId", + "issuedAt", + "kind", + "number", + "paymentStatus", + "pdfUrl", + "subjects", + "totalCents", + ], + )?; + Invoice::deserialize(value).map_err(serde::de::Error::custom) + } else { + Invoice::deserialize(deserializer) + } + } + } + impl serde::Serialize for Invoice { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + Invoice::serialize(self, serializer) + } + } + ///What produced the invoice. + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum InvoiceKind { + ///`subscription` + Subscription, + ///`one_off` + OneOff, + ///`credit` + Credit, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl InvoiceKind { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Subscription => "subscription", + Self::OneOff => "one_off", + Self::Credit => "credit", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for InvoiceKind { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for InvoiceKind { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for InvoiceKind { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "subscription" => Ok(Self::Subscription), + "one_off" => Ok(Self::OneOff), + "credit" => Ok(Self::Credit), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `subscription`, `one_off`, `credit`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + ///Provider-neutral payment status. + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum InvoicePaymentStatus { + ///`pending` + Pending, + ///`succeeded` + Succeeded, + ///`failed` + Failed, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl InvoicePaymentStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Pending => "pending", + Self::Succeeded => "succeeded", + Self::Failed => "failed", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for InvoicePaymentStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for InvoicePaymentStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for InvoicePaymentStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pending" => Ok(Self::Pending), + "succeeded" => Ok(Self::Succeeded), + "failed" => Ok(Self::Failed), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `pending`, `succeeded`, `failed`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } #[derive(Debug, Clone)] - pub enum GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson { - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum InvoiceSubject { + ProjectInvoiceSubject(Box), + OrganizationInvoiceSubject(Box), } - impl<'de> serde::Deserialize<'de> - for GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for InvoiceSubject { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson, + if value.get("projectId").is_some() { + return serde_json::from_value(value) + .map(InvoiceSubject::ProjectInvoiceSubject) + .map_err(serde::de::Error::custom); + } + if value.get("organizationId").is_some() { + return serde_json::from_value(value) + .map(InvoiceSubject::OrganizationInvoiceSubject) + .map_err(serde::de::Error::custom); + } + Err( + serde::de::Error::custom( + "data did not match any variant of union InvoiceSubject", ), + ) + } + } + impl serde::Serialize for InvoiceSubject { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + InvoiceSubject::ProjectInvoiceSubject(inner) => { + inner.serialize(serializer) + } + InvoiceSubject::OrganizationInvoiceSubject(inner) => { + inner.serialize(serializer) + } + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProjectInvoiceSubject { + #[serde(rename = "projectId")] + pub project_id: String, + #[serde( + rename = "type", + deserialize_with = "const_project_de", + serialize_with = "const_project_ser", + )] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for ProjectInvoiceSubject { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["projectId", "type"])?; + ProjectInvoiceSubject::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ProjectInvoiceSubject::deserialize(deserializer) + } + } + } + impl serde::Serialize for ProjectInvoiceSubject { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ProjectInvoiceSubject::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OrganizationInvoiceSubject { + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde( + rename = "type", + deserialize_with = "const_organization_de", + serialize_with = "const_organization_ser", + )] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for OrganizationInvoiceSubject { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["organizationId", "type"])?; + OrganizationInvoiceSubject::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + OrganizationInvoiceSubject::deserialize(deserializer) + } + } + } + impl serde::Serialize for OrganizationInvoiceSubject { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OrganizationInvoiceSubject::serialize(self, serializer) + } + } + #[derive(Debug, Clone)] + pub enum ListAccountServiceKeysForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ListAccountServiceKeysForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ListAccountServiceKeysForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -107158,7 +102956,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ListAccountServiceKeysForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -107166,256 +102964,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson::GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateVoiceProfileResponse201ApplicationJson as GetVoiceProfileResponse200ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as GetVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as GetVoiceProfileResponse200ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as GetVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as GetVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as GetVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as GetVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as GetVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as GetVoiceProfileResponse200ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as GetVoiceProfileResponse200ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as GetVoiceProfileResponse200ApplicationJsonmediaEncryption; - #[derive(Debug, Clone)] - pub enum GetVoiceProfileResponse403ApplicationProblemPlusJson { - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetVoiceProfileResponse403ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), GetVoiceProfileResponse403ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -107436,7 +103003,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse403ApplicationProblemPlusJson::GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + ListAccountServiceKeysForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -107444,27 +103011,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -107477,7 +103042,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -107485,7 +103050,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAccountServiceKeysForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -107502,22 +103067,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -107538,7 +103097,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse403ApplicationProblemPlusJson::GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + ListAccountServiceKeysForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -107571,6 +103130,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -107589,51 +103158,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysForbiddenProblem", ), ) } } } - impl serde::Serialize for GetVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListAccountServiceKeysForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetVoiceProfileResponse403ApplicationProblemPlusJson::GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + ListAccountServiceKeysForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListAccountServiceKeysForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAccountServiceKeysForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceProfileResponse403ApplicationProblemPlusJson::GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + ListAccountServiceKeysForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -107642,16 +103223,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -107660,23 +103241,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -107695,137 +103268,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAccountServiceKeysForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetVoiceProfileResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_voice_profile_not_found_de", - serialize_with = "const_voice_profile_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_profile_not_found_6a9e6744_de", - serialize_with = "const_voice_profile_not_found_6a9e6744_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_profile_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetVoiceProfileResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetVoiceProfileResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetVoiceProfileResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetVoiceProfileResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetVoiceProfileResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as GetVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse429ApplicationProblemPlusJson as GetVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListAccountServiceKeysGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetVoiceProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListAccountServiceKeysGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetVoiceProfileResponse500ApplicationProblemPlusJson), + ((usize, u32), ListAccountServiceKeysGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -107838,7 +103324,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -107846,7 +103332,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListAccountServiceKeysGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -107854,31 +103340,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -107899,7 +103379,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse500ApplicationProblemPlusJson::GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + ListAccountServiceKeysGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -107918,23 +103398,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -107945,43 +103423,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for GetVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListAccountServiceKeysGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListAccountServiceKeysGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceProfileResponse500ApplicationProblemPlusJson::GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + ListAccountServiceKeysGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -107989,23 +103465,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -108024,64 +103492,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAccountServiceKeysGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as GetVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as GetVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetVoiceProfileResponse504ApplicationProblemPlusJson { - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListAccountServiceKeysInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetVoiceProfileResponse504ApplicationProblemPlusJson { + for ListAccountServiceKeysInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), GetVoiceProfileResponse504ApplicationProblemPlusJson), + ((usize, u32), ListAccountServiceKeysInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -108102,7 +103555,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse504ApplicationProblemPlusJson::GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + ListAccountServiceKeysInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -108110,31 +103563,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -108155,7 +103602,7 @@ pub mod types { if replace { selected = Some(( rank, - GetVoiceProfileResponse504ApplicationProblemPlusJson::GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + ListAccountServiceKeysInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -108174,21 +103621,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -108199,49 +103648,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAccountServiceKeysInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for GetVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListAccountServiceKeysInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetVoiceProfileResponse504ApplicationProblemPlusJson::GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + ListAccountServiceKeysInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetVoiceProfileResponse504ApplicationProblemPlusJson::GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + ListAccountServiceKeysInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -108249,22 +103690,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -108284,42 +103719,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAccountServiceKeysInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetWebhookDestinationResponse200ApplicationJson { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "destinationId")] - pub destination_id: String, - #[serde(rename = "enabledEvents")] - pub enabled_events: GetWebhookDestinationResponse200ApplicationJsonenabledEvents, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "status")] - pub status: GetWebhookDestinationResponse200ApplicationJsonstatus, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "url")] - pub url: String, + pub struct ListAccountServiceKeysResponse { + #[serde(rename = "serviceKeys")] + pub service_keys: Vec, } - impl<'de> serde::Deserialize<'de> - for GetWebhookDestinationResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for ListAccountServiceKeysResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -108328,114 +103740,69 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url", - ], - )?; - GetWebhookDestinationResponse200ApplicationJson::deserialize(value) + >(&value, &["serviceKeys"])?; + ListAccountServiceKeysResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetWebhookDestinationResponse200ApplicationJson::deserialize( - deserializer, - ) + ListAccountServiceKeysResponse::deserialize(deserializer) } } } - impl serde::Serialize for GetWebhookDestinationResponse200ApplicationJson { + impl serde::Serialize for ListAccountServiceKeysResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetWebhookDestinationResponse200ApplicationJson::serialize(self, serializer) + ListAccountServiceKeysResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum GetWebhookDestinationResponse200ApplicationJsonenabledEvents { - GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - Box>, - ), - GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - Box>, - ), + pub enum ListAttachmentsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWebhookDestinationResponse200ApplicationJsonenabledEvents { + impl<'de> serde::Deserialize<'de> for ListAttachmentsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWebhookDestinationResponse200ApplicationJsonenabledEvents, - ), - >; - let pass = |strict: bool| -> (usize, Selected) { + type Selected = Option<((usize, u32), ListAttachmentsForbiddenProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 800u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetWebhookDestinationResponse200ApplicationJsonenabledEvents::GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -108443,155 +103810,31 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookDestinationResponse200ApplicationJsonenabledEvents::GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - inner, - ), + ListAttachmentsForbiddenProblem::ForbiddenProblem(inner), )); } } - (match_count, selected) - }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; - } - if match_count >= 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union GetWebhookDestinationResponse200ApplicationJsonenabledEvents", - )) - } else { - Err( - serde::de::Error::custom( - "data must match at least one typed variant of union GetWebhookDestinationResponse200ApplicationJsonenabledEvents", - ), - ) - } - } - } - impl serde::Serialize - for GetWebhookDestinationResponse200ApplicationJsonenabledEvents { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetWebhookDestinationResponse200ApplicationJsonenabledEvents::GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWebhookDestinationResponse200ApplicationJsonenabledEvents::GetWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count >= 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match at least one typed variant of union GetWebhookDestinationResponse200ApplicationJsonenabledEvents", - ), - ) - } - } - } - pub use self::CreateWebhookDestinationResponse201ApplicationJsondestinationstatus as GetWebhookDestinationResponse200ApplicationJsonstatus; - #[derive(Debug, Clone)] - pub enum GetWebhookDestinationResponse403ApplicationProblemPlusJson { - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for GetWebhookDestinationResponse403ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWebhookDestinationResponse403ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -108612,7 +103855,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookDestinationResponse403ApplicationProblemPlusJson::GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( + ListAttachmentsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -108620,27 +103863,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -108653,7 +103894,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -108661,7 +103902,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAttachmentsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -108678,24 +103919,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -108716,7 +103949,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookDestinationResponse403ApplicationProblemPlusJson::GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + ListAttachmentsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -108749,6 +103982,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -108767,54 +104010,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAttachmentsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAttachmentsForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWebhookDestinationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListAttachmentsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWebhookDestinationResponse403ApplicationProblemPlusJson::GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWebhookDestinationResponse403ApplicationProblemPlusJson::GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + ListAttachmentsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListAttachmentsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListAttachmentsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListAttachmentsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -108823,16 +104075,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -108841,25 +104093,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -108878,271 +104120,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWebhookDestinationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAttachmentsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteWebhookDestinationResponse404ApplicationProblemPlusJson as GetWebhookDestinationResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWebhookDestinationResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_webhook_destination_deleted_de", - serialize_with = "const_webhook_destination_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_webhook_destination_deleted_88615f02_de", - serialize_with = "const_webhook_destination_deleted_88615f02_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_webhook_destination_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_webhook_destination_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetWebhookDestinationResponse410ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetWebhookDestinationResponse410ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetWebhookDestinationResponse410ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetWebhookDestinationResponse410ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetWebhookDestinationResponse410ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetWebhookDestinationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetWebhookDestinationResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetWebhookDestinationResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson { - #[serde(flatten)] - pub additional: BTreeMap>, - } - #[derive(Debug, Clone)] - pub enum Schema0 { - Schema0Variant0(Box), - Schema0Variant1(Box), - Schema0Variant2(Box), - Schema0Variant3(Box>>), - Schema0Variant4(Box>>), - } - impl<'de> serde::Deserialize<'de> for Schema0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - if value.is_string() { - return serde_json::from_value(value) - .map(Schema0::Schema0Variant0) - .map_err(serde::de::Error::custom); - } - if value.is_number() { - return serde_json::from_value(value) - .map(Schema0::Schema0Variant1) - .map_err(serde::de::Error::custom); - } - if value.is_boolean() { - return serde_json::from_value(value) - .map(Schema0::Schema0Variant2) - .map_err(serde::de::Error::custom); - } - if value.is_array() { - return serde_json::from_value(value) - .map(Schema0::Schema0Variant3) - .map_err(serde::de::Error::custom); - } - if value.is_object() { - return serde_json::from_value(value) - .map(Schema0::Schema0Variant4) - .map_err(serde::de::Error::custom); - } - Err( - serde::de::Error::custom( - "data did not match any variant of union Schema0", - ), - ) - } - } - impl serde::Serialize for Schema0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - match self { - Schema0::Schema0Variant0(inner) => inner.serialize(serializer), - Schema0::Schema0Variant1(inner) => inner.serialize(serializer), - Schema0::Schema0Variant2(inner) => inner.serialize(serializer), - Schema0::Schema0Variant3(inner) => inner.serialize(serializer), - Schema0::Schema0Variant4(inner) => inner.serialize(serializer), - } - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as GetWebhookEventSchemaResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWebhookEventSchemaResponse403ApplicationProblemPlusJson { - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListAttachmentsGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWebhookEventSchemaResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListAttachmentsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListAttachmentsGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -109155,7 +104174,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -109163,7 +104182,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAttachmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -109171,33 +104190,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -109218,7 +104229,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2( + ListAttachmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -109236,594 +104247,347 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWebhookEventSchemaResponse403ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union GetWebhookEventSchemaResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for GetWebhookEventSchemaResponse403ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWebhookEventSchemaResponse403ApplicationProblemPlusJson::GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWebhookEventSchemaResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetWebhookEventSchemaResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetWebhookEventSchemaResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetWebhookEventSchemaResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWhatsappBusinessAccountResponse200ApplicationJson { - #[serde(rename = "accountName")] - pub account_name: Option, - #[serde(rename = "alerts")] - pub alerts: Vec, - #[serde(rename = "businessId")] - pub business_id: String, - #[serde(rename = "businessName")] - pub business_name: Option, - #[serde(rename = "connectedAt")] - pub connected_at: DateTime, - #[serde( - rename = "maxPhoneNumbersPerBusiness", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub max_phone_numbers_per_business: Option, - #[serde(rename = "outboundCapacity")] - pub outbound_capacity: GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity, - #[serde(rename = "restriction")] - pub restriction: Option< - GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction, - >, - #[serde(rename = "reviewStatus")] - pub review_status: GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus, - #[serde( - rename = "senderCount", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub sender_count: i64, - #[serde( - rename = "subscribedAt", - default, - skip_serializing_if = "Option::is_none", - )] - pub subscribed_at: Option, - #[serde(rename = "wabaId")] - pub waba_id: String, - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "accountName", - "alerts", - "businessId", - "businessName", - "connectedAt", - "maxPhoneNumbersPerBusiness", - "outboundCapacity", - "restriction", - "reviewStatus", - "senderCount", - "subscribedAt", - "wabaId", - ], - )?; - GetWhatsappBusinessAccountResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - GetWhatsappBusinessAccountResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for GetWhatsappBusinessAccountResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetWhatsappBusinessAccountResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem { - #[serde(rename = "description")] - pub description: String, - #[serde(rename = "entityId")] - pub entity_id: String, - #[serde(rename = "entityType")] - pub entity_type: String, - #[serde(rename = "observedAt")] - pub observed_at: DateTime, - #[serde(rename = "severity")] - pub severity: String, - #[serde(rename = "status")] - pub status: String, - #[serde(rename = "type")] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "description", - "entityId", - "entityType", - "observedAt", - "severity", - "status", - "type", - ], - )?; - GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetWhatsappBusinessAccountResponse200ApplicationJsonalertsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity { - ///`50` - N50, - ///`250` - N250, - ///`1000` - N1000, - ///`2000` - N2000, - ///`10000` - N10000, - ///`100000` - N100000, - ///`UNLIMITED` - Unlimited, - ///`UNTIERED` - Untiered, - ///`UNKNOWN` - Unknown, - /// A value this version of the client does not know, kept as received. - Unknown2(String), - } - impl GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::N50 => "50", - Self::N250 => "250", - Self::N1000 => "1000", - Self::N2000 => "2000", - Self::N10000 => "10000", - Self::N100000 => "100000", - Self::Unlimited => "UNLIMITED", - Self::Untiered => "UNTIERED", - Self::Unknown => "UNKNOWN", - Self::Unknown2(value) => value, - } - } - } - impl std::fmt::Display - for GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJsonoutboundCapacity { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "50" => Ok(Self::N50), - "250" => Ok(Self::N250), - "1000" => Ok(Self::N1000), - "2000" => Ok(Self::N2000), - "10000" => Ok(Self::N10000), - "100000" => Ok(Self::N100000), - "UNLIMITED" => Ok(Self::Unlimited), - "UNTIERED" => Ok(Self::Untiered), - "UNKNOWN" => Ok(Self::Unknown), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `50`, `250`, `1000`, `2000`, `10000`, `100000`, `UNLIMITED`, `UNTIERED`, `UNKNOWN`", - ), - ) - } - _ => Ok(Self::Unknown2(value)), - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus { - ///`FLAGGED` - Flagged, - ///`DISABLED` - Disabled, - ///`REINSTATED` - Reinstated, - ///`UNKNOWN` - Unknown, - /// A value this version of the client does not know, kept as received. - Unknown2(String), - } - impl GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Flagged => "FLAGGED", - Self::Disabled => "DISABLED", - Self::Reinstated => "REINSTATED", - Self::Unknown => "UNKNOWN", - Self::Unknown2(value) => value, - } - } - } - impl std::fmt::Display - for GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "FLAGGED" => Ok(Self::Flagged), - "DISABLED" => Ok(Self::Disabled), - "REINSTATED" => Ok(Self::Reinstated), - "UNKNOWN" => Ok(Self::Unknown), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `FLAGGED`, `DISABLED`, `REINSTATED`, `UNKNOWN`", - ), - ) - } - _ => Ok(Self::Unknown2(value)), + (match_count, selected) = select(true); } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction { - #[serde(rename = "observedAt")] - pub observed_at: DateTime, - #[serde(rename = "status")] - pub status: GetWhatsappBusinessAccountResponse200ApplicationJsonrestrictionstatus, - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["observedAt", "status"])?; - GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ListAttachmentsGatewayTimeoutProblem", + )) } else { - GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction::deserialize( - deserializer, + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ListAttachmentsGatewayTimeoutProblem", + ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction { + impl serde::Serialize for ListAttachmentsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetWhatsappBusinessAccountResponse200ApplicationJsonrestriction::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus { - ///`PENDING` - Pending, - ///`APPROVED` - Approved, - ///`REJECTED` - Rejected, - ///`UNKNOWN` - Unknown, - /// A value this version of the client does not know, kept as received. - Unknown2(String), - } - impl GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Pending => "PENDING", - Self::Approved => "APPROVED", - Self::Rejected => "REJECTED", - Self::Unknown => "UNKNOWN", - Self::Unknown2(value) => value, + let value = match self { + ListAttachmentsGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListAttachmentsGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ListAttachmentsGatewayTimeoutProblem", + ), + ) } } } - impl std::fmt::Display - for GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } + #[derive(Debug, Clone)] + pub enum ListAttachmentsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus { - fn serialize(&self, serializer: S) -> Result + impl<'de> serde::Deserialize<'de> for ListAttachmentsInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result where - S: serde::Serializer, + D: serde::Deserializer<'de>, { - serializer.serialize_str(self.as_str()) + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ListAttachmentsInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListAttachmentsInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListAttachmentsInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ListAttachmentsInternalServerErrorProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ListAttachmentsInternalServerErrorProblem", + ), + ) + } } } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse200ApplicationJsonreviewStatus { - fn deserialize(deserializer: D) -> Result + impl serde::Serialize for ListAttachmentsInternalServerErrorProblem { + fn serialize(&self, serializer: S) -> Result where - D: serde::Deserializer<'de>, + S: serde::Serializer, { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "PENDING" => Ok(Self::Pending), - "APPROVED" => Ok(Self::Approved), - "REJECTED" => Ok(Self::Rejected), - "UNKNOWN" => Ok(Self::Unknown), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `PENDING`, `APPROVED`, `REJECTED`, `UNKNOWN`", - ), - ) + let value = match self { + ListAttachmentsInternalServerErrorProblem::InternalErrorProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListAttachmentsInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; } - _ => Ok(Self::Unknown2(value)), + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ListAttachmentsInternalServerErrorProblem", + ), + ) } } } #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListAuthorizedApplicationsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListAuthorizedApplicationsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ListAuthorizedApplicationsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -109837,25 +104601,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -109875,7 +104629,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( + ListAuthorizedApplicationsForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -109892,18 +104646,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -109916,7 +104668,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -109924,7 +104676,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAuthorizedApplicationsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -109932,33 +104684,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -109979,7 +104723,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( + ListAuthorizedApplicationsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -110013,13 +104757,15 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -110030,72 +104776,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListAuthorizedApplicationsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListAuthorizedApplicationsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListAuthorizedApplicationsForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2( + ListAuthorizedApplicationsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -110104,24 +104838,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -110141,61 +104867,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListAuthorizedApplicationsGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { + for ListAuthorizedApplicationsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ListAuthorizedApplicationsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -110208,7 +104924,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -110216,7 +104932,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListAuthorizedApplicationsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -110224,33 +104940,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -110271,7 +104979,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( + ListAuthorizedApplicationsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -110290,23 +104998,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -110317,44 +105023,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListAuthorizedApplicationsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListAuthorizedApplicationsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1( + ListAuthorizedApplicationsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -110362,25 +105065,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -110399,69 +105092,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListAuthorizedApplicationsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { + for ListAuthorizedApplicationsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ListAuthorizedApplicationsInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -110482,7 +105155,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( + ListAuthorizedApplicationsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -110490,33 +105163,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -110537,7 +105202,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( + ListAuthorizedApplicationsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -110556,21 +105221,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -110581,52 +105248,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListAuthorizedApplicationsInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListAuthorizedApplicationsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0( + ListAuthorizedApplicationsInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson::GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1( + ListAuthorizedApplicationsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -110634,24 +105290,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -110671,85 +105319,69 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWhatsappBusinessVerificationCodeResponse200ApplicationJson { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "receivedAt")] - pub received_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "receivedAt"])?; - GetWhatsappBusinessVerificationCodeResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetWhatsappBusinessVerificationCodeResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum ListAuthorizedApplicationsOrder { + #[serde(rename = "normal")] + Normal, + #[serde(rename = "desc")] + Desc, + #[serde(rename = "asc")] + Asc, } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetWhatsappBusinessVerificationCodeResponse200ApplicationJson::serialize( - self, - serializer, + impl std::fmt::Display for ListAuthorizedApplicationsOrder { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + ListAuthorizedApplicationsOrder::Normal => "normal", + ListAuthorizedApplicationsOrder::Desc => "desc", + ListAuthorizedApplicationsOrder::Asc => "asc", + }, ) } } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ListAuthorizedApplicationsResponse { + ///One page of applications authorized by the authenticated user. + #[serde(rename = "authorizedApplications")] + pub authorized_applications: Vec, + #[serde(rename = "listMetadata")] + pub list_metadata: ListAuthorizedApplicationsResponseListMetadata, + #[serde(flatten)] + pub additional: BTreeMap, + } + ///Pagination cursors to pass as after or before in the next list request. + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ListAuthorizedApplicationsResponseListMetadata { + ///Cursor for the next page, or null when there is no next page. + #[serde(rename = "after")] + pub after: Option, + ///Cursor for the previous page, or null when there is no previous page. + #[serde(rename = "before")] + pub before: Option, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson { - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ListBillingPlansForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListBillingPlansForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListBillingPlansForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -110762,24 +105394,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListBillingPlansForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -110800,7 +105467,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0( + ListBillingPlansForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -110808,27 +105475,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -110841,7 +105506,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -110849,7 +105514,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListBillingPlansForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -110866,24 +105531,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -110904,7 +105561,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2( + ListBillingPlansForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -110937,6 +105594,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -110955,54 +105622,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListBillingPlansForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListBillingPlansForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListBillingPlansForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2( + ListBillingPlansForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListBillingPlansForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListBillingPlansForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListBillingPlansForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -111011,16 +105687,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -111029,25 +105705,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -111066,72 +105732,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListBillingPlansForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson { - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, - ), - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListBillingPlansGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListBillingPlansGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), ListBillingPlansGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-not-found", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -111152,7 +105796,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0( + ListBillingPlansGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -111160,33 +105804,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VERIFICATION_CODE_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Verification Code Not Found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -111207,7 +105843,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1( + ListBillingPlansGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -111226,22 +105862,244 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-not-found") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VERIFICATION_CODE_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Verification Code Not Found") + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union ListBillingPlansGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union ListBillingPlansGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for ListBillingPlansGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + ListBillingPlansGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListBillingPlansGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ListBillingPlansGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum ListBillingPlansInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> for ListBillingPlansInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), ListBillingPlansInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListBillingPlansInternalServerErrorProblem::InternalErrorProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListBillingPlansInternalServerErrorProblem::InvalidAuthContextProblem( + inner, + ), + )); + } + } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-verification-code-not-found", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -111253,52 +106111,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListBillingPlansInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListBillingPlansInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson { + impl serde::Serialize for ListBillingPlansInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0( + ListBillingPlansInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1( + ListBillingPlansInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -111306,24 +106153,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -111343,154 +106182,121 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListBillingPlansInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant0; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_verification_code_not_found_de", - serialize_with = "const_whatsapp_verification_code_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_verification_code_not_found_de", - serialize_with = "const_whats_app_verification_code_not_found_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_code_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_code_not_found_ser", - )] - pub r#type: String, + pub struct ListBillingPlansResponse { + ///Plans grouped by valid metadata type and explicitly published with visible="true". + #[serde(rename = "plans")] + pub plans: std::collections::BTreeMap>, } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1 { + impl<'de> serde::Deserialize<'de> for ListBillingPlansResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) + super::support::check_known_members::(&value, &["plans"])?; + ListBillingPlansResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) + ListBillingPlansResponse::deserialize(deserializer) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1 { + impl serde::Serialize for ListBillingPlansResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) + ListBillingPlansResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson { - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListInvoicesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListInvoicesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListInvoicesForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListInvoicesForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -111503,7 +106309,52 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListInvoicesForbiddenProblem::InsufficientScopeProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -111511,7 +106362,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0( + ListInvoicesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -111519,33 +106370,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VERIFICATION_WINDOW_EXPIRED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Verification Window Expired") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-verification-window-expired", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -111566,9 +106409,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1( - inner, - ), + ListInvoicesForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -111584,24 +106425,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_VERIFICATION_WINDOW_EXPIRED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Verification Window Expired") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-verification-window-expired", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -111612,51 +106468,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ListInvoicesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListInvoicesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListInvoicesForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListInvoicesForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListInvoicesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -111665,24 +106533,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -111691,6 +106551,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -111702,143 +106578,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListInvoicesForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_whatsapp_verification_window_expired_de", - serialize_with = "const_whatsapp_verification_window_expired_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_whats_app_verification_window_expired_de", - serialize_with = "const_whats_app_verification_window_expired_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_window_expired_de", - serialize_with = "const_https_photon_codes_docs_problems_whatsapp_verification_window_expired_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListInvoicesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListInvoicesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListInvoicesGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -111851,7 +106632,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -111859,7 +106640,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListInvoicesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -111867,33 +106648,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -111914,7 +106687,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1( + ListInvoicesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -111933,23 +106706,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -111960,44 +106731,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListInvoicesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListInvoicesGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListInvoicesGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112005,25 +106773,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112042,73 +106800,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListInvoicesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson { - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListInvoicesInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListInvoicesInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ListInvoicesInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -112129,7 +106862,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0( + ListInvoicesInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -112137,33 +106870,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -112184,7 +106909,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1( + ListInvoicesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -112203,21 +106928,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -112228,52 +106955,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListInvoicesInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListInvoicesInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1( + ListInvoicesInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListInvoicesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112281,24 +106997,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -112318,45 +107026,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListInvoicesInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson as GetWhatsappSharedLineAssignmentResponse200ApplicationJson; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as GetWhatsappSharedLineAssignmentResponse200ApplicationJsonplatform; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ListInvoicesResponse { + #[serde(rename = "invoices")] + pub invoices: Vec, + } + impl<'de> serde::Deserialize<'de> for ListInvoicesResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["invoices"])?; + ListInvoicesResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ListInvoicesResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ListInvoicesResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ListInvoicesResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ListNumberAreaCodesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberAreaCodesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListNumberAreaCodesForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -112369,24 +107087,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListNumberAreaCodesForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -112407,7 +107160,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + ListNumberAreaCodesForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -112415,27 +107168,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -112448,7 +107199,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -112456,7 +107207,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListNumberAreaCodesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -112473,24 +107224,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -112511,7 +107254,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ListNumberAreaCodesForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -112544,6 +107287,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -112562,54 +107315,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberAreaCodesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ListNumberAreaCodesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListNumberAreaCodesForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListNumberAreaCodesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListNumberAreaCodesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -112618,16 +107380,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -112636,25 +107398,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112673,63 +107425,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberAreaCodesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::GetSharedLineAssignmentResponse404ApplicationProblemPlusJson as GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListNumberAreaCodesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberAreaCodesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ListNumberAreaCodesGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -112742,7 +107481,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -112750,7 +107489,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListNumberAreaCodesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -112758,33 +107497,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -112805,7 +107536,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ListNumberAreaCodesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -112824,23 +107555,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -112851,44 +107580,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberAreaCodesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListNumberAreaCodesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ListNumberAreaCodesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112896,25 +107622,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -112933,73 +107649,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberAreaCodesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ListNumberAreaCodesInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberAreaCodesInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ListNumberAreaCodesInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -113020,7 +107711,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ListNumberAreaCodesInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -113028,33 +107719,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -113075,7 +107758,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ListNumberAreaCodesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -113094,21 +107777,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -113119,52 +107804,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberAreaCodesInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberAreaCodesInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ListNumberAreaCodesInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ListNumberAreaCodesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -113172,24 +107846,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -113209,26 +107875,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberAreaCodesInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct GetWhatsappSignupConfigResponse200ApplicationJson { - #[serde(rename = "configId")] - pub config_id: String, - #[serde(rename = "graphVersion")] - pub graph_version: String, - #[serde(rename = "scopes")] - pub scopes: Vec, + pub struct ListNumberAreaCodesResponse { + #[serde(rename = "areaCodes")] + pub area_codes: Vec, + #[serde( + rename = "countryCode", + deserialize_with = "const_us_de", + serialize_with = "const_us_ser", + )] + pub country_code: String, } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSignupConfigResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for ListNumberAreaCodesResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -113237,52 +107902,36 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["configId", "graphVersion", "scopes"])?; - GetWhatsappSignupConfigResponse200ApplicationJson::deserialize(value) + >(&value, &["areaCodes", "countryCode"])?; + ListNumberAreaCodesResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - GetWhatsappSignupConfigResponse200ApplicationJson::deserialize( - deserializer, - ) + ListNumberAreaCodesResponse::deserialize(deserializer) } } } - impl serde::Serialize for GetWhatsappSignupConfigResponse200ApplicationJson { + impl serde::Serialize for ListNumberAreaCodesResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - GetWhatsappSignupConfigResponse200ApplicationJson::serialize( - self, - serializer, - ) + ListNumberAreaCodesResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson { - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListNumberCountriesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberCountriesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListNumberCountriesForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -113295,24 +107944,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListNumberCountriesForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -113333,7 +108017,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0( + ListNumberCountriesForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -113341,27 +108025,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -113374,7 +108056,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -113382,7 +108064,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListNumberCountriesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -113399,24 +108081,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -113437,7 +108111,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2( + ListNumberCountriesForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -113470,6 +108144,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -113488,54 +108172,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesForbiddenProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberCountriesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2( + ListNumberCountriesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListNumberCountriesForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListNumberCountriesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListNumberCountriesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -113544,16 +108237,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -113562,25 +108255,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -113599,60 +108282,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberCountriesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as GetWhatsappSignupConfigResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as GetWhatsappSignupConfigResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListNumberCountriesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberCountriesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ListNumberCountriesGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -113665,7 +108338,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -113673,7 +108346,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListNumberCountriesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -113681,33 +108354,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -113728,7 +108393,7 @@ pub mod types { if replace { selected = Some(( rank, - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1( + ListNumberCountriesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -113747,23 +108412,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -113774,44 +108437,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberCountriesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListNumberCountriesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson::GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1( + ListNumberCountriesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -113819,25 +108479,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -113856,106 +108506,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberCountriesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListAccountServiceKeysResponse200ApplicationJson { - #[serde(rename = "serviceKeys")] - pub service_keys: Vec< - ListAccountServiceKeysResponse200ApplicationJsonserviceKeysItem, - >, - } - impl<'de> serde::Deserialize<'de> - for ListAccountServiceKeysResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["serviceKeys"])?; - ListAccountServiceKeysResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListAccountServiceKeysResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListAccountServiceKeysResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListAccountServiceKeysResponse200ApplicationJson::serialize(self, serializer) - } - } - pub use self::CreateAccountServiceKeyResponse201ApplicationJsonserviceKey as ListAccountServiceKeysResponse200ApplicationJsonserviceKeysItem; #[derive(Debug, Clone)] - pub enum ListAccountServiceKeysResponse403ApplicationProblemPlusJson { - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListNumberCountriesInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAccountServiceKeysResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListNumberCountriesInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListAccountServiceKeysResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ListNumberCountriesInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -113976,56 +108568,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListNumberCountriesInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -114033,33 +108576,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -114080,7 +108615,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2( + ListNumberCountriesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -114098,29 +108633,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -114131,73 +108661,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListNumberCountriesInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ListAccountServiceKeysResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListNumberCountriesInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListNumberCountriesInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAccountServiceKeysResponse403ApplicationProblemPlusJson::ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2( + ListNumberCountriesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -114205,24 +108703,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -114242,58 +108732,111 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAccountServiceKeysResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListNumberCountriesInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListAccountServiceKeysResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as ListAccountServiceKeysResponse404ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as ListAccountServiceKeysResponse410ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ListNumberCountriesResponse { + #[serde(rename = "countries")] + pub countries: Vec, + } + impl<'de> serde::Deserialize<'de> for ListNumberCountriesResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["countries"])?; + ListNumberCountriesResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ListNumberCountriesResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ListNumberCountriesResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ListNumberCountriesResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct NumberCountry { + #[serde(rename = "callingCode")] + pub calling_code: String, + #[serde(rename = "countryCode")] + pub country_code: String, + #[serde(rename = "displayName")] + pub display_name: String, + } + impl<'de> serde::Deserialize<'de> for NumberCountry { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["callingCode", "countryCode", "displayName"])?; + NumberCountry::deserialize(value).map_err(serde::de::Error::custom) + } else { + NumberCountry::deserialize(deserializer) + } + } + } + impl serde::Serialize for NumberCountry { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + NumberCountry::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ListAccountServiceKeysResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListOauthScopesGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAccountServiceKeysResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListOauthScopesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListAccountServiceKeysResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListOauthScopesGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -114306,7 +108849,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -114314,7 +108857,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListOauthScopesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -114322,33 +108865,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -114369,7 +108904,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse500ApplicationProblemPlusJson::ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1( + ListOauthScopesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -114388,23 +108923,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -114415,44 +108948,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOauthScopesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOauthScopesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ListAccountServiceKeysResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListOauthScopesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAccountServiceKeysResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAccountServiceKeysResponse500ApplicationProblemPlusJson::ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListOauthScopesGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOauthScopesGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -114460,25 +108990,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -114497,69 +109017,99 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAccountServiceKeysResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListOauthScopesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListAccountServiceKeysResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListAccountServiceKeysResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListAccountServiceKeysResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ListOauthScopesResponse { + ///Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. + #[serde(rename = "scopes")] + pub scopes: Vec, + #[serde(flatten)] + pub additional: BTreeMap, + } #[derive(Debug, Clone)] - pub enum ListAccountServiceKeysResponse504ApplicationProblemPlusJson { - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListOperationsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAccountServiceKeysResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListOperationsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListAccountServiceKeysResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListOperationsForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListOperationsForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -114580,7 +109130,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse504ApplicationProblemPlusJson::ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0( + ListOperationsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -114588,33 +109138,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -114635,7 +109177,54 @@ pub mod types { if replace { selected = Some(( rank, - ListAccountServiceKeysResponse504ApplicationProblemPlusJson::ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1( + ListOperationsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListOperationsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -114653,22 +109242,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -114679,51 +109285,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAccountServiceKeysResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListAccountServiceKeysResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListOperationsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAccountServiceKeysResponse504ApplicationProblemPlusJson::ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAccountServiceKeysResponse504ApplicationProblemPlusJson::ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListOperationsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOperationsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOperationsForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOperationsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -114732,24 +109350,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -114758,6 +109368,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -114769,220 +109395,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAccountServiceKeysResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListOperationsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListAccountServiceKeysResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListAttachmentsResponse200ApplicationJson { - #[serde(rename = "items")] - pub items: Vec, - ///Continue with this token, even if items is empty. Omitted when no more pages remain. - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - } - impl<'de> serde::Deserialize<'de> for ListAttachmentsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["items", "nextPageToken"])?; - ListAttachmentsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListAttachmentsResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListAttachmentsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListAttachmentsResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListAttachmentsResponse200ApplicationJsonitemsItem { - #[serde(rename = "contentType")] - pub content_type: String, - #[serde( - rename = "createdAt", - serialize_with = "super::support::serialize_millis", - )] - pub created_at: DateTime, - #[serde(rename = "filename", default, skip_serializing_if = "Option::is_none")] - pub filename: Option, - #[serde(rename = "id")] - pub id: String, - #[serde(rename = "metadata", default, skip_serializing_if = "Option::is_none")] - pub metadata: Option>, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "sizeBytes", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub size_bytes: i64, - #[serde( - rename = "updatedAt", - serialize_with = "super::support::serialize_millis", - )] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for ListAttachmentsResponse200ApplicationJsonitemsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "contentType", - "createdAt", - "filename", - "id", - "metadata", - "projectId", - "sizeBytes", - "updatedAt", - ], - )?; - ListAttachmentsResponse200ApplicationJsonitemsItem::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListAttachmentsResponse200ApplicationJsonitemsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListAttachmentsResponse200ApplicationJsonitemsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListAttachmentsResponse200ApplicationJsonitemsItem::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ListAttachmentsResponse403ApplicationProblemPlusJson { - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListOperationsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAttachmentsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListOperationsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListAttachmentsResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListOperationsGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListAttachmentsResponse403ApplicationProblemPlusJson::ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -114995,7 +109449,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -115003,7 +109457,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListOperationsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -115011,31 +109465,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -115056,7 +109504,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse403ApplicationProblemPlusJson::ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2( + ListOperationsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -115074,29 +109522,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -115107,52 +109548,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListAttachmentsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListOperationsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAttachmentsResponse403ApplicationProblemPlusJson::ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAttachmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAttachmentsResponse403ApplicationProblemPlusJson::ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListOperationsGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOperationsGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -115160,41 +109590,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -115213,33 +109617,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAttachmentsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListOperationsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListAttachmentsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListAttachmentsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListAttachmentsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListAttachmentsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListAttachmentsResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum ListAttachmentsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListOperationsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAttachmentsResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListOperationsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListAttachmentsResponse500ApplicationProblemPlusJson), + ((usize, u32), ListOperationsInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -115253,16 +109649,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -115275,7 +109671,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -115283,7 +109679,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListOperationsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -115300,22 +109696,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -115336,7 +109726,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse500ApplicationProblemPlusJson::ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1( + ListOperationsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -115382,43 +109772,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListOperationsInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ListAttachmentsResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListOperationsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAttachmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAttachmentsResponse500ApplicationProblemPlusJson::ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1( + ListOperationsInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListOperationsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -115426,22 +109814,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -115461,64 +109843,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAttachmentsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListOperationsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListAttachmentsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListAttachmentsResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListAttachmentsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListAttachmentsResponse504ApplicationProblemPlusJson { - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListProjectApiKeysForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAttachmentsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListProjectApiKeysForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListAttachmentsResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListProjectApiKeysForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectApiKeysForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -115539,7 +109948,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse504ApplicationProblemPlusJson::ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0( + ListProjectApiKeysForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -115547,31 +109956,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectApiKeysForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -115592,7 +110042,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAttachmentsResponse504ApplicationProblemPlusJson::ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1( + ListProjectApiKeysForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -115610,22 +110060,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -115636,48 +110103,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectApiKeysForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAttachmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectApiKeysForbiddenProblem", ), ) } } } - impl serde::Serialize for ListAttachmentsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListProjectApiKeysForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAttachmentsResponse504ApplicationProblemPlusJson::ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAttachmentsResponse504ApplicationProblemPlusJson::ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1( + ListProjectApiKeysForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectApiKeysForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectApiKeysForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListProjectApiKeysForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -115686,22 +110168,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -115710,6 +110186,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -115721,131 +110213,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAttachmentsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListProjectApiKeysForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListAttachmentsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListAttachmentsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListAuthorizedApplicationsResponse200ApplicationJson { - ///One page of applications authorized by the authenticated user. - #[serde(rename = "authorizedApplications")] - pub authorized_applications: Vec< - ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItem, - >, - #[serde(rename = "listMetadata")] - pub list_metadata: ListAuthorizedApplicationsResponse200ApplicationJsonlistMetadata, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItemapplicationredirectUrisItem { - ///Whether this is the application's default redirect URI. - #[serde(rename = "default")] - pub default: bool, - ///Registered OAuth callback URL for the application. - #[serde(rename = "uri")] - pub uri: String, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, - } - ///The OAuth application authorized by the authenticated user. #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItemapplication { - ///OAuth application type reported by the authorization server. - #[serde(rename = "applicationType")] - pub application_type: String, - ///OAuth client identifier used by the application in authorization requests. - #[serde(rename = "clientId")] - pub client_id: String, - ///UTC timestamp when the application was created, in RFC 3339 format. - #[serde(rename = "createdAt")] - pub created_at: DateTime, - ///Application description, or null when no description is set. - #[serde(rename = "description")] - pub description: Option, - ///Application identifier to pass as applicationId when revoking this application's grant. - #[serde(rename = "id")] - pub id: String, - ///Whether the application is classified as first-party by the authorization server. - #[serde(rename = "isFirstParty")] - pub is_first_party: bool, - ///Display name of the authorized application. - #[serde(rename = "name")] - pub name: String, - ///Registered OAuth callback URLs for the application. - #[serde(rename = "redirectUris")] - pub redirect_uris: Vec< - ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItemapplicationredirectUrisItem, - >, - ///OAuth scope slugs configured for the application; grantedScopes records what the user authorized. - #[serde(rename = "scopes")] - pub scopes: Vec, - ///UTC timestamp when the application was last updated, in RFC 3339 format. - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - ///Whether the application uses Proof Key for Code Exchange (PKCE). - #[serde(rename = "usesPkce")] - pub uses_pkce: bool, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, + #[serde(remote = "Self")] + pub struct ListProjectApiKeysResponse { + #[serde(rename = "apiKeys")] + pub api_keys: Vec, } - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItem { - #[serde(rename = "application")] - pub application: ListAuthorizedApplicationsResponse200ApplicationJsonauthorizedApplicationsItemapplication, - ///Identifier of the user's authorization grant for this application. - #[serde(rename = "authorizationId")] - pub authorization_id: String, - ///OAuth scope slugs the user has granted to this application. - #[serde(rename = "grantedScopes")] - pub granted_scopes: Vec, - ///OAuth resource associated with the grant, or null when no resource is specified. - #[serde(rename = "oauthResource")] - pub oauth_resource: Option, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, + impl<'de> serde::Deserialize<'de> for ListProjectApiKeysResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["apiKeys"])?; + ListProjectApiKeysResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ListProjectApiKeysResponse::deserialize(deserializer) + } + } } - ///Pagination cursors to pass as after or before in the next list request. - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListAuthorizedApplicationsResponse200ApplicationJsonlistMetadata { - ///Cursor for the next page, or null when there is no next page. - #[serde(rename = "after")] - pub after: Option, - ///Cursor for the previous page, or null when there is no previous page. - #[serde(rename = "before")] - pub before: Option, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, + impl serde::Serialize for ListProjectApiKeysResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ListProjectApiKeysResponse::serialize(self, serializer) + } } #[derive(Debug, Clone)] - pub enum ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum ListProjectPlatformsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListProjectPlatformsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListProjectPlatformsForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -115858,16 +110274,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectPlatformsForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -115880,7 +110339,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -115888,7 +110347,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + ListProjectPlatformsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -115896,27 +110355,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -115929,7 +110386,54 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectPlatformsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -115937,7 +110441,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListProjectPlatformsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -115970,6 +110474,24 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -115980,43 +110502,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectPlatformsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectPlatformsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListProjectPlatformsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListProjectPlatformsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectPlatformsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectPlatformsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListProjectPlatformsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -116025,16 +110567,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -116043,6 +110585,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -116054,34 +110612,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListProjectPlatformsForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListAuthorizedApplicationsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListAuthorizedApplicationsResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListProjectPlatformsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson { + for ListProjectPlatformsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ListProjectPlatformsInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -116095,16 +110645,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -116117,7 +110667,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -116125,7 +110675,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListProjectPlatformsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -116142,24 +110692,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -116180,7 +110722,7 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1( + ListProjectPlatformsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -116226,44 +110768,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectPlatformsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectPlatformsInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListProjectPlatformsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListProjectPlatformsInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1( + ListProjectPlatformsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -116271,24 +110810,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -116308,69 +110839,154 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListProjectPlatformsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ListProjectPlatformsResponse { + #[serde(rename = "platforms")] + pub platforms: Vec, + } + impl<'de> serde::Deserialize<'de> for ListProjectPlatformsResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["platforms"])?; + ListProjectPlatformsResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ListProjectPlatformsResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ListProjectPlatformsResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ListProjectPlatformsResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SupportedPlatform { + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "displayName")] + pub display_name: String, + #[serde(rename = "type")] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for SupportedPlatform { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["description", "displayName", "type"])?; + SupportedPlatform::deserialize(value).map_err(serde::de::Error::custom) + } else { + SupportedPlatform::deserialize(deserializer) + } + } + } + impl serde::Serialize for SupportedPlatform { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SupportedPlatform::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson { - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListProjectsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListProjectsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ListProjectsForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectsForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -116391,41 +111007,31 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), + ListProjectsForbiddenProblem::InsufficientScopeProblem(inner), )); } } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -116446,12 +111052,57 @@ pub mod types { if replace { selected = Some(( rank, - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1( + ListProjectsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListProjectsForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; let select = |keyed: bool| -> (usize, Selected) { @@ -116464,22 +111115,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -116490,77 +111158,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListProjectsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson::ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListProjectsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectsForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -116569,755 +111223,93 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJson { - ///Plans grouped by valid metadata type and explicitly published with visible="true". - #[serde(rename = "plans")] - pub plans: std::collections::BTreeMap< - String, - Vec, - >, - } - impl<'de> serde::Deserialize<'de> for ListBillingPlansResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["plans"])?; - ListBillingPlansResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListBillingPlansResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem { - #[serde(rename = "featureKey")] - pub feature_key: String, - #[serde(rename = "value")] - pub value: String, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["featureKey", "value"])?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem::serialize( - self, - serializer, - ) - } - } - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItemchargeModel as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemfixedChargesItemchargeModel; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricingtiersItem as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemfixedChargesItempricingtiersItem; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItempricing as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemfixedChargesItempricing; - pub use self::GetBillingOverviewResponse200ApplicationJsonsubscriptionsItemfixedChargesItem as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemfixedChargesItem; - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval { - ///`weekly` - Weekly, - ///`monthly` - Monthly, - ///`quarterly` - Quarterly, - ///`semiannual` - Semiannual, - ///`yearly` - Yearly, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Weekly => "weekly", - Self::Monthly => "monthly", - Self::Quarterly => "quarterly", - Self::Semiannual => "semiannual", - Self::Yearly => "yearly", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "weekly" => Ok(Self::Weekly), - "monthly" => Ok(Self::Monthly), - "quarterly" => Ok(Self::Quarterly), - "semiannual" => Ok(Self::Semiannual), - "yearly" => Ok(Self::Yearly), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `weekly`, `monthly`, `quarterly`, `semiannual`, `yearly`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel { - ///`dynamic` - Dynamic, - ///`graduated` - Graduated, - ///`graduated_percentage` - GraduatedPercentage, - ///`package` - Package, - ///`percentage` - Percentage, - ///`standard` - Standard, - ///`volume` - Volume, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Dynamic => "dynamic", - Self::Graduated => "graduated", - Self::GraduatedPercentage => "graduated_percentage", - Self::Package => "package", - Self::Percentage => "percentage", - Self::Standard => "standard", - Self::Volume => "volume", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "dynamic" => Ok(Self::Dynamic), - "graduated" => Ok(Self::Graduated), - "graduated_percentage" => Ok(Self::GraduatedPercentage), - "package" => Ok(Self::Package), - "percentage" => Ok(Self::Percentage), - "standard" => Ok(Self::Standard), - "volume" => Ok(Self::Volume), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `dynamic`, `graduated`, `graduated_percentage`, `package`, `percentage`, `standard`, `volume`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem { - #[serde(rename = "flatAmount")] - pub flat_amount: Option, - #[serde(rename = "fromUnit", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub from_unit: i64, - #[serde(rename = "perUnitAmount")] - pub per_unit_amount: Option, - #[serde(rename = "rate")] - pub rate: Option, - #[serde( - rename = "toUnit", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub to_unit: Option, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["flatAmount", "fromUnit", "perUnitAmount", "rate", "toUnit"], - )?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing { - #[serde(rename = "amount")] - pub amount: Option, - #[serde(rename = "fixedAmount")] - pub fixed_amount: Option, - #[serde( - rename = "freeUnits", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub free_units: Option, - #[serde( - rename = "freeUnitsPerEvents", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub free_units_per_events: Option, - #[serde(rename = "freeUnitsPerTotalAggregation")] - pub free_units_per_total_aggregation: Option, - #[serde( - rename = "packageSize", - default, - deserialize_with = "deserialize_849930913d2b9d6c", - )] - pub package_size: Option, - #[serde(rename = "perTransactionMaxAmount")] - pub per_transaction_max_amount: Option, - #[serde(rename = "perTransactionMinAmount")] - pub per_transaction_min_amount: Option, - #[serde(rename = "pricingGroupKeys")] - pub pricing_group_keys: Vec, - #[serde(rename = "rate")] - pub rate: Option, - #[serde(rename = "tiers")] - pub tiers: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem, - >, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "amount", - "fixedAmount", - "freeUnits", - "freeUnitsPerEvents", - "freeUnitsPerTotalAggregation", - "packageSize", - "perTransactionMaxAmount", - "perTransactionMinAmount", - "pricingGroupKeys", - "rate", - "tiers", - ], - )?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem { - #[serde(rename = "key")] - pub key: String, - #[serde(rename = "values")] - pub values: Vec, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["key", "values"])?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem { - #[serde(rename = "displayName")] - pub display_name: Option, - #[serde(rename = "pricing")] - pub pricing: ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing, - #[serde(rename = "values")] - pub values: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItemvaluesItem, - >, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["displayName", "pricing", "values"])?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem::serialize( - self, - serializer, - ) - } - } - pub use self::ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricingtiersItem as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItempricingtiersItem; - pub use self::ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItempricing as ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItempricing; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem { - #[serde(rename = "chargeCode")] - pub charge_code: Option, - #[serde(rename = "chargeModel")] - pub charge_model: ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemchargeModel, - #[serde(rename = "displayName")] - pub display_name: Option, - #[serde(rename = "filters")] - pub filters: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItemfiltersItem, - >, - #[serde(rename = "invoiceable")] - pub invoiceable: bool, - #[serde(rename = "metricCode")] - pub metric_code: String, - #[serde( - rename = "minimumAmountCents", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub minimum_amount_cents: i64, - #[serde(rename = "payInAdvance")] - pub pay_in_advance: bool, - #[serde(rename = "pricing")] - pub pricing: ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItempricing, - #[serde(rename = "prorated")] - pub prorated: bool, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "chargeCode", - "chargeModel", - "displayName", - "filters", - "invoiceable", - "metricCode", - "minimumAmountCents", - "payInAdvance", - "pricing", - "prorated", - ], - )?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse200ApplicationJsonplansAdditionalItem { - ///Recurring base price in whole cents. - #[serde( - rename = "baseAmountCents", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub base_amount_cents: i64, - ///Display name for the subscription category; absent or null when unconfigured. - #[serde( - rename = "categoryDisplayName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub category_display_name: Option>, - ///ISO currency code. - #[serde(rename = "currency")] - pub currency: String, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "entitlements")] - pub entitlements: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItementitlementsItem, - >, - #[serde(rename = "fixedCharges")] - pub fixed_charges: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemfixedChargesItem, - >, - #[serde(rename = "interval")] - pub interval: ListBillingPlansResponse200ApplicationJsonplansAdditionalIteminterval, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "payInAdvance")] - pub pay_in_advance: bool, - #[serde(rename = "planCode")] - pub plan_code: String, - #[serde(rename = "usageCharges")] - pub usage_charges: Vec< - ListBillingPlansResponse200ApplicationJsonplansAdditionalItemusageChargesItem, - >, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "baseAmountCents", - "categoryDisplayName", - "currency", - "description", - "entitlements", - "fixedCharges", - "interval", - "name", - "payInAdvance", - "planCode", - "usageCharges", - ], - )?; - ListBillingPlansResponse200ApplicationJsonplansAdditionalItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) } else { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItem::deserialize( - deserializer, + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union ListProjectsForbiddenProblem", + ), ) } } } - impl serde::Serialize - for ListBillingPlansResponse200ApplicationJsonplansAdditionalItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse200ApplicationJsonplansAdditionalItem::serialize( - self, - serializer, - ) - } - } - pub use self::CountProjectsResponse400ApplicationProblemPlusJson as ListBillingPlansResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListBillingPlansResponse403ApplicationProblemPlusJson { - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListProjectsGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListProjectsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListBillingPlansResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListProjectsGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListBillingPlansResponse403ApplicationProblemPlusJson::ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -117330,7 +111322,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -117338,7 +111330,7 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListProjectsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -117346,33 +111338,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -117393,7 +111377,7 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse403ApplicationProblemPlusJson::ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2( + ListProjectsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -117411,29 +111395,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -117444,70 +111421,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListProjectsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListBillingPlansResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListProjectsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListBillingPlansResponse403ApplicationProblemPlusJson::ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListBillingPlansResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListBillingPlansResponse403ApplicationProblemPlusJson::ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListProjectsGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListProjectsGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -117515,23 +111463,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -117550,136 +111490,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListBillingPlansResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListProjectsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListBillingPlansResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListBillingPlansResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListBillingPlansResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_failed_precondition_de", - serialize_with = "const_failed_precondition_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_failed_precondition_957374cb_de", - serialize_with = "const_failed_precondition_957374cb_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_failed_precondition_de", - serialize_with = "const_https_photon_codes_docs_problems_failed_precondition_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ListBillingPlansResponse409ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListBillingPlansResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListBillingPlansResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListBillingPlansResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListBillingPlansResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListBillingPlansResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListBillingPlansResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum ListBillingPlansResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListResourcesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListResourcesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListBillingPlansResponse500ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListResourcesForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListResourcesForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -117692,7 +111587,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -117700,7 +111595,7 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListResourcesForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -117708,33 +111603,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -117755,12 +111642,57 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse500ApplicationProblemPlusJson::ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1( + ListResourcesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListResourcesForbiddenProblem::ResourceMismatchProblem(inner), + )); + } + } (match_count, selected) }; let select = |keyed: bool| -> (usize, Selected) { @@ -117773,24 +111705,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -117801,42 +111748,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesForbiddenProblem", ), ) } } } - impl serde::Serialize for ListBillingPlansResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListResourcesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListBillingPlansResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListBillingPlansResponse500ApplicationProblemPlusJson::ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListResourcesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListResourcesForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListResourcesForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListResourcesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -117845,22 +111813,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -117869,6 +111831,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -117880,34 +111858,24 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListBillingPlansResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListResourcesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListBillingPlansResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListBillingPlansResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListBillingPlansResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListBillingPlansResponse504ApplicationProblemPlusJson { - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListResourcesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListBillingPlansResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListResourcesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListBillingPlansResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListResourcesGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -117922,24 +111890,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -117960,7 +111920,7 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse504ApplicationProblemPlusJson::ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0( + ListResourcesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -117977,24 +111937,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -118015,7 +111967,7 @@ pub mod types { if replace { selected = Some(( rank, - ListBillingPlansResponse504ApplicationProblemPlusJson::ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1( + ListResourcesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -118059,49 +112011,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListBillingPlansResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListBillingPlansResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListResourcesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListBillingPlansResponse504ApplicationProblemPlusJson::ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListBillingPlansResponse504ApplicationProblemPlusJson::ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListResourcesGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListResourcesGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -118109,23 +112053,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -118144,439 +112080,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListBillingPlansResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListResourcesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListBillingPlansResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListBillingPlansResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListInvoicesResponse200ApplicationJson { - #[serde(rename = "invoices")] - pub invoices: Vec, - } - impl<'de> serde::Deserialize<'de> for ListInvoicesResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["invoices"])?; - ListInvoicesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListInvoicesResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListInvoicesResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListInvoicesResponse200ApplicationJson::serialize(self, serializer) - } - } - ///What produced the invoice. - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListInvoicesResponse200ApplicationJsoninvoicesItemkind { - ///`subscription` - Subscription, - ///`one_off` - OneOff, - ///`credit` - Credit, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListInvoicesResponse200ApplicationJsoninvoicesItemkind { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Subscription => "subscription", - Self::OneOff => "one_off", - Self::Credit => "credit", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display for ListInvoicesResponse200ApplicationJsoninvoicesItemkind { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize for ListInvoicesResponse200ApplicationJsoninvoicesItemkind { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItemkind { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "subscription" => Ok(Self::Subscription), - "one_off" => Ok(Self::OneOff), - "credit" => Ok(Self::Credit), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `subscription`, `one_off`, `credit`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - ///Provider-neutral payment status. - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus { - ///`pending` - Pending, - ///`succeeded` - Succeeded, - ///`failed` - Failed, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Pending => "pending", - Self::Succeeded => "succeeded", - Self::Failed => "failed", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "pending" => Ok(Self::Pending), - "succeeded" => Ok(Self::Succeeded), - "failed" => Ok(Self::Failed), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `pending`, `succeeded`, `failed`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0 { - #[serde(rename = "projectId")] - pub project_id: String, - #[serde( - rename = "type", - deserialize_with = "const_project_de", - serialize_with = "const_project_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["projectId", "type"])?; - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1 { - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde( - rename = "type", - deserialize_with = "const_organization_de", - serialize_with = "const_organization_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["organizationId", "type"])?; - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone)] - pub enum ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0( - Box, - ), - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - if value.get("projectId").is_some() { - return serde_json::from_value(value) - .map( - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem::ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0, - ) - .map_err(serde::de::Error::custom); - } - if value.get("organizationId").is_some() { - return serde_json::from_value(value) - .map( - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem::ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1, - ) - .map_err(serde::de::Error::custom); - } - Err( - serde::de::Error::custom( - "data did not match any variant of union ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem", - ), - ) - } - } - impl serde::Serialize - for ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - match self { - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem::ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant0( - inner, - ) => inner.serialize(serializer), - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem::ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItemVariant1( - inner, - ) => inner.serialize(serializer), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListInvoicesResponse200ApplicationJsoninvoicesItem { - ///ISO currency code. - #[serde(rename = "currency")] - pub currency: String, - ///Invoice id. - #[serde(rename = "invoiceId")] - pub invoice_id: String, - ///Issue date, ISO 8601. - #[serde(rename = "issuedAt")] - pub issued_at: Option, - #[serde(rename = "kind")] - pub kind: ListInvoicesResponse200ApplicationJsoninvoicesItemkind, - ///Human invoice number. - #[serde(rename = "number")] - pub number: String, - #[serde(rename = "paymentStatus")] - pub payment_status: ListInvoicesResponse200ApplicationJsoninvoicesItempaymentStatus, - ///Downloadable PDF link. - #[serde(rename = "pdfUrl")] - pub pdf_url: Option, - ///Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. - #[serde(rename = "subjects")] - pub subjects: Vec< - ListInvoicesResponse200ApplicationJsoninvoicesItemsubjectsItem, - >, - ///Invoice total in cents. - #[serde( - rename = "totalCents", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub total_cents: i64, - } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse200ApplicationJsoninvoicesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "currency", - "invoiceId", - "issuedAt", - "kind", - "number", - "paymentStatus", - "pdfUrl", - "subjects", - "totalCents", - ], - )?; - ListInvoicesResponse200ApplicationJsoninvoicesItem::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListInvoicesResponse200ApplicationJsoninvoicesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListInvoicesResponse200ApplicationJsoninvoicesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListInvoicesResponse200ApplicationJsoninvoicesItem::serialize( - self, - serializer, - ) - } - } - pub use self::CountProjectsResponse400ApplicationProblemPlusJson as ListInvoicesResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListInvoicesResponse403ApplicationProblemPlusJson { - ListInvoicesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListInvoicesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListResourcesInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListResourcesInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListInvoicesResponse403ApplicationProblemPlusJson), + ((usize, u32), ListResourcesInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -118597,56 +112142,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse403ApplicationProblemPlusJson::ListInvoicesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListInvoicesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListResourcesInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -118654,31 +112150,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -118699,7 +112189,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse403ApplicationProblemPlusJson::ListInvoicesResponse403ApplicationProblemPlusJsonVariant2( + ListResourcesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -118717,29 +112207,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -118750,70 +112235,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListResourcesInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ListInvoicesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListResourcesInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListInvoicesResponse403ApplicationProblemPlusJson::ListInvoicesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListInvoicesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListInvoicesResponse403ApplicationProblemPlusJson::ListInvoicesResponse403ApplicationProblemPlusJsonVariant2( + ListResourcesInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListResourcesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -118821,22 +112277,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -118856,57 +112306,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListInvoicesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListResourcesInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListInvoicesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListInvoicesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::ListBillingPlansResponse409ApplicationProblemPlusJson as ListInvoicesResponse409ApplicationProblemPlusJson; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListInvoicesResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListInvoicesResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListInvoicesResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum ListInvoicesResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListInvoicesResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListSharedLineAssignmentsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListSharedLineAssignmentsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListInvoicesResponse500ApplicationProblemPlusJson), + ((usize, u32), ListSharedLineAssignmentsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListSharedLineAssignmentsForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -118919,7 +112407,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -118927,7 +112415,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListSharedLineAssignmentsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -118935,31 +112423,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListSharedLineAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -118980,7 +112509,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse500ApplicationProblemPlusJson::ListInvoicesResponse500ApplicationProblemPlusJsonVariant1( + ListSharedLineAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -118998,24 +112527,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -119026,42 +112570,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsForbiddenProblem", ), ) } } } - impl serde::Serialize for ListInvoicesResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListSharedLineAssignmentsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListInvoicesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListSharedLineAssignmentsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListSharedLineAssignmentsForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListInvoicesResponse500ApplicationProblemPlusJson::ListInvoicesResponse500ApplicationProblemPlusJsonVariant1( + ListSharedLineAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListSharedLineAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -119070,22 +112635,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -119094,6 +112653,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -119105,33 +112680,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListInvoicesResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListInvoicesResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListInvoicesResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListInvoicesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListInvoicesResponse504ApplicationProblemPlusJson { - ListInvoicesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListInvoicesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListSharedLineAssignmentsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListInvoicesResponse504ApplicationProblemPlusJson { + for ListSharedLineAssignmentsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListInvoicesResponse504ApplicationProblemPlusJson), + ((usize, u32), ListSharedLineAssignmentsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -119147,22 +112715,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -119183,7 +112745,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse504ApplicationProblemPlusJson::ListInvoicesResponse504ApplicationProblemPlusJsonVariant0( + ListSharedLineAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -119200,22 +112762,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -119236,7 +112792,7 @@ pub mod types { if replace { selected = Some(( rank, - ListInvoicesResponse504ApplicationProblemPlusJson::ListInvoicesResponse504ApplicationProblemPlusJsonVariant1( + ListSharedLineAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -119280,49 +112836,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListInvoicesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListInvoicesResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListSharedLineAssignmentsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListInvoicesResponse504ApplicationProblemPlusJson::ListInvoicesResponse504ApplicationProblemPlusJsonVariant0( + ListSharedLineAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListInvoicesResponse504ApplicationProblemPlusJson::ListInvoicesResponse504ApplicationProblemPlusJsonVariant1( + ListSharedLineAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -119330,23 +112878,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListInvoicesResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -119365,103 +112905,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListInvoicesResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListInvoicesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListInvoicesResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListNumberAreaCodesResponse200ApplicationJson { - #[serde(rename = "areaCodes")] - pub area_codes: Vec, - #[serde( - rename = "countryCode", - deserialize_with = "const_us_de", - serialize_with = "const_us_ser", - )] - pub country_code: String, - } - impl<'de> serde::Deserialize<'de> for ListNumberAreaCodesResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["areaCodes", "countryCode"])?; - ListNumberAreaCodesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListNumberAreaCodesResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListNumberAreaCodesResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListNumberAreaCodesResponse200ApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum ListNumberAreaCodesResponse403ApplicationProblemPlusJson { - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListSharedLineAssignmentsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListNumberAreaCodesResponse403ApplicationProblemPlusJson { + for ListSharedLineAssignmentsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListNumberAreaCodesResponse403ApplicationProblemPlusJson), + ((usize, u32), ListSharedLineAssignmentsInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -119482,56 +112968,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListSharedLineAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -119539,33 +112976,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -119586,7 +113015,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2( + ListSharedLineAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -119604,29 +113033,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -119637,70 +113061,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListSharedLineAssignmentsInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ListNumberAreaCodesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListSharedLineAssignmentsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0( + ListSharedLineAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberAreaCodesResponse403ApplicationProblemPlusJson::ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2( + ListSharedLineAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -119708,22 +113103,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -119743,57 +113132,92 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberAreaCodesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListNumberAreaCodesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListNumberAreaCodesResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListNumberAreaCodesResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListNumberAreaCodesResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListNumberAreaCodesResponse429ApplicationProblemPlusJson; + pub use self::DeleteVoiceProfileForceInput as ListVoiceProfilesDefaultInput; #[derive(Debug, Clone)] - pub enum ListNumberAreaCodesResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListVoiceProfilesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListNumberAreaCodesResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListVoiceProfilesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListNumberAreaCodesResponse500ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListVoiceProfilesForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListVoiceProfilesForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -119806,7 +113230,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -119814,7 +113238,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListVoiceProfilesForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -119822,33 +113246,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -119869,7 +113285,54 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse500ApplicationProblemPlusJson::ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1( + ListVoiceProfilesForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListVoiceProfilesForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -119887,24 +113350,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -119915,42 +113393,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesForbiddenProblem", ), ) } } } - impl serde::Serialize for ListNumberAreaCodesResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListVoiceProfilesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberAreaCodesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberAreaCodesResponse500ApplicationProblemPlusJson::ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1( + ListVoiceProfilesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListVoiceProfilesForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListVoiceProfilesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListVoiceProfilesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -119959,22 +113458,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -119983,6 +113476,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -119994,33 +113503,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberAreaCodesResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListVoiceProfilesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListNumberAreaCodesResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListNumberAreaCodesResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListNumberAreaCodesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListNumberAreaCodesResponse504ApplicationProblemPlusJson { - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListVoiceProfilesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListNumberAreaCodesResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListVoiceProfilesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListNumberAreaCodesResponse504ApplicationProblemPlusJson), + ((usize, u32), ListVoiceProfilesGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -120036,24 +113537,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -120074,7 +113567,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse504ApplicationProblemPlusJson::ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0( + ListVoiceProfilesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -120091,24 +113584,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -120129,7 +113614,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberAreaCodesResponse504ApplicationProblemPlusJson::ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1( + ListVoiceProfilesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -120173,49 +113658,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberAreaCodesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListNumberAreaCodesResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListVoiceProfilesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberAreaCodesResponse504ApplicationProblemPlusJson::ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberAreaCodesResponse504ApplicationProblemPlusJson::ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListVoiceProfilesGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListVoiceProfilesGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -120223,23 +113700,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -120258,139 +113727,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberAreaCodesResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListVoiceProfilesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListNumberAreaCodesResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListNumberCountriesResponse200ApplicationJson { - #[serde(rename = "countries")] - pub countries: Vec, - } - impl<'de> serde::Deserialize<'de> for ListNumberCountriesResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["countries"])?; - ListNumberCountriesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListNumberCountriesResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListNumberCountriesResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListNumberCountriesResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListNumberCountriesResponse200ApplicationJsoncountriesItem { - #[serde(rename = "callingCode")] - pub calling_code: String, - #[serde(rename = "countryCode")] - pub country_code: String, - #[serde(rename = "displayName")] - pub display_name: String, - } - impl<'de> serde::Deserialize<'de> - for ListNumberCountriesResponse200ApplicationJsoncountriesItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["callingCode", "countryCode", "displayName"])?; - ListNumberCountriesResponse200ApplicationJsoncountriesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListNumberCountriesResponse200ApplicationJsoncountriesItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListNumberCountriesResponse200ApplicationJsoncountriesItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListNumberCountriesResponse200ApplicationJsoncountriesItem::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ListNumberCountriesResponse403ApplicationProblemPlusJson { - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListVoiceProfilesInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListNumberCountriesResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListVoiceProfilesInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListNumberCountriesResponse403ApplicationProblemPlusJson), + ((usize, u32), ListVoiceProfilesInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -120411,56 +113789,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse403ApplicationProblemPlusJson::ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListNumberCountriesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListVoiceProfilesInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -120468,33 +113797,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -120515,7 +113836,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse403ApplicationProblemPlusJson::ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2( + ListVoiceProfilesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -120533,29 +113854,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -120566,70 +113882,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListVoiceProfilesInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ListNumberCountriesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListVoiceProfilesInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberCountriesResponse403ApplicationProblemPlusJson::ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0( + ListVoiceProfilesInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberCountriesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberCountriesResponse403ApplicationProblemPlusJson::ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2( + ListVoiceProfilesInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -120637,22 +113924,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -120672,57 +113953,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberCountriesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListVoiceProfilesInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListNumberCountriesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListNumberCountriesResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListNumberCountriesResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListNumberCountriesResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListNumberCountriesResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListNumberCountriesResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWebhookApiVersionsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListNumberCountriesResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookApiVersionsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListNumberCountriesResponse500ApplicationProblemPlusJson), + ((usize, u32), ListWebhookApiVersionsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWebhookApiVersionsForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -120735,7 +114054,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -120743,7 +114062,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWebhookApiVersionsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -120751,33 +114070,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -120798,7 +114109,54 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse500ApplicationProblemPlusJson::ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1( + ListWebhookApiVersionsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWebhookApiVersionsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -120816,24 +114174,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -120844,42 +114217,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookApiVersionsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookApiVersionsForbiddenProblem", ), ) } } } - impl serde::Serialize for ListNumberCountriesResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookApiVersionsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberCountriesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWebhookApiVersionsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListWebhookApiVersionsForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListWebhookApiVersionsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberCountriesResponse500ApplicationProblemPlusJson::ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1( + ListWebhookApiVersionsForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -120888,22 +114282,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -120912,6 +114300,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -120923,33 +114327,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberCountriesResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookApiVersionsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListNumberCountriesResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListNumberCountriesResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListNumberCountriesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListNumberCountriesResponse504ApplicationProblemPlusJson { - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWebhookApiVersionsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListNumberCountriesResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookApiVersionsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListNumberCountriesResponse504ApplicationProblemPlusJson), + ((usize, u32), ListWebhookApiVersionsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -120965,24 +114361,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -121003,7 +114391,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse504ApplicationProblemPlusJson::ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0( + ListWebhookApiVersionsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -121020,24 +114408,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -121058,7 +114438,7 @@ pub mod types { if replace { selected = Some(( rank, - ListNumberCountriesResponse504ApplicationProblemPlusJson::ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1( + ListWebhookApiVersionsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -121102,49 +114482,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookApiVersionsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListNumberCountriesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookApiVersionsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListNumberCountriesResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookApiVersionsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListNumberCountriesResponse504ApplicationProblemPlusJson::ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0( + ListWebhookApiVersionsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListNumberCountriesResponse504ApplicationProblemPlusJson::ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1( + ListWebhookApiVersionsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -121152,23 +114524,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -121187,73 +114551,79 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListNumberCountriesResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookApiVersionsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListNumberCountriesResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct ListOauthScopesResponse200ApplicationJson { - ///Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. - #[serde(rename = "scopes")] - pub scopes: Vec, - /// Members the schema does not declare, kept as received. - #[serde(flatten)] - pub additional: BTreeMap, + #[serde(remote = "Self")] + pub struct ListWebhookApiVersionsResponse { + #[serde(rename = "apiVersions")] + pub api_versions: Vec, + #[serde( + rename = "contractNamespace", + deserialize_with = "const_photon_hq_contracts_de", + serialize_with = "const_photon_hq_contracts_ser", + )] + pub contract_namespace: String, + #[serde(rename = "packageVersion")] + pub package_version: String, + } + impl<'de> serde::Deserialize<'de> for ListWebhookApiVersionsResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["apiVersions", "contractNamespace", "packageVersion"])?; + ListWebhookApiVersionsResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ListWebhookApiVersionsResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ListWebhookApiVersionsResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ListWebhookApiVersionsResponse::serialize(self, serializer) + } } - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListOauthScopesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListOauthScopesResponse504ApplicationProblemPlusJson { - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum WebhookApiVersion { + SelectableWebhookApiVersion(Box), + DeprecatedWebhookApiVersion(Box), } - impl<'de> serde::Deserialize<'de> - for ListOauthScopesResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for WebhookApiVersion { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListOauthScopesResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), WebhookApiVersion)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(true)) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -121266,7 +114636,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1105u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -121274,39 +114644,25 @@ pub mod types { if replace { selected = Some(( rank, - ListOauthScopesResponse504ApplicationProblemPlusJson::ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), + WebhookApiVersion::SelectableWebhookApiVersion(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(false) + && value.get("status").and_then(serde_json::Value::as_str) + == Some("deprecated")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -121319,7 +114675,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1105u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -121327,9 +114683,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOauthScopesResponse504ApplicationProblemPlusJson::ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1( - inner, - ), + WebhookApiVersion::DeprecatedWebhookApiVersion(inner), )); } } @@ -121345,22 +114699,11 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + if value.get("selectable").and_then(serde_json::Value::as_bool) == Some(true) + || value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(false) + && value.get("status").and_then(serde_json::Value::as_str) + == Some("deprecated") { (match_count, selected) = select(true); } @@ -121371,48 +114714,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListOauthScopesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union WebhookApiVersion", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListOauthScopesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union WebhookApiVersion", ), ) } } } - impl serde::Serialize for ListOauthScopesResponse504ApplicationProblemPlusJson { + impl serde::Serialize for WebhookApiVersion { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListOauthScopesResponse504ApplicationProblemPlusJson::ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListOauthScopesResponse504ApplicationProblemPlusJson::ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + WebhookApiVersion::SelectableWebhookApiVersion(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + WebhookApiVersion::DeprecatedWebhookApiVersion(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -121421,22 +114758,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -121456,27 +114787,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListOauthScopesResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union WebhookApiVersion", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListOauthScopesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListOauthScopesResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListOperationsResponse200ApplicationJson { - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - #[serde(rename = "operations")] - pub operations: Vec, + pub struct SelectableWebhookApiVersion { + #[serde(rename = "retirement")] + pub retirement: Option, + #[serde(rename = "selectable")] + pub selectable: bool, + #[serde(rename = "status")] + pub status: SelectableWebhookApiVersionStatus, + #[serde(rename = "successor")] + pub successor: Option, + #[serde(rename = "version")] + pub version: Date, } - impl<'de> serde::Deserialize<'de> for ListOperationsResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for SelectableWebhookApiVersion { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -121485,155 +114816,166 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["nextPageToken", "operations"])?; - ListOperationsResponse200ApplicationJson::deserialize(value) + >( + &value, + &["retirement", "selectable", "status", "successor", "version"], + )?; + SelectableWebhookApiVersion::deserialize(value) .map_err(serde::de::Error::custom) } else { - ListOperationsResponse200ApplicationJson::deserialize(deserializer) + SelectableWebhookApiVersion::deserialize(deserializer) } } } - impl serde::Serialize for ListOperationsResponse200ApplicationJson { + impl serde::Serialize for SelectableWebhookApiVersion { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListOperationsResponse200ApplicationJson::serialize(self, serializer) + SelectableWebhookApiVersion::serialize(self, serializer) } } - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ListOperationsResponse200ApplicationJsonoperationsItemerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ListOperationsResponse200ApplicationJsonoperationsItemstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ListOperationsResponse200ApplicationJsonoperationsItemtype; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListOperationsResponse200ApplicationJsonoperationsItem { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: ListOperationsResponse200ApplicationJsonoperationsItemstate, - #[serde(rename = "type")] - pub r#type: ListOperationsResponse200ApplicationJsonoperationsItemtype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SelectableWebhookApiVersionStatus { + ///`preview` + Preview, + ///`latest` + Latest, + ///`maintain` + Maintain, + /// A value this version of the client does not know, kept as received. + Unknown(String), } - impl<'de> serde::Deserialize<'de> - for ListOperationsResponse200ApplicationJsonoperationsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - ListOperationsResponse200ApplicationJsonoperationsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListOperationsResponse200ApplicationJsonoperationsItem::deserialize( - deserializer, - ) + impl SelectableWebhookApiVersionStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Preview => "preview", + Self::Latest => "latest", + Self::Maintain => "maintain", + Self::Unknown(value) => value, } } } - impl serde::Serialize for ListOperationsResponse200ApplicationJsonoperationsItem { + impl std::fmt::Display for SelectableWebhookApiVersionStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SelectableWebhookApiVersionStatus { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListOperationsResponse200ApplicationJsonoperationsItem::serialize( - self, - serializer, - ) + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SelectableWebhookApiVersionStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "preview" => Ok(Self::Preview), + "latest" => Ok(Self::Latest), + "maintain" => Ok(Self::Maintain), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `preview`, `latest`, `maintain`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } } } #[derive(Debug, Clone)] - pub enum ListOperationsResponse403ApplicationProblemPlusJson { - ListOperationsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListOperationsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListWebhookDestinationsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListOperationsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookDestinationsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListOperationsResponse403ApplicationProblemPlusJson), + ((usize, u32), ListWebhookDestinationsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWebhookDestinationsForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -121654,7 +114996,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse403ApplicationProblemPlusJson::ListOperationsResponse403ApplicationProblemPlusJsonVariant0( + ListWebhookDestinationsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -121662,27 +115004,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -121695,7 +115035,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -121703,7 +115043,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookDestinationsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -121720,22 +115060,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -121756,7 +115090,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse403ApplicationProblemPlusJson::ListOperationsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookDestinationsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -121789,6 +115123,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -121807,51 +115151,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookDestinationsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookDestinationsForbiddenProblem", ), ) } } } - impl serde::Serialize for ListOperationsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookDestinationsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListOperationsResponse403ApplicationProblemPlusJson::ListOperationsResponse403ApplicationProblemPlusJsonVariant0( + ListWebhookDestinationsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListWebhookDestinationsForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListOperationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookDestinationsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListOperationsResponse403ApplicationProblemPlusJson::ListOperationsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookDestinationsForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -121860,16 +115216,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -121878,23 +115234,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListOperationsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -121913,57 +115261,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListOperationsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookDestinationsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListOperationsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListOperationsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListOperationsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListOperationsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListOperationsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse429ApplicationProblemPlusJson as ListOperationsResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListOperationsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListOperationsResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWebhookDestinationsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListOperationsResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookDestinationsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListOperationsResponse500ApplicationProblemPlusJson), + ((usize, u32), ListWebhookDestinationsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -121976,7 +115317,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -121984,7 +115325,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWebhookDestinationsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -121992,31 +115333,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListOperationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -122037,7 +115372,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse500ApplicationProblemPlusJson::ListOperationsResponse500ApplicationProblemPlusJsonVariant1( + ListWebhookDestinationsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -122056,23 +115391,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -122083,43 +115416,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookDestinationsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookDestinationsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListOperationsResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookDestinationsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListOperationsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWebhookDestinationsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListOperationsResponse500ApplicationProblemPlusJson::ListOperationsResponse500ApplicationProblemPlusJsonVariant1( + ListWebhookDestinationsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -122127,23 +115458,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListOperationsResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -122162,65 +115485,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListOperationsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookDestinationsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListOperationsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListOperationsResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListOperationsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListOperationsResponse504ApplicationProblemPlusJson { - ListOperationsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListOperationsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWebhookEgressAddressesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListOperationsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookEgressAddressesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListOperationsResponse504ApplicationProblemPlusJson), + ((usize, u32), ListWebhookEgressAddressesForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -122240,7 +115547,7 @@ pub mod types { if replace { selected = Some(( rank, - ListOperationsResponse504ApplicationProblemPlusJson::ListOperationsResponse504ApplicationProblemPlusJsonVariant0( + ListWebhookEgressAddressesForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -122248,338 +115555,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListOperationsResponse504ApplicationProblemPlusJson::ListOperationsResponse504ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union ListOperationsResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for ListOperationsResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - ListOperationsResponse504ApplicationProblemPlusJson::ListOperationsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListOperationsResponse504ApplicationProblemPlusJson::ListOperationsResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListOperationsResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListOperationsResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListOperationsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListOperationsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectApiKeysResponse200ApplicationJson { - #[serde(rename = "apiKeys")] - pub api_keys: Vec, - } - impl<'de> serde::Deserialize<'de> for ListProjectApiKeysResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["apiKeys"])?; - ListProjectApiKeysResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListProjectApiKeysResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListProjectApiKeysResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectApiKeysResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectApiKeysResponse200ApplicationJsonapiKeysItem { - #[serde(rename = "apiKeyId")] - pub api_key_id: String, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "createdByAccountId")] - pub created_by_account_id: String, - #[serde(rename = "expiresAt")] - pub expires_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "permissions")] - pub permissions: Vec, - #[serde(rename = "permissionsUpdatedAt")] - pub permissions_updated_at: Option, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "revokedAt")] - pub revoked_at: Option, - } - impl<'de> serde::Deserialize<'de> - for ListProjectApiKeysResponse200ApplicationJsonapiKeysItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiKeyId", - "createdAt", - "createdByAccountId", - "expiresAt", - "name", - "permissions", - "permissionsUpdatedAt", - "projectId", - "revokedAt", - ], - )?; - ListProjectApiKeysResponse200ApplicationJsonapiKeysItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListProjectApiKeysResponse200ApplicationJsonapiKeysItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListProjectApiKeysResponse200ApplicationJsonapiKeysItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectApiKeysResponse200ApplicationJsonapiKeysItem::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ListProjectApiKeysResponse400ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum ListProjectApiKeysResponse403ApplicationProblemPlusJson { - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ListProjectApiKeysResponse403ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListProjectApiKeysResponse403ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -122600,7 +115594,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectApiKeysResponse403ApplicationProblemPlusJson::ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0( + ListWebhookEgressAddressesForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -122608,27 +115602,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -122641,7 +115633,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -122649,7 +115641,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectApiKeysResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEgressAddressesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -122666,24 +115658,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -122704,7 +115688,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectApiKeysResponse403ApplicationProblemPlusJson::ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEgressAddressesForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -122737,6 +115721,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -122755,51 +115749,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectApiKeysResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEgressAddressesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectApiKeysResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEgressAddressesForbiddenProblem", ), ) } } } - impl serde::Serialize for ListProjectApiKeysResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookEgressAddressesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListProjectApiKeysResponse403ApplicationProblemPlusJson::ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0( + ListWebhookEgressAddressesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListWebhookEgressAddressesForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectApiKeysResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEgressAddressesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectApiKeysResponse403ApplicationProblemPlusJson::ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEgressAddressesForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -122808,16 +115814,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -122826,23 +115832,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -122861,63 +115859,20 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListProjectApiKeysResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookEgressAddressesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListProjectApiKeysResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as ListProjectApiKeysResponse404ApplicationProblemPlusJson; - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as ListProjectApiKeysResponse410ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListProjectApiKeysResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListProjectApiKeysResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListProjectApiKeysResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListProjectApiKeysResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListProjectApiKeysResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectPlatformsResponse200ApplicationJson { - #[serde(rename = "platforms")] - pub platforms: Vec, - } - impl<'de> serde::Deserialize<'de> - for ListProjectPlatformsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["platforms"])?; - ListProjectPlatformsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListProjectPlatformsResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListProjectPlatformsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectPlatformsResponse200ApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListProjectPlatformsResponse200ApplicationJsonplatformsItem { - #[serde(rename = "description")] - pub description: String, - #[serde(rename = "displayName")] - pub display_name: String, - #[serde(rename = "type")] - pub r#type: String, + pub struct ListWebhookEgressAddressesResponse { + ///Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. + #[serde(rename = "ipAddresses")] + pub ip_addresses: Vec, } - impl<'de> serde::Deserialize<'de> - for ListProjectPlatformsResponse200ApplicationJsonplatformsItem { + impl<'de> serde::Deserialize<'de> for ListWebhookEgressAddressesResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -122926,51 +115881,38 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["description", "displayName", "type"])?; - ListProjectPlatformsResponse200ApplicationJsonplatformsItem::deserialize( - value, - ) + >(&value, &["ipAddresses"])?; + ListWebhookEgressAddressesResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - ListProjectPlatformsResponse200ApplicationJsonplatformsItem::deserialize( - deserializer, - ) + ListWebhookEgressAddressesResponse::deserialize(deserializer) } } } - impl serde::Serialize - for ListProjectPlatformsResponse200ApplicationJsonplatformsItem { + impl serde::Serialize for ListWebhookEgressAddressesResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListProjectPlatformsResponse200ApplicationJsonplatformsItem::serialize( - self, - serializer, - ) + ListWebhookEgressAddressesResponse::serialize(self, serializer) } } + pub type WebhookEgressAddress = String; #[derive(Debug, Clone)] - pub enum ListProjectPlatformsResponse403ApplicationProblemPlusJson { - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListWebhookEventTypesForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListProjectPlatformsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookEventTypesForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListProjectPlatformsResponse403ApplicationProblemPlusJson), + ((usize, u32), ListWebhookEventTypesForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -122984,25 +115926,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -123022,7 +115954,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectPlatformsResponse403ApplicationProblemPlusJson::ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0( + ListWebhookEventTypesForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -123039,18 +115971,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWebhookEventTypesForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -123063,7 +116040,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -123071,7 +116048,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectPlatformsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEventTypesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -123088,24 +116065,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -123126,7 +116095,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectPlatformsResponse403ApplicationProblemPlusJson::ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEventTypesForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -123159,6 +116128,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -123177,97 +116156,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectPlatformsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectPlatformsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesForbiddenProblem", ), ) } } } - impl serde::Serialize for ListProjectPlatformsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookEventTypesForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListProjectPlatformsResponse403ApplicationProblemPlusJson::ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectPlatformsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEventTypesForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListWebhookEventTypesForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectPlatformsResponse403ApplicationProblemPlusJson::ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEventTypesForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListWebhookEventTypesForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -123276,224 +116221,16 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListProjectPlatformsResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListProjectPlatformsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListProjectPlatformsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListProjectPlatformsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListProjectPlatformsResponse422ApplicationProblemPlusJsonissuesItem; - #[derive(Debug, Clone)] - pub enum ListProjectPlatformsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ListProjectPlatformsResponse500ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListProjectPlatformsResponse500ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListProjectPlatformsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - )) - .then(|| (|| -> Option< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListProjectPlatformsResponse500ApplicationProblemPlusJson::ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectPlatformsResponse500ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectPlatformsResponse500ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for ListProjectPlatformsResponse500ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - ListProjectPlatformsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectPlatformsResponse500ApplicationProblemPlusJson::ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -123502,25 +116239,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -123539,280 +116266,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListProjectPlatformsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookEventTypesForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListProjectPlatformsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListProjectPlatformsResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectsResponse200ApplicationJson { - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - #[serde(rename = "projects")] - pub projects: Vec, - } - impl<'de> serde::Deserialize<'de> for ListProjectsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["nextPageToken", "projects"])?; - ListProjectsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListProjectsResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListProjectsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectsResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectsResponse200ApplicationJsonprojectsItemagentProfile { - #[serde(rename = "avatarUrl")] - pub avatar_url: String, - #[serde(rename = "firstName")] - pub first_name: String, - #[serde(rename = "lastName")] - pub last_name: Option, - } - impl<'de> serde::Deserialize<'de> - for ListProjectsResponse200ApplicationJsonprojectsItemagentProfile { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["avatarUrl", "firstName", "lastName"])?; - ListProjectsResponse200ApplicationJsonprojectsItemagentProfile::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListProjectsResponse200ApplicationJsonprojectsItemagentProfile::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListProjectsResponse200ApplicationJsonprojectsItemagentProfile { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectsResponse200ApplicationJsonprojectsItemagentProfile::serialize( - self, - serializer, - ) - } - } - pub use self::CreateProjectResponse201ApplicationJsonbillingInitialization as ListProjectsResponse200ApplicationJsonprojectsItembillingInitialization; - pub use self::CreateProjectResponse201ApplicationJsoncreatedByActorKind as ListProjectsResponse200ApplicationJsonprojectsItemcreatedByActorKind; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListProjectsResponse200ApplicationJsonprojectsItem { - #[serde(rename = "agentProfile")] - pub agent_profile: ListProjectsResponse200ApplicationJsonprojectsItemagentProfile, - #[serde( - rename = "billingInitialization", - default, - skip_serializing_if = "Option::is_none", - )] - pub billing_initialization: Option< - ListProjectsResponse200ApplicationJsonprojectsItembillingInitialization, - >, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "createdByAccountId")] - pub created_by_account_id: Option, - #[serde(rename = "createdByActorId")] - pub created_by_actor_id: Option, - #[serde(rename = "createdByActorKind")] - pub created_by_actor_kind: Option< - ListProjectsResponse200ApplicationJsonprojectsItemcreatedByActorKind, - >, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "slug")] - pub slug: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for ListProjectsResponse200ApplicationJsonprojectsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "agentProfile", - "billingInitialization", - "createdAt", - "createdByAccountId", - "createdByActorId", - "createdByActorKind", - "deletedAt", - "name", - "organizationId", - "projectId", - "slug", - "updatedAt", - ], - )?; - ListProjectsResponse200ApplicationJsonprojectsItem::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListProjectsResponse200ApplicationJsonprojectsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListProjectsResponse200ApplicationJsonprojectsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListProjectsResponse200ApplicationJsonprojectsItem::serialize( - self, - serializer, - ) - } - } - pub use self::CountProjectsResponse400ApplicationProblemPlusJson as ListProjectsResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListProjectsResponse403ApplicationProblemPlusJson { - ListProjectsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListProjectsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListWebhookEventTypesGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListProjectsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookEventTypesGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListProjectsResponse403ApplicationProblemPlusJson), + ((usize, u32), ListWebhookEventTypesGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListProjectsResponse403ApplicationProblemPlusJson::ListProjectsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -123825,7 +116322,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -123833,7 +116330,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEventTypesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -123841,31 +116338,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -123886,7 +116377,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectsResponse403ApplicationProblemPlusJson::ListProjectsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEventTypesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -123904,29 +116395,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -123937,70 +116421,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListProjectsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookEventTypesGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListProjectsResponse403ApplicationProblemPlusJson::ListProjectsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWebhookEventTypesGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectsResponse403ApplicationProblemPlusJson::ListProjectsResponse403ApplicationProblemPlusJsonVariant2( + ListWebhookEventTypesGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -124008,23 +116463,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListProjectsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -124043,68 +116490,42 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListProjectsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookEventTypesGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListProjectsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListProjectsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListProjectsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListProjectsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListProjectsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListProjectsResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListProjectsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListProjectsResponse504ApplicationProblemPlusJson { - ListProjectsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListProjectsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWebhookEventTypesResponse { + SelectableWebhookEventCatalog(Box), + DeprecatedWebhookEventCatalog(Box), } - impl<'de> serde::Deserialize<'de> - for ListProjectsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ListWebhookEventTypesResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListProjectsResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ListWebhookEventTypesResponse)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("contractNamespace").and_then(serde_json::Value::as_str) + == Some("@photon-hq/contracts") + && value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(true)) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -124117,7 +116538,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1168u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -124125,39 +116546,29 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectsResponse504ApplicationProblemPlusJson::ListProjectsResponse504ApplicationProblemPlusJsonVariant0( + ListWebhookEventTypesResponse::SelectableWebhookEventCatalog( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("contractNamespace").and_then(serde_json::Value::as_str) + == Some("@photon-hq/contracts") + && value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(false) + && value.get("status").and_then(serde_json::Value::as_str) + == Some("deprecated")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -124170,7 +116581,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1168u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -124178,7 +116589,7 @@ pub mod types { if replace { selected = Some(( rank, - ListProjectsResponse504ApplicationProblemPlusJson::ListProjectsResponse504ApplicationProblemPlusJsonVariant1( + ListWebhookEventTypesResponse::DeprecatedWebhookEventCatalog( inner, ), )); @@ -124196,22 +116607,16 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + if value.get("contractNamespace").and_then(serde_json::Value::as_str) + == Some("@photon-hq/contracts") + && value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(true) + || value.get("contractNamespace").and_then(serde_json::Value::as_str) + == Some("@photon-hq/contracts") + && value.get("selectable").and_then(serde_json::Value::as_bool) + == Some(false) + && value.get("status").and_then(serde_json::Value::as_str) + == Some("deprecated") { (match_count, selected) = select(true); } @@ -124222,48 +116627,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesResponse", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListProjectsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWebhookEventTypesResponse", ), ) } } } - impl serde::Serialize for ListProjectsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListWebhookEventTypesResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListProjectsResponse504ApplicationProblemPlusJson::ListProjectsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListProjectsResponse504ApplicationProblemPlusJson::ListProjectsResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListWebhookEventTypesResponse::SelectableWebhookEventCatalog(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ListWebhookEventTypesResponse::DeprecatedWebhookEventCatalog(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -124272,22 +116671,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListProjectsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -124307,76 +116700,37 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListProjectsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWebhookEventTypesResponse", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListProjectsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListProjectsResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListResourcesResponse200ApplicationJson { + pub struct SelectableWebhookEventCatalog { + #[serde(rename = "apiVersion")] + pub api_version: Date, #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", + rename = "contractNamespace", + deserialize_with = "const_photon_hq_contracts_de", + serialize_with = "const_photon_hq_contracts_ser", )] - pub next_page_token: Option, - #[serde(rename = "resources")] - pub resources: Vec, - } - impl<'de> serde::Deserialize<'de> for ListResourcesResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["nextPageToken", "resources"])?; - ListResourcesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListResourcesResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ListResourcesResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListResourcesResponse200ApplicationJson::serialize(self, serializer) - } - } - pub use self::GetOperationResponse200ApplicationJsonresourcestate as ListResourcesResponse200ApplicationJsonresourcesItemstate; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListResourcesResponse200ApplicationJsonresourcesItem { - #[serde(rename = "abilities")] - pub abilities: Vec, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail")] - pub detail: std::collections::BTreeMap, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId")] - pub resource_id: String, - #[serde(rename = "retiredAt", default, skip_serializing_if = "Option::is_none")] - pub retired_at: Option, - #[serde(rename = "state")] - pub state: ListResourcesResponse200ApplicationJsonresourcesItemstate, - #[serde(rename = "type")] - pub r#type: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, + pub contract_namespace: String, + #[serde(rename = "events")] + pub events: Vec, + #[serde(rename = "packageVersion")] + pub package_version: String, + #[serde(rename = "retirement")] + pub retirement: Option, + #[serde(rename = "selectable")] + pub selectable: bool, + #[serde(rename = "status")] + pub status: SelectableWebhookApiVersionStatus, + #[serde(rename = "successor")] + pub successor: Option, } - impl<'de> serde::Deserialize<'de> - for ListResourcesResponse200ApplicationJsonresourcesItem { + impl<'de> serde::Deserialize<'de> for SelectableWebhookEventCatalog { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -124388,58 +116742,47 @@ pub mod types { >( &value, &[ - "abilities", - "createdAt", - "detail", - "projectId", - "resourceId", - "retiredAt", - "state", - "type", - "updatedAt", + "apiVersion", + "contractNamespace", + "events", + "packageVersion", + "retirement", + "selectable", + "status", + "successor", ], )?; - ListResourcesResponse200ApplicationJsonresourcesItem::deserialize(value) + SelectableWebhookEventCatalog::deserialize(value) .map_err(serde::de::Error::custom) } else { - ListResourcesResponse200ApplicationJsonresourcesItem::deserialize( - deserializer, - ) + SelectableWebhookEventCatalog::deserialize(deserializer) } } } - impl serde::Serialize for ListResourcesResponse200ApplicationJsonresourcesItem { + impl serde::Serialize for SelectableWebhookEventCatalog { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListResourcesResponse200ApplicationJsonresourcesItem::serialize( - self, - serializer, - ) + SelectableWebhookEventCatalog::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum ListResourcesResponse403ApplicationProblemPlusJson { - ListResourcesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListResourcesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListWhatsappAccountPhoneNumbersForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListResourcesResponse403ApplicationProblemPlusJson { + for ListWhatsappAccountPhoneNumbersForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListResourcesResponse403ApplicationProblemPlusJson), + ((usize, u32), ListWhatsappAccountPhoneNumbersForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -124453,23 +116796,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -124489,7 +116824,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse403ApplicationProblemPlusJson::ListResourcesResponse403ApplicationProblemPlusJsonVariant0( + ListWhatsappAccountPhoneNumbersForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -124506,18 +116841,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -124530,7 +116863,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -124538,7 +116871,54 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWhatsappAccountPhoneNumbersForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWhatsappAccountPhoneNumbersForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -124555,22 +116935,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -124591,7 +116965,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse403ApplicationProblemPlusJson::ListResourcesResponse403ApplicationProblemPlusJsonVariant2( + ListWhatsappAccountPhoneNumbersForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -124624,6 +116998,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -124642,51 +117026,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersForbiddenProblem", ), ) } } } - impl serde::Serialize for ListResourcesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWhatsappAccountPhoneNumbersForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListResourcesResponse403ApplicationProblemPlusJson::ListResourcesResponse403ApplicationProblemPlusJsonVariant0( + ListWhatsappAccountPhoneNumbersForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListWhatsappAccountPhoneNumbersForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListResourcesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWhatsappAccountPhoneNumbersForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListResourcesResponse403ApplicationProblemPlusJson::ListResourcesResponse403ApplicationProblemPlusJsonVariant2( + ListWhatsappAccountPhoneNumbersForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -124695,16 +117091,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -124713,23 +117109,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListResourcesResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -124748,57 +117136,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListResourcesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListResourcesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListResourcesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ListResourcesResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListResourcesResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListResourcesResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse429ApplicationProblemPlusJson as ListResourcesResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListResourcesResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListResourcesResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListResourcesResponse500ApplicationProblemPlusJson { + for ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListResourcesResponse500ApplicationProblemPlusJson), + ((usize, u32), ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -124811,7 +117193,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -124819,7 +117201,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -124827,31 +117209,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -124872,7 +117248,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse500ApplicationProblemPlusJson::ListResourcesResponse500ApplicationProblemPlusJsonVariant1( + ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -124891,23 +117267,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -124918,43 +117292,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ListResourcesResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListResourcesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListResourcesResponse500ApplicationProblemPlusJson::ListResourcesResponse500ApplicationProblemPlusJsonVariant1( + ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -124962,23 +117334,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListResourcesResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -124997,64 +117361,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListResourcesResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListResourcesResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ListResourcesResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ListResourcesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListResourcesResponse504ApplicationProblemPlusJson { - ListResourcesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListResourcesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWhatsappAccountPhoneNumbersInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListResourcesResponse504ApplicationProblemPlusJson { + for ListWhatsappAccountPhoneNumbersInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListResourcesResponse504ApplicationProblemPlusJson), + ((usize, u32), ListWhatsappAccountPhoneNumbersInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -125075,7 +117424,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse504ApplicationProblemPlusJson::ListResourcesResponse504ApplicationProblemPlusJsonVariant0( + ListWhatsappAccountPhoneNumbersInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -125083,31 +117432,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -125128,7 +117471,7 @@ pub mod types { if replace { selected = Some(( rank, - ListResourcesResponse504ApplicationProblemPlusJson::ListResourcesResponse504ApplicationProblemPlusJsonVariant1( + ListWhatsappAccountPhoneNumbersInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -125147,21 +117490,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -125172,49 +117517,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListResourcesResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ListResourcesResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ListWhatsappAccountPhoneNumbersInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListResourcesResponse504ApplicationProblemPlusJson::ListResourcesResponse504ApplicationProblemPlusJsonVariant0( + ListWhatsappAccountPhoneNumbersInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListResourcesResponse504ApplicationProblemPlusJson::ListResourcesResponse504ApplicationProblemPlusJsonVariant1( + ListWhatsappAccountPhoneNumbersInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -125222,22 +117559,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListResourcesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -125257,30 +117588,21 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListResourcesResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListResourcesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListResourcesResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListSharedLineAssignmentsResponse200ApplicationJson { - #[serde(rename = "assignments")] - pub assignments: Vec< - ListSharedLineAssignmentsResponse200ApplicationJsonassignmentsItem, - >, - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, + pub struct ListWhatsappAccountPhoneNumbersResponse { + #[serde(rename = "phoneNumbers")] + pub phone_numbers: Vec, + #[serde(rename = "wabaId")] + pub waba_id: String, } - impl<'de> serde::Deserialize<'de> - for ListSharedLineAssignmentsResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for ListWhatsappAccountPhoneNumbersResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -125289,53 +117611,132 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["assignments", "nextPageToken"])?; - ListSharedLineAssignmentsResponse200ApplicationJson::deserialize(value) + >(&value, &["phoneNumbers", "wabaId"])?; + ListWhatsappAccountPhoneNumbersResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - ListSharedLineAssignmentsResponse200ApplicationJson::deserialize( - deserializer, - ) + ListWhatsappAccountPhoneNumbersResponse::deserialize(deserializer) } } } - impl serde::Serialize for ListSharedLineAssignmentsResponse200ApplicationJson { + impl serde::Serialize for ListWhatsappAccountPhoneNumbersResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListSharedLineAssignmentsResponse200ApplicationJson::serialize( - self, - serializer, - ) + ListWhatsappAccountPhoneNumbersResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WhatsappAccountPhoneNumber { + #[serde(rename = "displayName")] + pub display_name: Option, + #[serde(rename = "ownership")] + pub ownership: WhatsappPhoneNumberOwnership, + #[serde(rename = "phoneNumber")] + pub phone_number: String, + #[serde(rename = "phoneNumberId")] + pub phone_number_id: String, + } + impl<'de> serde::Deserialize<'de> for WhatsappAccountPhoneNumber { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &["displayName", "ownership", "phoneNumber", "phoneNumberId"], + )?; + WhatsappAccountPhoneNumber::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + WhatsappAccountPhoneNumber::deserialize(deserializer) + } + } + } + impl serde::Serialize for WhatsappAccountPhoneNumber { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WhatsappAccountPhoneNumber::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum WhatsappPhoneNumberOwnership { + ///`photon` + Photon, + ///`meta` + Meta, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl WhatsappPhoneNumberOwnership { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Photon => "photon", + Self::Meta => "meta", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for WhatsappPhoneNumberOwnership { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for WhatsappPhoneNumberOwnership { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for WhatsappPhoneNumberOwnership { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "photon" => Ok(Self::Photon), + "meta" => Ok(Self::Meta), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `photon`, `meta`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } } } - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as ListSharedLineAssignmentsResponse200ApplicationJsonassignmentsItemplatform; - pub use self::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson as ListSharedLineAssignmentsResponse200ApplicationJsonassignmentsItem; #[derive(Debug, Clone)] - pub enum ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson { - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ListWhatsappSharedLineAssignmentsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson { + for ListWhatsappSharedLineAssignmentsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ListWhatsappSharedLineAssignmentsForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -125349,25 +117750,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -125387,7 +117778,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( + ListWhatsappSharedLineAssignmentsForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -125404,18 +117795,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ListWhatsappSharedLineAssignmentsForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -125428,7 +117864,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -125436,7 +117872,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWhatsappSharedLineAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -125453,24 +117889,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -125491,7 +117919,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + ListWhatsappSharedLineAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -125524,6 +117952,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -125542,54 +117980,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ListWhatsappSharedLineAssignmentsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( + ListWhatsappSharedLineAssignmentsForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ListWhatsappSharedLineAssignmentsForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ListWhatsappSharedLineAssignmentsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + ListWhatsappSharedLineAssignmentsForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -125598,16 +118045,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -125616,25 +118063,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -125653,60 +118090,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListSharedLineAssignmentsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListSharedLineAssignmentsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson { + for ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -125719,7 +118147,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -125727,7 +118155,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -125735,33 +118163,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -125782,7 +118202,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -125801,23 +118221,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -125828,44 +118246,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -125873,25 +118288,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -125910,26 +118315,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson { - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ListWhatsappSharedLineAssignmentsInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson { + for ListWhatsappSharedLineAssignmentsInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -125938,7 +118336,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson, + ListWhatsappSharedLineAssignmentsInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -125946,33 +118344,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -125993,7 +118381,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( + ListWhatsappSharedLineAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -126001,33 +118389,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -126048,7 +118428,7 @@ pub mod types { if replace { selected = Some(( rank, - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + ListWhatsappSharedLineAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -126067,21 +118447,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -126092,52 +118474,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson { + for ListWhatsappSharedLineAssignmentsInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( + ListWhatsappSharedLineAssignmentsInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + ListWhatsappSharedLineAssignmentsInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -126145,24 +118517,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -126182,93 +118546,1258 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListVoiceProfilesResponse200ApplicationJson { - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - #[serde(rename = "profiles")] - pub profiles: Vec, + pub struct MessageMetricsQueryColumn { + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "type")] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsQueryColumn { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["name", "type"])?; + MessageMetricsQueryColumn::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsQueryColumn::deserialize(deserializer) + } + } + } + impl serde::Serialize for MessageMetricsQueryColumn { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsQueryColumn::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct MessageMetricsQueryStatistics { + #[serde(rename = "bytesRead")] + pub bytes_read: f64, + #[serde(rename = "elapsedSeconds")] + pub elapsed_seconds: f64, + #[serde(rename = "rowsRead")] + pub rows_read: f64, + } + impl<'de> serde::Deserialize<'de> for MessageMetricsQueryStatistics { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["bytesRead", "elapsedSeconds", "rowsRead"])?; + MessageMetricsQueryStatistics::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + MessageMetricsQueryStatistics::deserialize(deserializer) + } + } + } + impl serde::Serialize for MessageMetricsQueryStatistics { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + MessageMetricsQueryStatistics::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct NotAuthenticatedProblem { + #[serde( + rename = "code", + deserialize_with = "const_not_authenticated_de", + serialize_with = "const_not_authenticated_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_not_authenticated_c12452fc_de", + serialize_with = "const_not_authenticated_c12452fc_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_not_authenticated_de", + serialize_with = "const_https_photon_codes_docs_problems_not_authenticated_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OperationNotCancellableProblem { + #[serde( + rename = "code", + deserialize_with = "const_operation_not_cancellable_de", + serialize_with = "const_operation_not_cancellable_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_operation_not_cancellable_c6a3f0d4_de", + serialize_with = "const_operation_not_cancellable_c6a3f0d4_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_operation_not_cancellable_de", + serialize_with = "const_https_photon_codes_docs_problems_operation_not_cancellable_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OperationNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_operation_not_found_de", + serialize_with = "const_operation_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_operation_not_found_33d81836_de", + serialize_with = "const_operation_not_found_33d81836_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_operation_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_operation_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OperationPage { + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, + #[serde(rename = "operations")] + pub operations: Vec, + } + impl<'de> serde::Deserialize<'de> for OperationPage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["nextPageToken", "operations"])?; + OperationPage::deserialize(value).map_err(serde::de::Error::custom) + } else { + OperationPage::deserialize(deserializer) + } + } + } + impl serde::Serialize for OperationPage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OperationPage::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OrganizationAuthenticationRedirect { + #[serde(rename = "url")] + pub url: String, + } + impl<'de> serde::Deserialize<'de> for OrganizationAuthenticationRedirect { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["url"])?; + OrganizationAuthenticationRedirect::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + OrganizationAuthenticationRedirect::deserialize(deserializer) + } + } + } + impl serde::Serialize for OrganizationAuthenticationRedirect { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OrganizationAuthenticationRedirect::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OrganizationAuthenticationRequest { + #[serde(rename = "returnTo")] + pub return_to: String, + } + impl<'de> serde::Deserialize<'de> for OrganizationAuthenticationRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["returnTo"])?; + OrganizationAuthenticationRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + OrganizationAuthenticationRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for OrganizationAuthenticationRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OrganizationAuthenticationRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationConnectionNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_organization_connection_not_found_de", + serialize_with = "const_organization_connection_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_organization_connection_not_found_acecfb56_de", + serialize_with = "const_organization_connection_not_found_acecfb56_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_organization_connection_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_connection_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationConnectionStatus { + #[serde(rename = "membership")] + pub membership: OrganizationConnectionStatusMembership, + #[serde(rename = "organization")] + pub organization: OrganizationConnectionStatusOrganization, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(rename = "synchronized")] + pub synchronized: bool, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationConnectionStatusMembership { + #[serde(rename = "errorCode")] + pub error_code: Option, + #[serde(rename = "retryAt")] + pub retry_at: Option, + #[serde(rename = "status")] + pub status: OrganizationConnectionSyncStatus, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OrganizationConnectionSyncStatus { + ///`pending` + Pending, + ///`syncing` + Syncing, + ///`ready` + Ready, + ///`error` + Error, + ///`blocked` + Blocked, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OrganizationConnectionSyncStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Pending => "pending", + Self::Syncing => "syncing", + Self::Ready => "ready", + Self::Error => "error", + Self::Blocked => "blocked", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OrganizationConnectionSyncStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OrganizationConnectionSyncStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OrganizationConnectionSyncStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pending" => Ok(Self::Pending), + "syncing" => Ok(Self::Syncing), + "ready" => Ok(Self::Ready), + "error" => Ok(Self::Error), + "blocked" => Ok(Self::Blocked), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `pending`, `syncing`, `ready`, `error`, `blocked`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationConnectionStatusOrganization { + #[serde(rename = "errorCode")] + pub error_code: Option, + #[serde(rename = "status")] + pub status: OrganizationConnectionSyncStatus, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct OrganizationEnterpriseLoginRequest { + #[serde( + rename = "invitationToken", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub invitation_token: Option, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(rename = "returnTo")] + pub return_to: String, + } + impl<'de> serde::Deserialize<'de> for OrganizationEnterpriseLoginRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["invitationToken", "organizationId", "returnTo"])?; + OrganizationEnterpriseLoginRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + OrganizationEnterpriseLoginRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for OrganizationEnterpriseLoginRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + OrganizationEnterpriseLoginRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationSsoConfiguration { + #[serde(rename = "connectionChangedAt")] + pub connection_changed_at: Option, + #[serde(rename = "connectionGeneration")] + pub connection_generation: String, + #[serde(rename = "connectionState")] + pub connection_state: OrganizationSsoConfigurationConnectionState, + #[serde( + rename = "connectionType", + default, + skip_serializing_if = "Option::is_none", + )] + pub connection_type: Option, + #[serde(rename = "desiredSsoEnforced")] + pub desired_sso_enforced: bool, + #[serde(rename = "domains", default, skip_serializing_if = "Option::is_none")] + pub domains: Option>, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(rename = "policySyncStatus")] + pub policy_sync_status: OrganizationSsoConfigurationPolicySyncStatus, + #[serde( + rename = "providerAvailable", + default, + skip_serializing_if = "Option::is_none", + )] + pub provider_available: Option, + #[serde(rename = "ssoEnforced")] + pub sso_enforced: bool, + #[serde(rename = "ssoJitEnabled")] + pub sso_jit_enabled: bool, + #[serde(rename = "version")] + pub version: String, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OrganizationSsoConfigurationConnectionState { + ///`not_configured` + NotConfigured, + ///`configuring` + Configuring, + ///`ready` + Ready, + ///`error` + Error, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OrganizationSsoConfigurationConnectionState { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::NotConfigured => "not_configured", + Self::Configuring => "configuring", + Self::Ready => "ready", + Self::Error => "error", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OrganizationSsoConfigurationConnectionState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OrganizationSsoConfigurationConnectionState { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OrganizationSsoConfigurationConnectionState { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "not_configured" => Ok(Self::NotConfigured), + "configuring" => Ok(Self::Configuring), + "ready" => Ok(Self::Ready), + "error" => Ok(Self::Error), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `not_configured`, `configuring`, `ready`, `error`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationSsoDomain { + #[serde(rename = "domain")] + pub domain: String, + #[serde(rename = "state")] + pub state: OrganizationSsoDomainState, + #[serde(flatten)] + pub additional: BTreeMap, + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OrganizationSsoDomainState { + ///`verified` + Verified, + ///`pending` + Pending, + ///`failed` + Failed, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OrganizationSsoDomainState { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Verified => "verified", + Self::Pending => "pending", + Self::Failed => "failed", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OrganizationSsoDomainState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OrganizationSsoDomainState { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OrganizationSsoDomainState { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "verified" => Ok(Self::Verified), + "pending" => Ok(Self::Pending), + "failed" => Ok(Self::Failed), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `verified`, `pending`, `failed`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum OrganizationSsoConfigurationPolicySyncStatus { + ///`synced` + Synced, + ///`manual_required` + ManualRequired, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl OrganizationSsoConfigurationPolicySyncStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Synced => "synced", + Self::ManualRequired => "manual_required", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for OrganizationSsoConfigurationPolicySyncStatus { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for OrganizationSsoConfigurationPolicySyncStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for OrganizationSsoConfigurationPolicySyncStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "synced" => Ok(Self::Synced), + "manual_required" => Ok(Self::ManualRequired), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `synced`, `manual_required`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationSsoConflictProblem { + #[serde( + rename = "code", + deserialize_with = "const_organization_sso_conflict_de", + serialize_with = "const_organization_sso_conflict_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_organization_sso_conflict_94ef22cc_de", + serialize_with = "const_organization_sso_conflict_94ef22cc_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_conflict_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_sso_conflict_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationSsoNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_organization_sso_not_found_de", + serialize_with = "const_organization_sso_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_organization_sso_not_found_ad0be4c3_de", + serialize_with = "const_organization_sso_not_found_ad0be4c3_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_organization_sso_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_sso_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct OrganizationSyncUnavailableProblem { + #[serde( + rename = "code", + deserialize_with = "const_organization_sync_unavailable_de", + serialize_with = "const_organization_sync_unavailable_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_organization_synchronization_unavailable_de", + serialize_with = "const_organization_synchronization_unavailable_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_organization_sync_unavailable_de", + serialize_with = "const_https_photon_codes_docs_problems_organization_sync_unavailable_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct PayloadTooLargeProblem { + #[serde( + rename = "code", + deserialize_with = "const_payload_too_large_de", + serialize_with = "const_payload_too_large_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_payload_too_large_f6476e55_de", + serialize_with = "const_payload_too_large_f6476e55_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_payload_too_large_de", + serialize_with = "const_https_photon_codes_docs_problems_payload_too_large_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct PhoneVerificationCaptcha { + #[serde(rename = "challengeContext")] + pub challenge_context: String, + #[serde(rename = "token")] + pub token: String, + } + impl<'de> serde::Deserialize<'de> for PhoneVerificationCaptcha { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["challengeContext", "token"])?; + PhoneVerificationCaptcha::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + PhoneVerificationCaptcha::deserialize(deserializer) + } + } + } + impl serde::Serialize for PhoneVerificationCaptcha { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + PhoneVerificationCaptcha::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum ProfilePictureContentType { + #[serde(rename = "image/jpeg")] + ImageJpeg, + #[serde(rename = "image/png")] + ImagePng, + #[serde(rename = "image/webp")] + ImageWebp, + } + impl std::fmt::Display for ProfilePictureContentType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + ProfilePictureContentType::ImageJpeg => "image/jpeg", + ProfilePictureContentType::ImagePng => "image/png", + ProfilePictureContentType::ImageWebp => "image/webp", + }, + ) + } + } + pub use self::AgentProfileAvatarUpload as ProfilePictureUpload; + pub use self::AgentProfileAvatarUploadFormFields as ProfilePictureUploadFormFields; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProfilePictureUploadRequest { + #[serde(rename = "contentType")] + pub content_type: ProfilePictureContentType, + } + impl<'de> serde::Deserialize<'de> for ProfilePictureUploadRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["contentType"])?; + ProfilePictureUploadRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ProfilePictureUploadRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ProfilePictureUploadRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ProfilePictureUploadRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct Project { + #[serde(rename = "agentProfile")] + pub agent_profile: AgentProfile, + #[serde( + rename = "billingInitialization", + default, + skip_serializing_if = "Option::is_none", + )] + pub billing_initialization: Option, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "createdByAccountId")] + pub created_by_account_id: Option, + #[serde(rename = "createdByActorId")] + pub created_by_actor_id: Option, + #[serde(rename = "createdByActorKind")] + pub created_by_actor_kind: Option, + #[serde(rename = "deletedAt")] + pub deleted_at: Option, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "organizationId")] + pub organization_id: String, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "slug")] + pub slug: String, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for Project { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "agentProfile", + "billingInitialization", + "createdAt", + "createdByAccountId", + "createdByActorId", + "createdByActorKind", + "deletedAt", + "name", + "organizationId", + "projectId", + "slug", + "updatedAt", + ], + )?; + Project::deserialize(value).map_err(serde::de::Error::custom) + } else { + Project::deserialize(deserializer) + } + } + } + impl serde::Serialize for Project { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + Project::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum ProjectBillingInitialization { + ///`pending` + Pending, + ///`retry_required` + RetryRequired, + ///`completed` + Completed, + ///`unknown` + Unknown, + /// A value this version of the client does not know, kept as received. + Unknown2(String), + } + impl ProjectBillingInitialization { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Pending => "pending", + Self::RetryRequired => "retry_required", + Self::Completed => "completed", + Self::Unknown => "unknown", + Self::Unknown2(value) => value, + } + } + } + impl std::fmt::Display for ProjectBillingInitialization { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for ProjectBillingInitialization { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for ProjectBillingInitialization { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "pending" => Ok(Self::Pending), + "retry_required" => Ok(Self::RetryRequired), + "completed" => Ok(Self::Completed), + "unknown" => Ok(Self::Unknown), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `pending`, `retry_required`, `completed`, `unknown`", + ), + ) + } + _ => Ok(Self::Unknown2(value)), + } + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum ProjectCreatedByActorKind { + ///`account` + Account, + ///`service_identity` + ServiceIdentity, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl ProjectCreatedByActorKind { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Account => "account", + Self::ServiceIdentity => "service_identity", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for ProjectCreatedByActorKind { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for ProjectCreatedByActorKind { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for ProjectCreatedByActorKind { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "account" => Ok(Self::Account), + "service_identity" => Ok(Self::ServiceIdentity), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `account`, `service_identity`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProjectApiKeyResponse { + #[serde(rename = "apiKey")] + pub api_key: ApiKey, + } + impl<'de> serde::Deserialize<'de> for ProjectApiKeyResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["apiKey"])?; + ProjectApiKeyResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ProjectApiKeyResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ProjectApiKeyResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ProjectApiKeyResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ProjectCount { + #[serde(rename = "count", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub count: i64, } - impl<'de> serde::Deserialize<'de> for ListVoiceProfilesResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for ProjectCount { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["nextPageToken", "profiles"])?; - ListVoiceProfilesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) + super::support::check_known_members::(&value, &["count"])?; + ProjectCount::deserialize(value).map_err(serde::de::Error::custom) } else { - ListVoiceProfilesResponse200ApplicationJson::deserialize(deserializer) + ProjectCount::deserialize(deserializer) } } } - impl serde::Serialize for ListVoiceProfilesResponse200ApplicationJson { + impl serde::Serialize for ProjectCount { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListVoiceProfilesResponse200ApplicationJson::serialize(self, serializer) + ProjectCount::serialize(self, serializer) } } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as ListVoiceProfilesResponse200ApplicationJsonprofilesItemmediaEncryption; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ProjectDeletedProblem { + #[serde( + rename = "code", + deserialize_with = "const_project_deleted_de", + serialize_with = "const_project_deleted_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_project_deleted_07a3e332_de", + serialize_with = "const_project_deleted_07a3e332_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_project_deleted_de", + serialize_with = "const_https_photon_codes_docs_problems_project_deleted_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct ProjectNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_project_not_found_de", + serialize_with = "const_project_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_project_not_found_fc31bf52_de", + serialize_with = "const_project_not_found_fc31bf52_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_project_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_project_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct ListVoiceProfilesResponse200ApplicationJsonprofilesItem { - #[serde(rename = "configuration")] - pub configuration: ListVoiceProfilesResponse200ApplicationJsonprofilesItemconfiguration, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "isDefault")] - pub is_default: bool, - #[serde(rename = "lineCount", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub line_count: i64, - #[serde(rename = "mediaEncryption")] - pub media_encryption: ListVoiceProfilesResponse200ApplicationJsonprofilesItemmediaEncryption, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "profileId")] - pub profile_id: String, - #[serde(rename = "projectId")] - pub project_id: String, + pub struct ProjectPage { #[serde( - rename = "protocol", - deserialize_with = "const_sip_de", - serialize_with = "const_sip_ser", + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", )] - pub protocol: String, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub version: i64, + pub next_page_token: Option, + #[serde(rename = "projects")] + pub projects: Vec, } - impl<'de> serde::Deserialize<'de> - for ListVoiceProfilesResponse200ApplicationJsonprofilesItem { + impl<'de> serde::Deserialize<'de> for ProjectPage { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -126277,145 +119806,49 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &[ - "configuration", - "createdAt", - "isDefault", - "lineCount", - "mediaEncryption", - "name", - "profileId", - "projectId", - "protocol", - "updatedAt", - "version", - ], - )?; - ListVoiceProfilesResponse200ApplicationJsonprofilesItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) + >(&value, &["nextPageToken", "projects"])?; + ProjectPage::deserialize(value).map_err(serde::de::Error::custom) } else { - ListVoiceProfilesResponse200ApplicationJsonprofilesItem::deserialize( - deserializer, - ) + ProjectPage::deserialize(deserializer) } } } - impl serde::Serialize for ListVoiceProfilesResponse200ApplicationJsonprofilesItem { + impl serde::Serialize for ProjectPage { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - ListVoiceProfilesResponse200ApplicationJsonprofilesItem::serialize( - self, - serializer, - ) + ProjectPage::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum ListVoiceProfilesResponse403ApplicationProblemPlusJson { - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ProjectPlatformSettings { + SharedProjectPlatformSettings(Box), + DedicatedProjectPlatformSettings(Box), } - impl<'de> serde::Deserialize<'de> - for ListVoiceProfilesResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ProjectPlatformSettings { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ListVoiceProfilesResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ProjectPlatformSettings)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListVoiceProfilesResponse403ApplicationProblemPlusJson::ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("mode").and_then(serde_json::Value::as_str) + == Some("shared")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -126428,7 +119861,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1042u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -126436,41 +119869,23 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), + ProjectPlatformSettings::SharedProjectPlatformSettings(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-mismatch", - )) - .then(|| (|| -> Option< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + || value.get("mode").and_then(serde_json::Value::as_str) + == Some("dedicated")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -126483,7 +119898,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1021u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -126491,7 +119906,7 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse403ApplicationProblemPlusJson::ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2( + ProjectPlatformSettings::DedicatedProjectPlatformSettings( inner, ), )); @@ -126509,29 +119924,9 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + if value.get("mode").and_then(serde_json::Value::as_str) == Some("shared") + || value.get("mode").and_then(serde_json::Value::as_str) + == Some("dedicated") { (match_count, selected) = select(true); } @@ -126542,69 +119937,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProjectPlatformSettings", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProjectPlatformSettings", ), ) } } } - impl serde::Serialize for ListVoiceProfilesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProjectPlatformSettings { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListVoiceProfilesResponse403ApplicationProblemPlusJson::ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListVoiceProfilesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListVoiceProfilesResponse403ApplicationProblemPlusJson::ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ProjectPlatformSettings::SharedProjectPlatformSettings(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ProjectPlatformSettings::DedicatedProjectPlatformSettings(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -126613,22 +119981,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -126648,57 +120010,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListVoiceProfilesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProjectPlatformSettings", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListVoiceProfilesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListVoiceProfilesResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListVoiceProfilesResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListVoiceProfilesResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListVoiceProfilesResponse429ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SharedProjectPlatformSettings { + #[serde( + rename = "maxUserAssignments", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub max_user_assignments: i64, + #[serde( + rename = "mode", + deserialize_with = "const_shared_de", + serialize_with = "const_shared_ser", + )] + pub mode: String, + } + impl<'de> serde::Deserialize<'de> for SharedProjectPlatformSettings { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["maxUserAssignments", "mode"])?; + SharedProjectPlatformSettings::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SharedProjectPlatformSettings::deserialize(deserializer) + } + } + } + impl serde::Serialize for SharedProjectPlatformSettings { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SharedProjectPlatformSettings::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ListVoiceProfilesResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ProvisionImessageDedicatedLineBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListVoiceProfilesResponse500ApplicationProblemPlusJson { + for ProvisionImessageDedicatedLineBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListVoiceProfilesResponse500ApplicationProblemPlusJson), + ((usize, u32), ProvisionImessageDedicatedLineBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -126711,7 +120107,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -126719,7 +120115,7 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ProvisionImessageDedicatedLineBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -126727,33 +120123,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -126774,7 +120162,7 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse500ApplicationProblemPlusJson::ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1( + ProvisionImessageDedicatedLineBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -126793,22 +120181,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) { (match_count, selected) = select(true); @@ -126820,42 +120210,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineBadRequestProblem", ), ) } } } - impl serde::Serialize for ListVoiceProfilesResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionImessageDedicatedLineBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListVoiceProfilesResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ProvisionImessageDedicatedLineBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListVoiceProfilesResponse500ApplicationProblemPlusJson::ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1( + ProvisionImessageDedicatedLineBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -126864,22 +120254,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -126899,67 +120283,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListVoiceProfilesResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListVoiceProfilesResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListVoiceProfilesResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListVoiceProfilesResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListVoiceProfilesResponse504ApplicationProblemPlusJson { - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ProvisionImessageDedicatedLineForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListVoiceProfilesResponse504ApplicationProblemPlusJson { + for ProvisionImessageDedicatedLineForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListVoiceProfilesResponse504ApplicationProblemPlusJson), + ((usize, u32), ProvisionImessageDedicatedLineForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -126979,7 +120346,7 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse504ApplicationProblemPlusJson::ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0( + ProvisionImessageDedicatedLineForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -126987,33 +120354,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -127034,445 +120393,33 @@ pub mod types { if replace { selected = Some(( rank, - ListVoiceProfilesResponse504ApplicationProblemPlusJson::ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1( + ProvisionImessageDedicatedLineForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse504ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union ListVoiceProfilesResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for ListVoiceProfilesResponse504ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - ListVoiceProfilesResponse504ApplicationProblemPlusJson::ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListVoiceProfilesResponse504ApplicationProblemPlusJson::ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListVoiceProfilesResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListVoiceProfilesResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookApiVersionsResponse200ApplicationJson { - #[serde(rename = "apiVersions")] - pub api_versions: Vec< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem, - >, - #[serde( - rename = "contractNamespace", - deserialize_with = "const_photon_hq_contracts_de", - serialize_with = "const_photon_hq_contracts_ser", - )] - pub contract_namespace: String, - #[serde(rename = "packageVersion")] - pub package_version: String, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["apiVersions", "contractNamespace", "packageVersion"])?; - ListWebhookApiVersionsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListWebhookApiVersionsResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWebhookApiVersionsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookApiVersionsResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement { - #[serde(rename = "migrationGuide")] - pub migration_guide: String, - #[serde(rename = "reason")] - pub reason: String, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["migrationGuide", "reason"])?; - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status { - ///`preview` - Preview, - ///`latest` - Latest, - ///`maintain` - Maintain, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Preview => "preview", - Self::Latest => "latest", - Self::Maintain => "maintain", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "preview" => Ok(Self::Preview), - "latest" => Ok(Self::Latest), - "maintain" => Ok(Self::Maintain), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `preview`, `latest`, `maintain`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0 { - #[serde(rename = "retirement")] - pub retirement: Option< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement, - >, - #[serde(rename = "selectable")] - pub selectable: bool, - #[serde(rename = "status")] - pub status: ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status, - #[serde(rename = "successor")] - pub successor: Option, - #[serde(rename = "version")] - pub version: Date, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["retirement", "selectable", "status", "successor", "version"], - )?; - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement as ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1retirement; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1 { - #[serde(rename = "retirement")] - pub retirement: ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1retirement, - #[serde(rename = "selectable")] - pub selectable: bool, - #[serde( - rename = "status", - deserialize_with = "const_deprecated_de", - serialize_with = "const_deprecated_ser", - )] - pub status: String, - #[serde(rename = "successor")] - pub successor: Option, - #[serde(rename = "version")] - pub version: Date, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["retirement", "selectable", "status", "successor", "version"], - )?; - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone)] - pub enum ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0( - Box, - ), - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(true)) - .then(|| (|| -> Option< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, + Box, >(candidate) .ok() } @@ -127485,7 +120432,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1105u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -127493,35 +120440,33 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0( + ProvisionImessageDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(false) - && value.get("status").and_then(serde_json::Value::as_str) - == Some("deprecated")) - .then(|| (|| -> Option< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, + Box, >(candidate) .ok() } @@ -127534,7 +120479,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1105u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -127542,7 +120487,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1( + ProvisionImessageDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -127560,11 +120505,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("selectable").and_then(serde_json::Value::as_bool) == Some(true) - || value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(false) - && value.get("status").and_then(serde_json::Value::as_str) - == Some("deprecated") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -127575,51 +120548,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem { + impl serde::Serialize for ProvisionImessageDedicatedLineForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0( + ProvisionImessageDedicatedLineForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ProvisionImessageDedicatedLineForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ProvisionImessageDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1( + ProvisionImessageDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0, - >, + Box, >(candidate) .ok() } @@ -127628,24 +120613,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant1, - >, + Box, >(candidate) .ok() } @@ -127654,6 +120631,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -127665,116 +120658,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItem", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineForbiddenProblem", ), ) } } } #[derive(Debug, Clone)] - pub enum ListWebhookApiVersionsResponse403ApplicationProblemPlusJson { - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ProvisionImessageDedicatedLineGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookApiVersionsResponse403ApplicationProblemPlusJson { + for ProvisionImessageDedicatedLineGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionImessageDedicatedLineGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -127787,7 +120715,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -127795,7 +120723,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionImessageDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -127803,33 +120731,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -127850,7 +120770,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -127868,29 +120788,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -127901,73 +120814,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookApiVersionsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookApiVersionsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ListWebhookApiVersionsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionImessageDedicatedLineGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0( + ProvisionImessageDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookApiVersionsResponse403ApplicationProblemPlusJson::ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -127975,25 +120856,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -128012,106 +120883,62 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookApiVersionsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListWebhookApiVersionsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListWebhookApiVersionsResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListWebhookApiVersionsResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookDestinationsResponse200ApplicationJson { - #[serde(rename = "destinations")] - pub destinations: Vec< - ListWebhookDestinationsResponse200ApplicationJsondestinationsItem, - >, - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookDestinationsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["destinations", "nextPageToken"])?; - ListWebhookDestinationsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListWebhookDestinationsResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWebhookDestinationsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookDestinationsResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents { - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant0( - Box>, - ), - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant1( - Box>, - ), + pub enum ProvisionImessageDedicatedLineInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents { + for ProvisionImessageDedicatedLineInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents, - ), + ((usize, u32), ProvisionImessageDedicatedLineInternalServerErrorProblem), >; - let pass = |strict: bool| -> (usize, Selected) { + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 800u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -128119,30 +120946,46 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents::ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant0( + ProvisionImessageDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ), )); } } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -128150,7 +120993,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents::ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant1( + ProvisionImessageDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -128158,52 +121001,79 @@ pub mod types { } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Internal Server Error") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/internal-error") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_AUTH_CONTEXT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(500i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Authentication Context") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) + { + (match_count, selected) = select(true); } - if match_count >= 1 { + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match at least one typed variant of union ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents { + impl serde::Serialize for ProvisionImessageDedicatedLineInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents::ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant0( + ProvisionImessageDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents::ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEventsVariant1( + ProvisionImessageDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -128211,15 +121081,18 @@ pub mod types { { match_count += 1; } - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate).ok() + serde_json::from_value::< + Box, + >(candidate) + .ok() } })() .is_some() @@ -128232,198 +121105,56 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match at least one typed variant of union ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineInternalServerErrorProblem", ), ) } } } - pub use self::CreateWebhookDestinationResponse201ApplicationJsondestinationstatus as ListWebhookDestinationsResponse200ApplicationJsondestinationsItemstatus; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookDestinationsResponse200ApplicationJsondestinationsItem { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "destinationId")] - pub destination_id: String, - #[serde(rename = "enabledEvents")] - pub enabled_events: ListWebhookDestinationsResponse200ApplicationJsondestinationsItemenabledEvents, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "status")] - pub status: ListWebhookDestinationsResponse200ApplicationJsondestinationsItemstatus, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "url")] - pub url: String, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookDestinationsResponse200ApplicationJsondestinationsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url", - ], - )?; - ListWebhookDestinationsResponse200ApplicationJsondestinationsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookDestinationsResponse200ApplicationJsondestinationsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWebhookDestinationsResponse200ApplicationJsondestinationsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookDestinationsResponse200ApplicationJsondestinationsItem::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ListWebhookDestinationsResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWebhookDestinationsResponse403ApplicationProblemPlusJson { - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ProvisionImessageDedicatedLineServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookDestinationsResponse403ApplicationProblemPlusJson { + for ProvisionImessageDedicatedLineServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWebhookDestinationsResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionImessageDedicatedLineServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -128436,7 +121167,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -128444,7 +121175,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionImessageDedicatedLineServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -128452,33 +121183,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -128499,7 +121222,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -128517,29 +121240,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -128550,72 +121268,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookDestinationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookDestinationsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for ListWebhookDestinationsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionImessageDedicatedLineServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionImessageDedicatedLineServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookDestinationsResponse403ApplicationProblemPlusJson::ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -128624,24 +121312,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -128661,159 +121341,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookDestinationsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWebhookDestinationsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListWebhookDestinationsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListWebhookDestinationsResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListWebhookDestinationsResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookEgressAddressesResponse200ApplicationJson { - ///Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. - #[serde(rename = "ipAddresses")] - pub ip_addresses: Vec, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookEgressAddressesResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["ipAddresses"])?; - ListWebhookEgressAddressesResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ListWebhookEgressAddressesResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWebhookEgressAddressesResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookEgressAddressesResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson { - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ProvisionImessageDedicatedLineUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson { + for ProvisionImessageDedicatedLineUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionImessageDedicatedLineUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -128826,7 +121398,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -128834,7 +121406,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionImessageDedicatedLineUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -128842,33 +121414,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -128889,7 +121453,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -128907,29 +121471,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -128940,73 +121499,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionImessageDedicatedLineUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionImessageDedicatedLineUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionImessageDedicatedLineUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson::ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2( + ProvisionImessageDedicatedLineUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -129014,24 +121541,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -129051,53 +121570,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ListWebhookEventTypesResponse200ApplicationJson { - ListWebhookEventTypesResponse200ApplicationJsonVariant0( - Box, - ), - ListWebhookEventTypesResponse200ApplicationJsonVariant1( - Box, - ), + pub enum ProvisionWhatsappDedicatedLineBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse200ApplicationJson { + for ProvisionWhatsappDedicatedLineBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ListWebhookEventTypesResponse200ApplicationJson), + ((usize, u32), ProvisionWhatsappDedicatedLineBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("contractNamespace").and_then(serde_json::Value::as_str) - == Some("@photon-hq/contracts") - && value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(true)) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129110,7 +121627,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1168u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -129118,31 +121635,33 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEventTypesResponse200ApplicationJson::ListWebhookEventTypesResponse200ApplicationJsonVariant0( + ProvisionWhatsappDedicatedLineBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); } } if let Some(inner) = (!keyed - || value.get("contractNamespace").and_then(serde_json::Value::as_str) - == Some("@photon-hq/contracts") - && value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(false) - && value.get("status").and_then(serde_json::Value::as_str) - == Some("deprecated")) - .then(|| (|| -> Option< - Box, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129155,7 +121674,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1168u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -129163,7 +121682,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEventTypesResponse200ApplicationJson::ListWebhookEventTypesResponse200ApplicationJsonVariant1( + ProvisionWhatsappDedicatedLineBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -129181,16 +121700,26 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("contractNamespace").and_then(serde_json::Value::as_str) - == Some("@photon-hq/contracts") - && value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(true) - || value.get("contractNamespace").and_then(serde_json::Value::as_str) - == Some("@photon-hq/contracts") - && value.get("selectable").and_then(serde_json::Value::as_bool) - == Some(false) - && value.get("status").and_then(serde_json::Value::as_str) - == Some("deprecated") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -129201,44 +121730,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEventTypesResponse200ApplicationJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEventTypesResponse200ApplicationJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineBadRequestProblem", ), ) } } } - impl serde::Serialize for ListWebhookEventTypesResponse200ApplicationJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookEventTypesResponse200ApplicationJson::ListWebhookEventTypesResponse200ApplicationJsonVariant0( + ProvisionWhatsappDedicatedLineBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookEventTypesResponse200ApplicationJson::ListWebhookEventTypesResponse200ApplicationJsonVariant1( + ProvisionWhatsappDedicatedLineBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129247,18 +121774,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129278,302 +121803,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookEventTypesResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineBadRequestProblem", ), ) } } } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience { - ///`agent` - Agent, - ///`infrastructure` - Infrastructure, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Agent => "agent", - Self::Infrastructure => "infrastructure", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "agent" => Ok(Self::Agent), - "infrastructure" => Ok(Self::Infrastructure), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `agent`, `infrastructure`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem { - #[serde(rename = "audience")] - pub audience: ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience, - #[serde(rename = "description")] - pub description: String, - #[serde( - rename = "schemaProfile", - deserialize_with = "const_reader_de", - serialize_with = "const_reader_ser", - )] - pub schema_profile: String, - #[serde(rename = "schemaUrl")] - pub schema_url: String, - #[serde(rename = "type")] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["audience", "description", "schemaProfile", "schemaUrl", "type"], - )?; - ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem::serialize( - self, - serializer, - ) - } - } - pub use self::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement as ListWebhookEventTypesResponse200ApplicationJsonVariant0retirement; - pub use self::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0status as ListWebhookEventTypesResponse200ApplicationJsonVariant0status; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookEventTypesResponse200ApplicationJsonVariant0 { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde( - rename = "contractNamespace", - deserialize_with = "const_photon_hq_contracts_de", - serialize_with = "const_photon_hq_contracts_ser", - )] - pub contract_namespace: String, - #[serde(rename = "events")] - pub events: Vec< - ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem, - >, - #[serde(rename = "packageVersion")] - pub package_version: String, - #[serde(rename = "retirement")] - pub retirement: Option< - ListWebhookEventTypesResponse200ApplicationJsonVariant0retirement, - >, - #[serde(rename = "selectable")] - pub selectable: bool, - #[serde(rename = "status")] - pub status: ListWebhookEventTypesResponse200ApplicationJsonVariant0status, - #[serde(rename = "successor")] - pub successor: Option, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "contractNamespace", - "events", - "packageVersion", - "retirement", - "selectable", - "status", - "successor", - ], - )?; - ListWebhookEventTypesResponse200ApplicationJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookEventTypesResponse200ApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWebhookEventTypesResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookEventTypesResponse200ApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItemaudience as ListWebhookEventTypesResponse200ApplicationJsonVariant1eventsItemaudience; - pub use self::ListWebhookEventTypesResponse200ApplicationJsonVariant0eventsItem as ListWebhookEventTypesResponse200ApplicationJsonVariant1eventsItem; - pub use self::ListWebhookApiVersionsResponse200ApplicationJsonapiVersionsItemVariant0retirement as ListWebhookEventTypesResponse200ApplicationJsonVariant1retirement; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWebhookEventTypesResponse200ApplicationJsonVariant1 { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde( - rename = "contractNamespace", - deserialize_with = "const_photon_hq_contracts_de", - serialize_with = "const_photon_hq_contracts_ser", - )] - pub contract_namespace: String, - #[serde(rename = "events")] - pub events: Vec< - ListWebhookEventTypesResponse200ApplicationJsonVariant1eventsItem, - >, - #[serde(rename = "packageVersion")] - pub package_version: String, - #[serde(rename = "retirement")] - pub retirement: ListWebhookEventTypesResponse200ApplicationJsonVariant1retirement, - #[serde(rename = "selectable")] - pub selectable: bool, - #[serde( - rename = "status", - deserialize_with = "const_deprecated_de", - serialize_with = "const_deprecated_ser", - )] - pub status: String, - #[serde(rename = "successor")] - pub successor: Option, - } - impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse200ApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "contractNamespace", - "events", - "packageVersion", - "retirement", - "selectable", - "status", - "successor", - ], - )?; - ListWebhookEventTypesResponse200ApplicationJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWebhookEventTypesResponse200ApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWebhookEventTypesResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWebhookEventTypesResponse200ApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ListWebhookEventTypesResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWebhookEventTypesResponse403ApplicationProblemPlusJson { - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ProvisionWhatsappDedicatedLineForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWebhookEventTypesResponse403ApplicationProblemPlusJson { + for ProvisionWhatsappDedicatedLineForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWebhookEventTypesResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionWhatsappDedicatedLineForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -129587,25 +121838,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -129625,7 +121866,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0( + ProvisionWhatsappDedicatedLineForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -129642,18 +121883,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ProvisionWhatsappDedicatedLineForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129666,7 +121952,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -129674,7 +121960,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionWhatsappDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -129691,24 +121977,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -129729,7 +122007,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -129762,6 +122040,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -129780,54 +122068,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEventTypesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWebhookEventTypesResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListWebhookEventTypesResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0( + ProvisionWhatsappDedicatedLineForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionWhatsappDedicatedLineForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWebhookEventTypesResponse403ApplicationProblemPlusJson::ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ProvisionWhatsappDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -129836,16 +122133,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -129854,25 +122151,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -129891,274 +122178,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWebhookEventTypesResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWebhookEventTypesResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListWebhookEventTypesResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListWebhookEventTypesResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListWebhookEventTypesResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWhatsappAccountPhoneNumbersResponse200ApplicationJson { - #[serde(rename = "phoneNumbers")] - pub phone_numbers: Vec< - ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem, - >, - #[serde(rename = "wabaId")] - pub waba_id: String, - } - impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["phoneNumbers", "wabaId"])?; - ListWhatsappAccountPhoneNumbersResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWhatsappAccountPhoneNumbersResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ListWhatsappAccountPhoneNumbersResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWhatsappAccountPhoneNumbersResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership { - ///`photon` - Photon, - ///`meta` - Meta, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Photon => "photon", - Self::Meta => "meta", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "photon" => Ok(Self::Photon), - "meta" => Ok(Self::Meta), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `photon`, `meta`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem { - #[serde(rename = "displayName")] - pub display_name: Option, - #[serde(rename = "ownership")] - pub ownership: ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItemownership, - #[serde(rename = "phoneNumber")] - pub phone_number: String, - #[serde(rename = "phoneNumberId")] - pub phone_number_id: String, - } - impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &["displayName", "ownership", "phoneNumber", "phoneNumberId"], - )?; - ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonphoneNumbersItem::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson { - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0( - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2( - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ProvisionWhatsappDedicatedLineGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson { + for ProvisionWhatsappDedicatedLineGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionWhatsappDedicatedLineGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -130171,7 +122235,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -130179,7 +122243,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionWhatsappDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -130187,33 +122251,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -130234,7 +122290,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -130252,29 +122308,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -130285,73 +122334,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionWhatsappDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -130359,25 +122376,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -130396,40 +122403,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonVariant0 as ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1( - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ProvisionWhatsappDedicatedLineInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson { + for ProvisionWhatsappDedicatedLineInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionWhatsappDedicatedLineInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -130443,16 +122436,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -130465,7 +122458,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -130473,7 +122466,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ProvisionWhatsappDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -130490,24 +122483,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -130528,7 +122513,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1( + ProvisionWhatsappDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -130574,44 +122559,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ProvisionWhatsappDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1( + ProvisionWhatsappDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -130619,24 +122601,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -130656,73 +122630,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson { - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0( - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1( - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ProvisionWhatsappDedicatedLineServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson { + for ProvisionWhatsappDedicatedLineServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionWhatsappDedicatedLineServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -130743,7 +122695,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0( + ProvisionWhatsappDedicatedLineServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -130751,33 +122703,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -130798,7 +122742,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1( + ProvisionWhatsappDedicatedLineServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -130817,21 +122761,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -130842,51 +122788,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0( + ProvisionWhatsappDedicatedLineServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson::ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1( + ProvisionWhatsappDedicatedLineServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -130895,24 +122832,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -130932,172 +122861,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ListWhatsappSharedLineAssignmentsResponse200ApplicationJson { - #[serde(rename = "assignments")] - pub assignments: Vec< - ListWhatsappSharedLineAssignmentsResponse200ApplicationJsonassignmentsItem, - >, - #[serde( - rename = "nextPageToken", - default, - skip_serializing_if = "Option::is_none", - )] - pub next_page_token: Option, - } - impl<'de> serde::Deserialize<'de> - for ListWhatsappSharedLineAssignmentsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["assignments", "nextPageToken"])?; - ListWhatsappSharedLineAssignmentsResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ListWhatsappSharedLineAssignmentsResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ListWhatsappSharedLineAssignmentsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ListWhatsappSharedLineAssignmentsResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as ListWhatsappSharedLineAssignmentsResponse200ApplicationJsonassignmentsItemplatform; - pub use self::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson as ListWhatsappSharedLineAssignmentsResponse200ApplicationJsonassignmentsItem; #[derive(Debug, Clone)] - pub enum ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson { - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ProvisionWhatsappDedicatedLineUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson { + for ProvisionWhatsappDedicatedLineUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ProvisionWhatsappDedicatedLineUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -131110,7 +122918,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -131118,7 +122926,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ProvisionWhatsappDedicatedLineUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -131126,33 +122934,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -131173,7 +122973,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -131191,29 +122991,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -131224,73 +123019,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ProvisionWhatsappDedicatedLineUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0( + ProvisionWhatsappDedicatedLineUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2( + ProvisionWhatsappDedicatedLineUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -131298,24 +123061,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -131335,62 +123090,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum PurchaseSmsNumberBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), PurchaseSmsNumberBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -131403,7 +123144,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -131411,7 +123152,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + PurchaseSmsNumberBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -131419,33 +123160,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -131466,7 +123199,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -131485,22 +123218,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) { (match_count, selected) = select(true); @@ -131512,43 +123247,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberBadRequestProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + PurchaseSmsNumberBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -131557,24 +123291,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -131594,73 +123320,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson { - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum PurchaseSmsNumberForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), PurchaseSmsNumberForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + PurchaseSmsNumberForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -131681,7 +123425,7 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( + PurchaseSmsNumberForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -131689,33 +123433,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -131736,7 +123472,54 @@ pub mod types { if replace { selected = Some(( rank, - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + PurchaseSmsNumberForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -131754,22 +123537,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -131780,51 +123580,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberForbiddenProblem", ), ) } } } - impl serde::Serialize - for ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + PurchaseSmsNumberForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + PurchaseSmsNumberForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + PurchaseSmsNumberForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -131833,24 +123645,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -131859,6 +123663,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -131870,208 +123690,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PhotonProblemNotAuthenticated401 { - #[serde( - rename = "code", - deserialize_with = "const_not_authenticated_de", - serialize_with = "const_not_authenticated_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_not_authenticated_c12452fc_de", - serialize_with = "const_not_authenticated_c12452fc_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_not_authenticated_de", - serialize_with = "const_https_photon_codes_docs_problems_not_authenticated_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> for PhotonProblemNotAuthenticated401 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "requestId", - "status", - "title", - "type", - ], - )?; - PhotonProblemNotAuthenticated401::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PhotonProblemNotAuthenticated401::deserialize(deserializer) - } - } - } - impl serde::Serialize for PhotonProblemNotAuthenticated401 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PhotonProblemNotAuthenticated401::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PhotonProblemUpstreamUnavailable503 { - #[serde( - rename = "code", - deserialize_with = "const_upstream_unavailable_de", - serialize_with = "const_upstream_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_upstream_service_unavailable_de", - serialize_with = "const_upstream_service_unavailable_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_upstream_unavailable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> for PhotonProblemUpstreamUnavailable503 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "requestId", - "status", - "title", - "type", - ], - )?; - PhotonProblemUpstreamUnavailable503::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PhotonProblemUpstreamUnavailable503::deserialize(deserializer) - } - } - } - impl serde::Serialize for PhotonProblemUpstreamUnavailable503 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PhotonProblemUpstreamUnavailable503::serialize(self, serializer) - } - } - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ProvisionImessageDedicatedLineResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ProvisionImessageDedicatedLineResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ProvisionImessageDedicatedLineResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ProvisionImessageDedicatedLineResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson { - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum PurchaseSmsNumberGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), PurchaseSmsNumberGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -132092,7 +123754,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( + PurchaseSmsNumberGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -132100,33 +123762,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -132147,7 +123801,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -132166,25 +123820,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -132195,52 +123845,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + PurchaseSmsNumberGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + PurchaseSmsNumberGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -132248,25 +123887,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -132285,74 +123914,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonVariant1; - pub use self::ConnectEmailDomainResponse402ApplicationProblemPlusJson as ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson { - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum PurchaseSmsNumberInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), PurchaseSmsNumberInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -132373,7 +123976,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( + PurchaseSmsNumberInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -132381,82 +123984,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -132477,7 +124023,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + PurchaseSmsNumberInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -132495,29 +124041,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -132528,55 +124069,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + PurchaseSmsNumberInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + PurchaseSmsNumberInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -132584,42 +124111,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -132639,73 +124140,92 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct PurchaseSmsNumberRequest { + #[serde( + rename = "areaCode", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub area_code: Option, + #[serde( + rename = "countryCode", + deserialize_with = "const_us_de", + serialize_with = "const_us_ser", + )] + pub country_code: String, + } + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["areaCode", "countryCode"])?; + PurchaseSmsNumberRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + PurchaseSmsNumberRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for PurchaseSmsNumberRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + PurchaseSmsNumberRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson { - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum PurchaseSmsNumberServiceUnavailableProblem { + BillingNotProvisionedProblem(Box), + UpstreamUnavailableProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), PurchaseSmsNumberServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/billing-not-provisioned", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -132718,7 +124238,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -132726,7 +124246,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( + PurchaseSmsNumberServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ), )); @@ -132734,33 +124254,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -132781,7 +124293,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -132800,22 +124312,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("BILLING_NOT_PROVISIONED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Billing Not Provisioned") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/billing-not-provisioned") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-unavailable", ) { (match_count, selected) = select(true); @@ -132827,51 +124339,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( + PurchaseSmsNumberServiceUnavailableProblem::BillingNotProvisionedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -132880,24 +124383,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -132917,61 +124412,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberServiceUnavailableProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum PurchaseSmsNumberUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), PurchaseSmsNumberUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -132984,7 +124468,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -132992,7 +124476,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + PurchaseSmsNumberUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -133000,33 +124484,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133047,7 +124523,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -133066,22 +124542,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -133093,44 +124569,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union PurchaseSmsNumberUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson { + impl serde::Serialize for PurchaseSmsNumberUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + PurchaseSmsNumberUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + PurchaseSmsNumberUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -133138,24 +124611,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133175,72 +124640,129 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union PurchaseSmsNumberUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct QueryConcurrencyLimitProblem { + #[serde( + rename = "code", + deserialize_with = "const_query_concurrency_limit_de", + serialize_with = "const_query_concurrency_limit_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_query_concurrency_limit_9bfa3db6_de", + serialize_with = "const_query_concurrency_limit_9bfa3db6_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_query_concurrency_limit_de", + serialize_with = "const_https_photon_codes_docs_problems_query_concurrency_limit_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson { - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum QueryMessageMetricsForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for QueryMessageMetricsForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), QueryMessageMetricsForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + QueryMessageMetricsForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -133261,7 +124783,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( + QueryMessageMetricsForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -133269,33 +124791,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133316,7 +124830,54 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + QueryMessageMetricsForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -133334,24 +124895,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -133362,51 +124938,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsForbiddenProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson { + impl serde::Serialize for QueryMessageMetricsForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + QueryMessageMetricsForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + QueryMessageMetricsForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + QueryMessageMetricsForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -133415,24 +125003,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133441,6 +125021,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -133452,72 +125048,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union QueryMessageMetricsForbiddenProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson { - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum QueryMessageMetricsGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for QueryMessageMetricsGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), QueryMessageMetricsGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -133538,7 +125112,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + QueryMessageMetricsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -133546,33 +125120,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133593,7 +125159,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -133612,21 +125178,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -133637,52 +125203,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson { + impl serde::Serialize for QueryMessageMetricsGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + QueryMessageMetricsGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -133690,25 +125245,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -133727,76 +125272,85 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union QueryMessageMetricsGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1; - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ProvisionWhatsappDedicatedLineResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ProvisionWhatsappDedicatedLineResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ProvisionWhatsappDedicatedLineResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ProvisionWhatsappDedicatedLineResponse202ApplicationJsontype; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct QueryMessageMetricsResponse { + #[serde(rename = "columns")] + pub columns: Vec, + #[serde(rename = "rows")] + pub rows: Vec>, + #[serde(rename = "statistics")] + pub statistics: MessageMetricsQueryStatistics, + } + impl<'de> serde::Deserialize<'de> for QueryMessageMetricsResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["columns", "rows", "statistics"])?; + QueryMessageMetricsResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + QueryMessageMetricsResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for QueryMessageMetricsResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + QueryMessageMetricsResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson { - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum QueryMessageMetricsUnprocessableEntityProblem { + QueryResourceLimitProblem(Box), + ValidationFailedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for QueryMessageMetricsUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), QueryMessageMetricsUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("QUERY_RESOURCE_LIMIT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Query Resource Limit") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/query-resource-limit", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -133817,7 +125371,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( + QueryMessageMetricsUnprocessableEntityProblem::QueryResourceLimitProblem( inner, ), )); @@ -133825,33 +125379,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -133864,7 +125410,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -133872,7 +125418,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -133891,25 +125437,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("QUERY_RESOURCE_LIMIT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Query Resource Limit") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/query-resource-limit") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/validation-failed") { (match_count, selected) = select(true); } @@ -133920,51 +125462,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union QueryMessageMetricsUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson { + impl serde::Serialize for QueryMessageMetricsUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0( + QueryMessageMetricsUnprocessableEntityProblem::QueryResourceLimitProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1( + QueryMessageMetricsUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -133973,25 +125506,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -134010,123 +125533,127 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union QueryMessageMetricsUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonVariant1; - pub use self::ConnectEmailDomainResponse402ApplicationProblemPlusJson as ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct QueryResourceLimitProblem { + #[serde( + rename = "code", + deserialize_with = "const_query_resource_limit_de", + serialize_with = "const_query_resource_limit_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_query_resource_limit_d7d34c69_de", + serialize_with = "const_query_resource_limit_d7d34c69_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_query_resource_limit_de", + serialize_with = "const_https_photon_codes_docs_problems_query_resource_limit_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct RateLimitedProblem { + #[serde( + rename = "code", + deserialize_with = "const_rate_limited_de", + serialize_with = "const_rate_limited_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_too_many_requests_de", + serialize_with = "const_too_many_requests_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_rate_limited_de", + serialize_with = "const_https_photon_codes_docs_problems_rate_limited_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum RedeemAppInstallationDeliveryGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { + for RedeemAppInstallationDeliveryGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), RedeemAppInstallationDeliveryGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -134139,7 +125666,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -134147,7 +125674,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RedeemAppInstallationDeliveryGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -134155,33 +125682,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -134202,7 +125721,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + RedeemAppInstallationDeliveryGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -134220,29 +125739,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -134253,55 +125765,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RedeemAppInstallationDeliveryGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RedeemAppInstallationDeliveryGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RedeemAppInstallationDeliveryGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RedeemAppInstallationDeliveryGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + RedeemAppInstallationDeliveryGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -134309,43 +125807,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -134364,73 +125834,77 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RedeemAppInstallationDeliveryGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct RedeemAppInstallationDeliveryRequest { + #[serde(rename = "appId")] + pub app_id: String, + #[serde(rename = "clientAssertion")] + pub client_assertion: String, + #[serde(rename = "code")] + pub code: String, + } + impl<'de> serde::Deserialize<'de> for RedeemAppInstallationDeliveryRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["appId", "clientAssertion", "code"])?; + RedeemAppInstallationDeliveryRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + RedeemAppInstallationDeliveryRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for RedeemAppInstallationDeliveryRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + RedeemAppInstallationDeliveryRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson { - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RedeemAppInstallationDeliveryResponse { + CreatedAppInstallationDelivery(Box), + ExistingAppInstallationDelivery(Box), } - impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RedeemAppInstallationDeliveryResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), RedeemAppInstallationDeliveryResponse), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("created")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -134443,7 +125917,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1084u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -134451,41 +125925,23 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( + RedeemAppInstallationDeliveryResponse::CreatedAppInstallationDelivery( inner, ), )); } } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if let Some(inner) = (!keyed) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -134498,7 +125954,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1042u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -134506,7 +125962,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( + RedeemAppInstallationDeliveryResponse::ExistingAppInstallationDelivery( inner, ), )); @@ -134524,24 +125980,7 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + if value.get("status").and_then(serde_json::Value::as_str) == Some("created") { (match_count, selected) = select(true); } @@ -134552,51 +125991,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson { + impl serde::Serialize for RedeemAppInstallationDeliveryResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0( + RedeemAppInstallationDeliveryResponse::CreatedAppInstallationDelivery( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1( + RedeemAppInstallationDeliveryResponse::ExistingAppInstallationDelivery( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -134605,24 +126035,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -134642,61 +126064,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RefreshOrganizationSsoConnectionBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { + for RefreshOrganizationSsoConnectionBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), RefreshOrganizationSsoConnectionBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/invalid-return-to", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -134709,7 +126121,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -134717,7 +126129,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RefreshOrganizationSsoConnectionBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -134725,33 +126137,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -134772,7 +126176,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -134791,23 +126195,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -134818,44 +126220,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionBadRequestProblem", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { + impl serde::Serialize for RefreshOrganizationSsoConnectionBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RefreshOrganizationSsoConnectionBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -134863,25 +126262,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -134900,72 +126289,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson { - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RefreshOrganizationSsoConnectionForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson { + for RefreshOrganizationSsoConnectionForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), RefreshOrganizationSsoConnectionForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RefreshOrganizationSsoConnectionForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -134986,7 +126398,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -134994,33 +126406,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -135041,7 +126445,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -135059,23 +126463,30 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/organization-sso-required", ) { (match_count, selected) = select(true); @@ -135087,51 +126498,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionForbiddenProblem", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson { + impl serde::Serialize for RefreshOrganizationSsoConnectionForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RefreshOrganizationSsoConnectionForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -135140,24 +126560,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -135177,72 +126589,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionForbiddenProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RefreshOrganizationSsoConnectionGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { + for RefreshOrganizationSsoConnectionGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), RefreshOrganizationSsoConnectionGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -135263,7 +126654,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -135271,33 +126662,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -135318,7 +126701,7 @@ pub mod types { if replace { selected = Some(( rank, - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -135337,21 +126720,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -135362,52 +126745,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RefreshOrganizationSsoConnectionGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -135415,25 +126787,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -135452,217 +126814,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PurchaseSmsNumberRequestApplicationJson { - #[serde( - rename = "areaCode", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub area_code: Option, - #[serde( - rename = "countryCode", - deserialize_with = "const_us_de", - serialize_with = "const_us_ser", - )] - pub country_code: String, - } - impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["areaCode", "countryCode"])?; - PurchaseSmsNumberRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PurchaseSmsNumberRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for PurchaseSmsNumberRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PurchaseSmsNumberRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PurchaseSmsNumberResponse202ApplicationJson { - #[serde(rename = "cancellable")] - pub cancellable: bool, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option>, - #[serde(rename = "endedAt", default, skip_serializing_if = "Option::is_none")] - pub ended_at: Option, - #[serde(rename = "error", default, skip_serializing_if = "Option::is_none")] - pub error: Option, - #[serde(rename = "operationId")] - pub operation_id: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")] - pub resource_id: Option, - #[serde(rename = "resourceType")] - pub resource_type: String, - #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")] - pub started_at: Option, - #[serde(rename = "state")] - pub state: PurchaseSmsNumberResponse202ApplicationJsonstate, - #[serde(rename = "type")] - pub r#type: PurchaseSmsNumberResponse202ApplicationJsontype, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - } - impl<'de> serde::Deserialize<'de> for PurchaseSmsNumberResponse202ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "cancellable", - "createdAt", - "detail", - "endedAt", - "error", - "operationId", - "projectId", - "resourceId", - "resourceType", - "startedAt", - "state", - "type", - "updatedAt", - ], - )?; - PurchaseSmsNumberResponse202ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PurchaseSmsNumberResponse202ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for PurchaseSmsNumberResponse202ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PurchaseSmsNumberResponse202ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct PurchaseSmsNumberResponse202ApplicationJsonerror { - #[serde(rename = "code")] - pub code: String, - #[serde(rename = "detail")] - pub detail: String, - } - impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse202ApplicationJsonerror { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["code", "detail"])?; - PurchaseSmsNumberResponse202ApplicationJsonerror::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - PurchaseSmsNumberResponse202ApplicationJsonerror::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for PurchaseSmsNumberResponse202ApplicationJsonerror { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - PurchaseSmsNumberResponse202ApplicationJsonerror::serialize(self, serializer) - } - } - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as PurchaseSmsNumberResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as PurchaseSmsNumberResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse400ApplicationProblemPlusJson { - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RefreshOrganizationSsoConnectionInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse400ApplicationProblemPlusJson { + for RefreshOrganizationSsoConnectionInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse400ApplicationProblemPlusJson), + ( + (usize, u32), + RefreshOrganizationSsoConnectionInternalServerErrorProblem, + ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -135683,7 +126880,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse400ApplicationProblemPlusJson::PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -135691,33 +126888,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -135738,7 +126927,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse400ApplicationProblemPlusJson::PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -135757,24 +126946,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -135786,49 +126973,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse400ApplicationProblemPlusJson { + impl serde::Serialize + for RefreshOrganizationSsoConnectionInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse400ApplicationProblemPlusJson::PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0( + RefreshOrganizationSsoConnectionInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse400ApplicationProblemPlusJson::PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1( + RefreshOrganizationSsoConnectionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -135836,22 +127016,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -135871,116 +127045,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as PurchaseSmsNumberResponse400ApplicationProblemPlusJsonVariant1; - pub use self::ConnectEmailDomainResponse402ApplicationProblemPlusJson as PurchaseSmsNumberResponse402ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse403ApplicationProblemPlusJson { - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2( - Box, + pub enum RefreshOrganizationSsoConnectionPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse403ApplicationProblemPlusJson { + for RefreshOrganizationSsoConnectionPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse403ApplicationProblemPlusJson), + ((usize, u32), RefreshOrganizationSsoConnectionPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -135993,7 +127106,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -136001,7 +127114,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RefreshOrganizationSsoConnectionPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -136009,33 +127122,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -136056,7 +127161,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2( + RefreshOrganizationSsoConnectionPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -136074,29 +127179,26 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -136107,51 +127209,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionPreconditionFailedProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RefreshOrganizationSsoConnectionPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RefreshOrganizationSsoConnectionPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse403ApplicationProblemPlusJson::PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2( + RefreshOrganizationSsoConnectionPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -136160,40 +127253,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -136213,66 +127282,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as PurchaseSmsNumberResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as PurchaseSmsNumberResponse409ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse422ApplicationProblemPlusJson { - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseImessageDedicatedLineForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseImessageDedicatedLineForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse422ApplicationProblemPlusJson), + ((usize, u32), ReleaseImessageDedicatedLineForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseImessageDedicatedLineForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -136285,7 +127383,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -136293,7 +127391,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse422ApplicationProblemPlusJson::PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0( + ReleaseImessageDedicatedLineForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -136301,33 +127399,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -136348,7 +127438,54 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse422ApplicationProblemPlusJson::PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseImessageDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -136366,24 +127503,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -136394,48 +127546,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineForbiddenProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseImessageDedicatedLineForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse422ApplicationProblemPlusJson::PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0( + ReleaseImessageDedicatedLineForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseImessageDedicatedLineForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseImessageDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse422ApplicationProblemPlusJson::PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -136444,22 +127611,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -136468,6 +127629,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -136479,56 +127656,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineForbiddenProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as PurchaseSmsNumberResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as PurchaseSmsNumberResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseImessageDedicatedLineGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse500ApplicationProblemPlusJson { + for ReleaseImessageDedicatedLineGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse500ApplicationProblemPlusJson), + ((usize, u32), ReleaseImessageDedicatedLineGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -136541,7 +127713,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -136549,7 +127721,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseImessageDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -136557,33 +127729,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -136604,7 +127768,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse500ApplicationProblemPlusJson::PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -136623,23 +127787,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -136650,43 +127812,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseImessageDedicatedLineGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseImessageDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse500ApplicationProblemPlusJson::PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -136694,23 +127854,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -136729,65 +127881,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as PurchaseSmsNumberResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as PurchaseSmsNumberResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse503ApplicationProblemPlusJson { - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseImessageDedicatedLineInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse503ApplicationProblemPlusJson { + for ReleaseImessageDedicatedLineInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse503ApplicationProblemPlusJson), + ((usize, u32), ReleaseImessageDedicatedLineInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/billing-not-provisioned", - )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -136808,7 +127944,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse503ApplicationProblemPlusJson::PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0( + ReleaseImessageDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -136816,33 +127952,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -136863,7 +127991,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse503ApplicationProblemPlusJson::PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -136882,22 +128010,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("BILLING_NOT_PROVISIONED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Billing Not Provisioned") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/billing-not-provisioned") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -136909,49 +128037,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseImessageDedicatedLineInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse503ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseImessageDedicatedLineInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse503ApplicationProblemPlusJson::PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0( + ReleaseImessageDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse503ApplicationProblemPlusJson::PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1( + ReleaseImessageDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -136959,22 +128079,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -136994,65 +128108,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineInternalServerErrorProblem", ), ) } } } - pub use self::ConnectEmailDomainResponse503ApplicationProblemPlusJsonVariant0 as PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as PurchaseSmsNumberResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum PurchaseSmsNumberResponse504ApplicationProblemPlusJson { - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseResourceConflictProblem { + WhatsappSenderConnectedProblem(Box), + WhatsappSenderProvisioningProblem(Box), } - impl<'de> serde::Deserialize<'de> - for PurchaseSmsNumberResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseResourceConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), PurchaseSmsNumberResponse504ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ReleaseResourceConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("WHATSAPP_SENDER_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("WhatsApp Sender Connected") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/whatsapp-sender-connected", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -137073,7 +128170,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse504ApplicationProblemPlusJson::PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0( + ReleaseResourceConflictProblem::WhatsappSenderConnectedProblem( inner, ), )); @@ -137081,33 +128178,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("WHATSAPP_SENDER_PROVISIONING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("WhatsApp Sender Provisioning") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/whatsapp-sender-provisioning", )) - .then(|| (|| -> Option< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -137128,7 +128217,7 @@ pub mod types { if replace { selected = Some(( rank, - PurchaseSmsNumberResponse504ApplicationProblemPlusJson::PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1( + ReleaseResourceConflictProblem::WhatsappSenderProvisioningProblem( inner, ), )); @@ -137147,21 +128236,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("WHATSAPP_SENDER_CONNECTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("WhatsApp Sender Connected") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-connected", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("WHATSAPP_SENDER_PROVISIONING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("WhatsApp Sender Provisioning") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/whatsapp-sender-provisioning", + ) { (match_count, selected) = select(true); } @@ -137172,48 +128265,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union PurchaseSmsNumberResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceConflictProblem", ), ) } } } - impl serde::Serialize for PurchaseSmsNumberResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseResourceConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - PurchaseSmsNumberResponse504ApplicationProblemPlusJson::PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - PurchaseSmsNumberResponse504ApplicationProblemPlusJson::PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1( + ReleaseResourceConflictProblem::WhatsappSenderConnectedProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseResourceConflictProblem::WhatsappSenderProvisioningProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -137222,22 +128309,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -137257,156 +128338,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union PurchaseSmsNumberResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseResourceConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as PurchaseSmsNumberResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct QueryMessageMetricsResponse200ApplicationJson { - #[serde(rename = "columns")] - pub columns: Vec, - #[serde(rename = "rows")] - pub rows: Vec>, - #[serde(rename = "statistics")] - pub statistics: QueryMessageMetricsResponse200ApplicationJsonstatistics, - } - impl<'de> serde::Deserialize<'de> for QueryMessageMetricsResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["columns", "rows", "statistics"])?; - QueryMessageMetricsResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - QueryMessageMetricsResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for QueryMessageMetricsResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - QueryMessageMetricsResponse200ApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct QueryMessageMetricsResponse200ApplicationJsoncolumnsItem { - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "type")] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse200ApplicationJsoncolumnsItem { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["name", "type"])?; - QueryMessageMetricsResponse200ApplicationJsoncolumnsItem::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - QueryMessageMetricsResponse200ApplicationJsoncolumnsItem::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for QueryMessageMetricsResponse200ApplicationJsoncolumnsItem { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - QueryMessageMetricsResponse200ApplicationJsoncolumnsItem::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct QueryMessageMetricsResponse200ApplicationJsonstatistics { - #[serde(rename = "bytesRead")] - pub bytes_read: f64, - #[serde(rename = "elapsedSeconds")] - pub elapsed_seconds: f64, - #[serde(rename = "rowsRead")] - pub rows_read: f64, - } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse200ApplicationJsonstatistics { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["bytesRead", "elapsedSeconds", "rowsRead"])?; - QueryMessageMetricsResponse200ApplicationJsonstatistics::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - QueryMessageMetricsResponse200ApplicationJsonstatistics::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for QueryMessageMetricsResponse200ApplicationJsonstatistics { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - QueryMessageMetricsResponse200ApplicationJsonstatistics::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as QueryMessageMetricsResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum QueryMessageMetricsResponse403ApplicationProblemPlusJson { - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ReleaseResourceForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseResourceForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), QueryMessageMetricsResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ReleaseResourceForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -137419,24 +128370,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseResourceForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -137457,7 +128443,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse403ApplicationProblemPlusJson::QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0( + ReleaseResourceForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -137465,27 +128451,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -137498,7 +128482,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -137506,7 +128490,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReleaseResourceForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -137523,24 +128507,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -137561,7 +128537,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse403ApplicationProblemPlusJson::QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2( + ReleaseResourceForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -137594,6 +128570,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -137612,51 +128598,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceForbiddenProblem", ), ) } } } - impl serde::Serialize for QueryMessageMetricsResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseResourceForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - QueryMessageMetricsResponse403ApplicationProblemPlusJson::QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - QueryMessageMetricsResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - QueryMessageMetricsResponse403ApplicationProblemPlusJson::QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2( + ReleaseResourceForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseResourceForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseResourceForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseResourceForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -137665,16 +128663,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -137683,23 +128681,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -137718,65 +128708,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union QueryMessageMetricsResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseResourceForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as QueryMessageMetricsResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum QueryMessageMetricsResponse422ApplicationProblemPlusJson { - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseResourceGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseResourceGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), QueryMessageMetricsResponse422ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), ReleaseResourceGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("QUERY_RESOURCE_LIMIT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Query Resource Limit") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/query-resource-limit", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -137797,7 +128770,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse422ApplicationProblemPlusJson::QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0( + ReleaseResourceGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -137805,33 +128778,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -137844,7 +128809,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -137852,7 +128817,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse422ApplicationProblemPlusJson::QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1( + ReleaseResourceGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -137871,21 +128836,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("QUERY_RESOURCE_LIMIT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Query Resource Limit") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/query-resource-limit") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -137896,49 +128861,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for QueryMessageMetricsResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseResourceGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - QueryMessageMetricsResponse422ApplicationProblemPlusJson::QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - QueryMessageMetricsResponse422ApplicationProblemPlusJson::QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseResourceGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseResourceGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -137946,23 +128903,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -137981,151 +128930,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union QueryMessageMetricsResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseResourceGatewayTimeoutProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_query_resource_limit_de", - serialize_with = "const_query_resource_limit_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_query_resource_limit_d7d34c69_de", - serialize_with = "const_query_resource_limit_d7d34c69_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_query_resource_limit_de", - serialize_with = "const_https_photon_codes_docs_problems_query_resource_limit_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as QueryMessageMetricsResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as QueryMessageMetricsResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as QueryMessageMetricsResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum QueryMessageMetricsResponse504ApplicationProblemPlusJson { - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReleaseResourceInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for QueryMessageMetricsResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseResourceInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), QueryMessageMetricsResponse504ApplicationProblemPlusJson), + ((usize, u32), ReleaseResourceInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -138146,7 +128992,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse504ApplicationProblemPlusJson::QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0( + ReleaseResourceInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -138154,33 +129000,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -138201,7 +129039,7 @@ pub mod types { if replace { selected = Some(( rank, - QueryMessageMetricsResponse504ApplicationProblemPlusJson::QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1( + ReleaseResourceInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -138220,21 +129058,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -138245,49 +129085,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union QueryMessageMetricsResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseResourceInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for QueryMessageMetricsResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseResourceInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - QueryMessageMetricsResponse504ApplicationProblemPlusJson::QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0( + ReleaseResourceInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - QueryMessageMetricsResponse504ApplicationProblemPlusJson::QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1( + ReleaseResourceInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -138295,22 +129127,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -138330,98 +129156,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union QueryMessageMetricsResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseResourceInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as QueryMessageMetricsResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RedeemAppInstallationDeliveryRequestApplicationJson { - #[serde(rename = "appId")] - pub app_id: String, - #[serde(rename = "clientAssertion")] - pub client_assertion: String, - #[serde(rename = "code")] - pub code: String, - } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["appId", "clientAssertion", "code"])?; - RedeemAppInstallationDeliveryRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - RedeemAppInstallationDeliveryRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for RedeemAppInstallationDeliveryRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RedeemAppInstallationDeliveryRequestApplicationJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum RedeemAppInstallationDeliveryResponse200ApplicationJson { - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0( - Box, - ), - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1( - Box, - ), + pub enum ReleaseSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for ReleaseSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), RedeemAppInstallationDeliveryResponse200ApplicationJson), + ((usize, u32), ReleaseSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("status").and_then(serde_json::Value::as_str) - == Some("created")) - .then(|| (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0, - >, - > { + || value.get("code").and_then(serde_json::Value::as_str) + == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -138434,7 +129257,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1084u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -138442,31 +129265,33 @@ pub mod types { if replace { selected = Some(( rank, - RedeemAppInstallationDeliveryResponse200ApplicationJson::RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0( + ReleaseSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - if let Some(inner) = (!keyed) - .then(|| (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1, - >, - > { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -138479,7 +129304,54 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1042u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -138487,7 +129359,7 @@ pub mod types { if replace { selected = Some(( rank, - RedeemAppInstallationDeliveryResponse200ApplicationJson::RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1( + ReleaseSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -138505,7 +129377,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("status").and_then(serde_json::Value::as_str) == Some("created") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -138516,48 +129420,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse200ApplicationJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse200ApplicationJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize for RedeemAppInstallationDeliveryResponse200ApplicationJson { + impl serde::Serialize for ReleaseSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RedeemAppInstallationDeliveryResponse200ApplicationJson::RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0( + ReleaseSharedLineAssignmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RedeemAppInstallationDeliveryResponse200ApplicationJson::RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1( + ReleaseSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -138566,22 +129485,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -138590,6 +129503,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -138601,317 +129530,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse200ApplicationJson", + "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentForbiddenProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0 { - #[serde(rename = "clientId")] - pub client_id: String, - #[serde(rename = "clientSecret")] - pub client_secret: String, - #[serde(rename = "installationId")] - pub installation_id: String, - #[serde( - rename = "status", - deserialize_with = "const_created_de", - serialize_with = "const_created_ser", - )] - pub status: String, - } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["clientId", "clientSecret", "installationId", "status"])?; - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status { - ///`delivery_consumed` - DeliveryConsumed, - ///`recovery_required` - RecoveryRequired, - ///`revocation_pending` - RevocationPending, - ///`revoked` - Revoked, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::DeliveryConsumed => "delivery_consumed", - Self::RecoveryRequired => "recovery_required", - Self::RevocationPending => "revocation_pending", - Self::Revoked => "revoked", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "delivery_consumed" => Ok(Self::DeliveryConsumed), - "recovery_required" => Ok(Self::RecoveryRequired), - "revocation_pending" => Ok(Self::RevocationPending), - "revoked" => Ok(Self::Revoked), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `delivery_consumed`, `recovery_required`, `revocation_pending`, `revoked`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1 { - #[serde(rename = "installationId")] - pub installation_id: String, - #[serde(rename = "status")] - pub status: RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1status, - } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["installationId", "status"])?; - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RedeemAppInstallationDeliveryResponse200ApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson; - pub use self::CreateAppInstallationRequestResponse401ApplicationProblemPlusJson as RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_app_installation_delivery_unavailable_de", - serialize_with = "const_app_installation_delivery_unavailable_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_installation_delivery_unavailable_de", - serialize_with = "const_installation_delivery_unavailable_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_app_installation_delivery_unavailable_de", - serialize_with = "const_https_photon_codes_docs_problems_app_installation_delivery_unavailable_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson { - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0( - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1( - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson { + for ReleaseSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -138932,7 +129595,7 @@ pub mod types { if replace { selected = Some(( rank, - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson::RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0( + ReleaseSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -138940,33 +129603,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -138987,7 +129642,7 @@ pub mod types { if replace { selected = Some(( rank, - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson::RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1( + ReleaseSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -139006,21 +129661,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -139031,52 +129686,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson::RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0( + ReleaseSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson::RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1( + ReleaseSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -139084,25 +129728,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -139121,77 +129755,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonVariant1; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJson as RefreshOrganizationSsoConnectionResponse200ApplicationJson; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState as RefreshOrganizationSsoConnectionResponse200ApplicationJsonconnectionState; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate as RefreshOrganizationSsoConnectionResponse200ApplicationJsondomainsItemstate; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItem as RefreshOrganizationSsoConnectionResponse200ApplicationJsondomainsItem; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus as RefreshOrganizationSsoConnectionResponse200ApplicationJsonpolicySyncStatus; #[derive(Debug, Clone)] - pub enum RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson { - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0( - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1( - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson { + for ReleaseSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseSharedLineAssignmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-return-to", - )) - .then(|| (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -139212,7 +129818,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0( + ReleaseSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -139220,33 +129826,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -139267,7 +129865,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1( + ReleaseSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -139286,21 +129884,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -139311,52 +129911,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0( + ReleaseSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1( + ReleaseSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -139364,24 +129953,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -139401,33 +129982,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum ReleaseWhatsappDedicatedLineForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReleaseWhatsappDedicatedLineForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseWhatsappDedicatedLineForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -139441,17 +130016,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -139463,7 +130036,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -139471,7 +130044,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + ReleaseWhatsappDedicatedLineForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -139488,18 +130061,110 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseWhatsappDedicatedLineForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseWhatsappDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -139512,7 +130177,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -139520,7 +130185,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReleaseWhatsappDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -139553,6 +130218,24 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -139563,43 +130246,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineForbiddenProblem", ), ) } } } - impl serde::Serialize - for RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseWhatsappDedicatedLineForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + ReleaseWhatsappDedicatedLineForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReleaseWhatsappDedicatedLineForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseWhatsappDedicatedLineForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReleaseWhatsappDedicatedLineForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -139608,16 +130311,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -139626,6 +130329,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -139637,62 +130356,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1( - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseWhatsappDedicatedLineGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson { + for ReleaseWhatsappDedicatedLineGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseWhatsappDedicatedLineGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -139705,7 +130413,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -139713,7 +130421,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseWhatsappDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -139721,33 +130429,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -139768,7 +130468,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -139787,23 +130487,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -139814,44 +130512,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseWhatsappDedicatedLineGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseWhatsappDedicatedLineGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappDedicatedLineGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -139859,25 +130554,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -139896,73 +130581,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson { - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0( - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1( - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseWhatsappDedicatedLineInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson { + for ReleaseWhatsappDedicatedLineInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseWhatsappDedicatedLineInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -139983,7 +130644,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -139991,33 +130652,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -140038,7 +130691,7 @@ pub mod types { if replace { selected = Some(( rank, - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -140057,21 +130710,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -140082,52 +130737,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseWhatsappDedicatedLineInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappDedicatedLineInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson::RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappDedicatedLineInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -140135,24 +130779,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -140172,50 +130808,28 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonVariant1; - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ReleaseImessageDedicatedLineResponse200ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ReleaseImessageDedicatedLineResponse200ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseImessageDedicatedLineResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseImessageDedicatedLineResponse200ApplicationJsontype; - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ReleaseImessageDedicatedLineResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ReleaseImessageDedicatedLineResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseImessageDedicatedLineResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseImessageDedicatedLineResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson { - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ReleaseWhatsappSharedLineAssignmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson { + for ReleaseWhatsappSharedLineAssignmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseWhatsappSharedLineAssignmentForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -140229,25 +130843,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -140267,7 +130871,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -140284,18 +130888,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -140308,7 +130910,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -140316,7 +130918,54 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -140333,24 +130982,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -140371,7 +131012,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -140404,6 +131045,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -140422,54 +131073,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - impl serde::Serialize - for ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseWhatsappSharedLineAssignmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + ReleaseWhatsappSharedLineAssignmentForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -140478,16 +131138,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -140496,25 +131156,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -140533,63 +131183,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson { + for ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -140602,7 +131240,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -140610,7 +131248,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -140618,33 +131256,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -140665,7 +131295,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -140684,23 +131314,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -140711,44 +131339,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -140756,25 +131381,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -140793,30 +131408,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson { - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson { + for ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -140825,7 +131429,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson, + ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -140833,33 +131437,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -140880,7 +131474,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -140888,33 +131482,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -140935,7 +131521,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -140954,21 +131540,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -140979,52 +131567,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson { + for ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -141032,24 +131610,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -141069,72 +131639,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse200ApplicationJson as ReleaseResourceResponse200ApplicationJson; - pub use self::CancelOperationResponse200ApplicationJsonerror as ReleaseResourceResponse200ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseResourceResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseResourceResponse200ApplicationJsontype; - pub use self::CancelOperationResponse200ApplicationJson as ReleaseResourceResponse202ApplicationJson; - pub use self::CancelOperationResponse200ApplicationJsonerror as ReleaseResourceResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseResourceResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseResourceResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ReleaseResourceResponse403ApplicationProblemPlusJson { - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ReplaceVoiceProfileInboundConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseResourceResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReplaceVoiceProfileInboundConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ReleaseResourceResponse403ApplicationProblemPlusJson), + ((usize, u32), ReplaceVoiceProfileInboundConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -141155,7 +131704,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse403ApplicationProblemPlusJson::ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundConflictProblem::ProjectClosingProblem( inner, ), )); @@ -141163,27 +131712,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -141196,7 +131743,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -141204,7 +131751,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReplaceVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -141212,31 +131759,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -141257,7 +131798,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse403ApplicationProblemPlusJson::ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2( + ReplaceVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ), )); @@ -141275,29 +131816,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) { (match_count, selected) = select(true); } @@ -141308,52 +131854,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundConflictProblem", ), ) } } } - impl serde::Serialize for ReleaseResourceResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ReplaceVoiceProfileInboundConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseResourceResponse403ApplicationProblemPlusJson::ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundConflictProblem::ProjectClosingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseResourceResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ReplaceVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseResourceResponse403ApplicationProblemPlusJson::ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2( + ReplaceVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -141361,16 +131899,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -141379,22 +131917,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -141414,144 +131946,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseResourceResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReleaseResourceResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReleaseResourceResponse403ApplicationProblemPlusJsonVariant2; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ReleaseResourceResponse404ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_resource_not_found_de", - serialize_with = "const_resource_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_resource_not_found_804e32a7_de", - serialize_with = "const_resource_not_found_804e32a7_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_resource_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_resource_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for ReleaseResourceResponse404ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - ReleaseResourceResponse404ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ReleaseResourceResponse404ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ReleaseResourceResponse404ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ReleaseResourceResponse404ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum ReleaseResourceResponse409ApplicationProblemPlusJson { - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReplaceVoiceProfileInboundForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseResourceResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ReplaceVoiceProfileInboundForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ReleaseResourceResponse409ApplicationProblemPlusJson), + ((usize, u32), ReplaceVoiceProfileInboundForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_CONNECTED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Connected") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-connected", - )) - .then(|| (|| -> Option< - Box, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -141571,7 +132008,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse409ApplicationProblemPlusJson::ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -141579,31 +132016,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_PROVISIONING") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Provisioning") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/whatsapp-sender-provisioning", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -141624,190 +132055,33 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse409ApplicationProblemPlusJson::ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1( + ReplaceVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_CONNECTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Connected") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-connected", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("WHATSAPP_SENDER_PROVISIONING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("WhatsApp Sender Provisioning") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/whatsapp-sender-provisioning", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse409ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse409ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for ReleaseResourceResponse409ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - ReleaseResourceResponse409ApplicationProblemPlusJson::ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseResourceResponse409ApplicationProblemPlusJson::ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseResourceResponse409ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant3 as ReleaseResourceResponse409ApplicationProblemPlusJsonVariant0; - pub use self::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonVariant4 as ReleaseResourceResponse409ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as ReleaseResourceResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReleaseResourceResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReleaseResourceResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::CancelOperationResponse429ApplicationProblemPlusJson as ReleaseResourceResponse429ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum ReleaseResourceResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for ReleaseResourceResponse500ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), ReleaseResourceResponse500ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -141820,7 +132094,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -141828,7 +132102,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReplaceVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -141836,31 +132110,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -141881,7 +132149,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse500ApplicationProblemPlusJson::ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1( + ReplaceVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -141899,24 +132167,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -141927,42 +132210,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundForbiddenProblem", ), ) } } } - impl serde::Serialize for ReleaseResourceResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ReplaceVoiceProfileInboundForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseResourceResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ReplaceVoiceProfileInboundForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ReplaceVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseResourceResponse500ApplicationProblemPlusJson::ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1( + ReplaceVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ReplaceVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -141971,22 +132275,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -141995,6 +132293,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -142006,33 +132320,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseResourceResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReleaseResourceResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as ReleaseResourceResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as ReleaseResourceResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseResourceResponse504ApplicationProblemPlusJson { - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ReplaceVoiceProfileInboundGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseResourceResponse504ApplicationProblemPlusJson { + for ReplaceVoiceProfileInboundGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ReleaseResourceResponse504ApplicationProblemPlusJson), + ((usize, u32), ReplaceVoiceProfileInboundGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -142048,22 +132355,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -142084,7 +132385,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse504ApplicationProblemPlusJson::ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -142101,22 +132402,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -142137,7 +132432,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseResourceResponse504ApplicationProblemPlusJson::ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1( + ReplaceVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -142181,49 +132476,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseResourceResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ReleaseResourceResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ReplaceVoiceProfileInboundGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseResourceResponse504ApplicationProblemPlusJson::ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseResourceResponse504ApplicationProblemPlusJson::ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1( + ReplaceVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -142231,23 +132518,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -142266,71 +132545,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseResourceResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReleaseResourceResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReleaseResourceResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJson as ReleaseSharedLineAssignmentResponse200ApplicationJson; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as ReleaseSharedLineAssignmentResponse200ApplicationJsonplatform; #[derive(Debug, Clone)] - pub enum ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson { - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ReplaceVoiceProfileInboundInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson { + for ReplaceVoiceProfileInboundInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ReplaceVoiceProfileInboundInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -142351,7 +132608,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -142359,82 +132616,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -142455,7 +132655,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ReplaceVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -142473,29 +132673,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -142506,73 +132701,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ReplaceVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ReplaceVoiceProfileInboundInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( + ReplaceVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ReplaceVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -142580,24 +132743,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -142617,61 +132772,125 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::GetSharedLineAssignmentResponse404ApplicationProblemPlusJson as ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ReplaceVoiceProfileInboundRequest { + #[serde( + rename = "credentials", + deserialize_with = "serde::Deserialize::deserialize", + )] + pub credentials: Option, + #[serde(rename = "destinationUri")] + pub destination_uri: String, + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + } + impl<'de> serde::Deserialize<'de> for ReplaceVoiceProfileInboundRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["credentials", "destinationUri", "expectedVersion"])?; + ReplaceVoiceProfileInboundRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ReplaceVoiceProfileInboundRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ReplaceVoiceProfileInboundRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ReplaceVoiceProfileInboundRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipInboundCredentialsWithPassword { + #[serde(rename = "password")] + pub password: String, + #[serde(rename = "username")] + pub username: String, + } + impl<'de> serde::Deserialize<'de> for SipInboundCredentialsWithPassword { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["password", "username"])?; + SipInboundCredentialsWithPassword::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipInboundCredentialsWithPassword::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipInboundCredentialsWithPassword { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipInboundCredentialsWithPassword::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResetAccountProfilePictureBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResetAccountProfilePictureBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAccountProfilePictureBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -142684,7 +132903,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -142692,7 +132911,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAccountProfilePictureBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -142700,33 +132919,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -142747,7 +132958,54 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResetAccountProfilePictureBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -142766,22 +133024,32 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/invalid-argument") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", ) { (match_count, selected) = select(true); @@ -142793,43 +133061,61 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureBadRequestProblem", ), ) } } } - impl serde::Serialize - for ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ResetAccountProfilePictureBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAccountProfilePictureBadRequestProblem::InvalidArgumentProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ResetAccountProfilePictureBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -142838,24 +133124,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -142875,69 +133153,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAccountProfilePictureBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson { - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResetAccountProfilePictureForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResetAccountProfilePictureForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAccountProfilePictureForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResetAccountProfilePictureForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -142958,7 +133262,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ResetAccountProfilePictureForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -142966,33 +133270,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResetAccountProfilePictureForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -143013,7 +133356,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -143031,22 +133374,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -143057,51 +133417,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureForbiddenProblem", ), ) } } } - impl serde::Serialize - for ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ResetAccountProfilePictureForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ResetAccountProfilePictureForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResetAccountProfilePictureForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ResetAccountProfilePictureForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -143110,24 +133482,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -143136,6 +133500,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -143147,130 +133527,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAccountProfilePictureForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ReleaseWhatsappDedicatedLineResponse200ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ReleaseWhatsappDedicatedLineResponse200ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseWhatsappDedicatedLineResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseWhatsappDedicatedLineResponse200ApplicationJsontype; - pub use self::ListOperationsResponse200ApplicationJsonoperationsItem as ReleaseWhatsappDedicatedLineResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as ReleaseWhatsappDedicatedLineResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as ReleaseWhatsappDedicatedLineResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as ReleaseWhatsappDedicatedLineResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ResetAccountProfilePictureGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { + for ResetAccountProfilePictureGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAccountProfilePictureGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -143283,7 +133584,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -143291,7 +133592,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAccountProfilePictureGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -143299,33 +133600,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -143346,7 +133639,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + ResetAccountProfilePictureGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -143364,29 +133657,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -143397,73 +133683,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ResetAccountProfilePictureGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAccountProfilePictureGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2( + ResetAccountProfilePictureGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -143471,25 +133725,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -143508,40 +133752,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAccountProfilePictureGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ResetAccountProfilePictureInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { + for ResetAccountProfilePictureInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAccountProfilePictureInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -143555,16 +133785,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -143577,7 +133807,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -143585,7 +133815,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAccountProfilePictureInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -143602,24 +133832,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -143640,7 +133862,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -143686,44 +133908,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ResetAccountProfilePictureInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAccountProfilePictureInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -143731,24 +133950,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -143768,73 +133979,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAccountProfilePictureInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ResetAccountProfilePictureUnprocessableEntityProblem { + IdempotencyKeyReusedProblem(Box), + ValidationFailedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { + for ResetAccountProfilePictureUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAccountProfilePictureUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -143855,7 +134044,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + ResetAccountProfilePictureUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -143863,33 +134052,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -143902,7 +134083,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -143910,7 +134091,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -143929,21 +134110,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/idempotency-key-reused") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") { (match_count, selected) = select(true); } @@ -143954,51 +134135,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAccountProfilePictureUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ResetAccountProfilePictureUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0( + ResetAccountProfilePictureUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson::ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1( + ResetAccountProfilePictureUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -144007,25 +134179,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -144044,124 +134206,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAccountProfilePictureUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson as ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson; - pub use self::CreateSharedLineAssignmentResponse201ApplicationJsonplatform as ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJsonplatform; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum ResetAgentProfileAvatarBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResetAgentProfileAvatarBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAgentProfileAvatarBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -144174,7 +134262,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -144182,7 +134270,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAgentProfileAvatarBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -144190,33 +134278,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -144237,7 +134317,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ResetAgentProfileAvatarBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -144255,29 +134335,26 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -144288,72 +134365,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarBadRequestProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ResetAgentProfileAvatarBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAgentProfileAvatarBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2( + ResetAgentProfileAvatarBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -144362,24 +134409,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -144399,63 +134438,95 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonVariant2; - pub use self::GetSharedLineAssignmentResponse404ApplicationProblemPlusJson as ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ResetAgentProfileAvatarForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResetAgentProfileAvatarForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAgentProfileAvatarForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResetAgentProfileAvatarForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -144468,7 +134539,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -144476,7 +134547,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAgentProfileAvatarForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -144484,33 +134555,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResetAgentProfileAvatarForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -144531,7 +134641,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ResetAgentProfileAvatarForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -144549,24 +134659,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -144577,43 +134702,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarForbiddenProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ResetAgentProfileAvatarForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResetAgentProfileAvatarForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResetAgentProfileAvatarForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1( + ResetAgentProfileAvatarForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ResetAgentProfileAvatarForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -144622,24 +134767,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -144648,6 +134785,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -144659,73 +134812,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum ResetAgentProfileAvatarGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResetAgentProfileAvatarGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAgentProfileAvatarGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -144746,7 +134876,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ResetAgentProfileAvatarGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -144754,33 +134884,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -144801,7 +134923,7 @@ pub mod types { if replace { selected = Some(( rank, - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ResetAgentProfileAvatarGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -144820,21 +134942,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -144845,52 +134967,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ResetAgentProfileAvatarGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0( + ResetAgentProfileAvatarGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1( + ResetAgentProfileAvatarGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -144898,25 +135009,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -144935,212 +135036,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ReplaceVoiceProfileInboundRequestApplicationJson { - #[serde( - rename = "credentials", - deserialize_with = "serde::Deserialize::deserialize", - )] - pub credentials: Option< - ReplaceVoiceProfileInboundRequestApplicationJsoncredentials, - >, - #[serde(rename = "destinationUri")] - pub destination_uri: String, - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - } - impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["credentials", "destinationUri", "expectedVersion"])?; - ReplaceVoiceProfileInboundRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ReplaceVoiceProfileInboundRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for ReplaceVoiceProfileInboundRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ReplaceVoiceProfileInboundRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ReplaceVoiceProfileInboundRequestApplicationJsoncredentials { - #[serde(rename = "password")] - pub password: String, - #[serde(rename = "username")] - pub username: String, - } - impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundRequestApplicationJsoncredentials { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["password", "username"])?; - ReplaceVoiceProfileInboundRequestApplicationJsoncredentials::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - ReplaceVoiceProfileInboundRequestApplicationJsoncredentials::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for ReplaceVoiceProfileInboundRequestApplicationJsoncredentials { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ReplaceVoiceProfileInboundRequestApplicationJsoncredentials::serialize( - self, - serializer, - ) - } - } - pub use self::DeleteVoiceProfileInboundResponse200ApplicationJson as ReplaceVoiceProfileInboundResponse200ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as ReplaceVoiceProfileInboundResponse200ApplicationJsoninboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as ReplaceVoiceProfileInboundResponse200ApplicationJsoninbound; - pub use self::DeleteVoiceProfileInboundResponse200ApplicationJson as ReplaceVoiceProfileInboundResponse201ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as ReplaceVoiceProfileInboundResponse201ApplicationJsoninboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as ReplaceVoiceProfileInboundResponse201ApplicationJsoninbound; #[derive(Debug, Clone)] - pub enum ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson { - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ResetAgentProfileAvatarUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson { + for ResetAgentProfileAvatarUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ResetAgentProfileAvatarUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -145153,7 +135093,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -145161,7 +135101,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAgentProfileAvatarUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -145169,33 +135109,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -145216,7 +135148,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + ResetAgentProfileAvatarUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -145234,29 +135166,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -145267,55 +135194,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResetAgentProfileAvatarUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ResetAgentProfileAvatarUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResetAgentProfileAvatarUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + ResetAgentProfileAvatarUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -145323,42 +135236,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -145378,72 +135265,85 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ResourcePage { + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, + #[serde(rename = "resources")] + pub resources: Vec, + } + impl<'de> serde::Deserialize<'de> for ResourcePage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["nextPageToken", "resources"])?; + ResourcePage::deserialize(value).map_err(serde::de::Error::custom) + } else { + ResourcePage::deserialize(deserializer) + } + } + } + impl serde::Serialize for ResourcePage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ResourcePage::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson { - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ResumeSubscriptionBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ResumeSubscriptionBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -145464,7 +135364,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( + ResumeSubscriptionBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -145472,33 +135372,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -145519,7 +135411,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -145527,33 +135419,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -145574,7 +135458,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -145593,32 +135477,32 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/invalid-argument") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/idempotency-key-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) { (match_count, selected) = select(true); @@ -145630,55 +135514,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionBadRequestProblem", ), ) } } } - impl serde::Serialize - for ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResumeSubscriptionBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -145686,24 +135559,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -145712,24 +135577,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -145749,61 +135606,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResumeSubscriptionConflictProblem { + FailedPreconditionProblem(Box), + IdempotencyRequestInProgressProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ResumeSubscriptionConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FAILED_PRECONDITION") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Failed Precondition") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/failed-precondition", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -145816,7 +135660,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -145824,7 +135668,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResumeSubscriptionConflictProblem::FailedPreconditionProblem( inner, ), )); @@ -145832,33 +135676,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Request In Progress") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-request-in-progress", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -145879,7 +135715,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionConflictProblem::IdempotencyRequestInProgressProblem( inner, ), )); @@ -145898,22 +135734,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FAILED_PRECONDITION") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Failed Precondition") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/failed-precondition") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Request In Progress") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-request-in-progress", ) { (match_count, selected) = select(true); @@ -145925,43 +135761,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionConflictProblem", ), ) } } } - impl serde::Serialize - for ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionConflictProblem::FailedPreconditionProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResumeSubscriptionConflictProblem::IdempotencyRequestInProgressProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -145970,24 +135805,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -146007,69 +135834,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson { - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResumeSubscriptionForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), ResumeSubscriptionForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResumeSubscriptionForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -146090,7 +135939,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( + ResumeSubscriptionForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -146098,33 +135947,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + ResumeSubscriptionForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -146145,7 +136033,7 @@ pub mod types { if replace { selected = Some(( rank, - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -146163,22 +136051,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -146189,51 +136094,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionForbiddenProblem", ), ) } } } - impl serde::Serialize - for ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson::ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResumeSubscriptionForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResumeSubscriptionForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + ResumeSubscriptionForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -146242,24 +136159,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -146268,6 +136177,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -146279,127 +136204,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CommitAccountProfilePictureResponse200ApplicationJson as ResetAccountProfilePictureResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum ResetAccountProfilePictureResponse400ApplicationProblemPlusJson { - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ResumeSubscriptionGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResetAccountProfilePictureResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), ResumeSubscriptionGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -146420,7 +136268,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -146428,33 +136276,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -146475,7 +136315,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -146494,33 +136334,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -146531,81 +136359,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ResetAccountProfilePictureResponse400ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse400ApplicationProblemPlusJson::ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + ResumeSubscriptionGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -146613,25 +136401,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -146650,70 +136428,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAccountProfilePictureResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionGatewayTimeoutProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ResetAccountProfilePictureResponse403ApplicationProblemPlusJson { - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum ResumeSubscriptionInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResetAccountProfilePictureResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), ResumeSubscriptionInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -146734,7 +136490,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( + ResumeSubscriptionInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -146742,82 +136498,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -146838,7 +136537,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -146856,29 +136555,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -146889,73 +136583,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ResetAccountProfilePictureResponse403ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + ResumeSubscriptionInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse403ApplicationProblemPlusJson::ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2( + ResumeSubscriptionInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -146963,24 +136625,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -147000,71 +136654,115 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAccountProfilePictureResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as ResetAccountProfilePictureResponse404ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as ResetAccountProfilePictureResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as ResetAccountProfilePictureResponse413ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ResumeSubscriptionRequest { + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + } + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["category"])?; + ResumeSubscriptionRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ResumeSubscriptionRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for ResumeSubscriptionRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ResumeSubscriptionRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct ResumeSubscriptionResponse { + ///Category slug, e.g. analytics or messaging. + #[serde(rename = "category")] + pub category: String, + ///False when the subscription was not scheduled to cancel. + #[serde(rename = "resumed")] + pub resumed: bool, + } + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["category", "resumed"])?; + ResumeSubscriptionResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + ResumeSubscriptionResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for ResumeSubscriptionResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + ResumeSubscriptionResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ResetAccountProfilePictureResponse422ApplicationProblemPlusJson { - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResumeSubscriptionServiceUnavailableProblem { + IdempotencyUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResetAccountProfilePictureResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), ResumeSubscriptionServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("IDEMPOTENCY_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Idempotency Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/idempotency-unavailable", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -147085,7 +136783,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson::ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( + ResumeSubscriptionServiceUnavailableProblem::IdempotencyUnavailableProblem( inner, ), )); @@ -147093,33 +136791,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147132,7 +136822,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -147140,7 +136830,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson::ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); @@ -147159,21 +136849,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("IDEMPOTENCY_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Idempotency Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-reused") + == Some("https://photon.codes/docs/problems/idempotency-unavailable") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) { (match_count, selected) = select(true); } @@ -147184,51 +136876,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionServiceUnavailableProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionServiceUnavailableProblem", ), ) } } } - impl serde::Serialize - for ResetAccountProfilePictureResponse422ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionServiceUnavailableProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson::ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0( + ResumeSubscriptionServiceUnavailableProblem::IdempotencyUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse422ApplicationProblemPlusJson::ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -147237,24 +136920,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147274,58 +136949,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAccountProfilePictureResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionServiceUnavailableProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ResetAccountProfilePictureResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum ResumeSubscriptionUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResetAccountProfilePictureResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for ResumeSubscriptionUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAccountProfilePictureResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), ResumeSubscriptionUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -147338,7 +137005,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -147346,7 +137013,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResumeSubscriptionUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -147354,33 +137021,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147401,7 +137060,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse500ApplicationProblemPlusJson::ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -147420,22 +137079,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -147447,44 +137106,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union ResumeSubscriptionUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for ResetAccountProfilePictureResponse500ApplicationProblemPlusJson { + impl serde::Serialize for ResumeSubscriptionUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAccountProfilePictureResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + ResumeSubscriptionUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse500ApplicationProblemPlusJson::ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1( + ResumeSubscriptionUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -147492,24 +137148,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147529,69 +137177,126 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAccountProfilePictureResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union ResumeSubscriptionUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ResetAccountProfilePictureResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ResetAccountProfilePictureResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct RetryEnterpriseLoginRequest { + #[serde(rename = "retryToken")] + pub retry_token: String, + } + impl<'de> serde::Deserialize<'de> for RetryEnterpriseLoginRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["retryToken"])?; + RetryEnterpriseLoginRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + RetryEnterpriseLoginRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for RetryEnterpriseLoginRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + RetryEnterpriseLoginRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ResetAccountProfilePictureResponse504ApplicationProblemPlusJson { - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RetryOrganizationConnectionSyncForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for ResetAccountProfilePictureResponse504ApplicationProblemPlusJson { + for RetryOrganizationConnectionSyncForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), RetryOrganizationConnectionSyncForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RetryOrganizationConnectionSyncForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -147612,7 +137317,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson::ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( + RetryOrganizationConnectionSyncForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -147620,33 +137325,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147667,7 +137364,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson::ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( + RetryOrganizationConnectionSyncForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -147685,22 +137382,31 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -147711,51 +137417,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAccountProfilePictureResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncForbiddenProblem", ), ) } } } - impl serde::Serialize - for ResetAccountProfilePictureResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RetryOrganizationConnectionSyncForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson::ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0( + RetryOrganizationConnectionSyncForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RetryOrganizationConnectionSyncForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAccountProfilePictureResponse504ApplicationProblemPlusJson::ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1( + RetryOrganizationConnectionSyncForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -147764,24 +137479,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -147801,119 +137508,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAccountProfilePictureResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonVariant1; - pub use self::CommitAgentProfileAvatarResponse200ApplicationJson as ResetAgentProfileAvatarResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson { - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RetryOrganizationConnectionSyncGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson { + for RetryOrganizationConnectionSyncGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), RetryOrganizationConnectionSyncGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -147926,7 +137565,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -147934,7 +137573,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RetryOrganizationConnectionSyncGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -147942,33 +137581,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -147989,7 +137620,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( + RetryOrganizationConnectionSyncGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -148007,29 +137638,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -148040,55 +137664,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RetryOrganizationConnectionSyncGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RetryOrganizationConnectionSyncGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2( + RetryOrganizationConnectionSyncGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -148096,43 +137706,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -148151,75 +137733,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson; - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ResetAgentProfileAvatarResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ResetAgentProfileAvatarResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson { - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RetryOrganizationConnectionSyncInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson { + for RetryOrganizationConnectionSyncInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), RetryOrganizationConnectionSyncInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -148240,7 +137796,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( + RetryOrganizationConnectionSyncInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -148248,33 +137804,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -148295,7 +137843,7 @@ pub mod types { if replace { selected = Some(( rank, - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( + RetryOrganizationConnectionSyncInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -148314,21 +137862,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -148339,52 +137889,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RetryOrganizationConnectionSyncInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RetryOrganizationConnectionSyncInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0( + RetryOrganizationConnectionSyncInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson::ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1( + RetryOrganizationConnectionSyncInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -148392,24 +137931,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -148429,100 +137960,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ResumeSubscriptionRequestApplicationJson { - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - } - impl<'de> serde::Deserialize<'de> for ResumeSubscriptionRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["category"])?; - ResumeSubscriptionRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ResumeSubscriptionRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ResumeSubscriptionRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ResumeSubscriptionRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct ResumeSubscriptionResponse200ApplicationJson { - ///Category slug, e.g. analytics or messaging. - #[serde(rename = "category")] - pub category: String, - ///False when the subscription was not scheduled to cancel. - #[serde(rename = "resumed")] - pub resumed: bool, - } - impl<'de> serde::Deserialize<'de> for ResumeSubscriptionResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["category", "resumed"])?; - ResumeSubscriptionResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - ResumeSubscriptionResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for ResumeSubscriptionResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - ResumeSubscriptionResponse200ApplicationJson::serialize(self, serializer) - } - } #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse400ApplicationProblemPlusJson { - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RevokeAccountServiceKeyBadRequestProblem { + InvalidArgumentProblem(Box), + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeAccountServiceKeyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse400ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -148538,24 +137995,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -148576,7 +138025,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -148584,33 +138033,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -148631,7 +138072,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -148639,33 +138080,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -148686,7 +138119,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2( + RevokeAccountServiceKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -148713,24 +138146,24 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/invalid-argument") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-required", ) { (match_count, selected) = select(true); @@ -148742,52 +138175,44 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyBadRequestProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse400ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse400ApplicationProblemPlusJson::ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2( + RevokeAccountServiceKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -148795,22 +138220,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -148819,22 +138238,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -148854,36 +138267,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as ResumeSubscriptionResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse403ApplicationProblemPlusJson { - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RevokeAccountServiceKeyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeAccountServiceKeyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse403ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -148897,25 +138301,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -148935,7 +138329,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse403ApplicationProblemPlusJson::ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -148952,18 +138346,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RevokeAccountServiceKeyForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -148976,7 +138415,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -148984,7 +138423,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RevokeAccountServiceKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -149001,24 +138440,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -149039,7 +138470,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse403ApplicationProblemPlusJson::ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2( + RevokeAccountServiceKeyForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -149072,6 +138503,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -149090,51 +138531,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyForbiddenProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse403ApplicationProblemPlusJson::ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeAccountServiceKeyForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RevokeAccountServiceKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse403ApplicationProblemPlusJson::ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2( + RevokeAccountServiceKeyForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -149143,16 +138596,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -149161,23 +138614,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -149196,65 +138641,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as ResumeSubscriptionResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse409ApplicationProblemPlusJson { - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RevokeAccountServiceKeyGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeAccountServiceKeyGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse409ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/failed-precondition", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -149275,7 +138705,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse409ApplicationProblemPlusJson::ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -149283,33 +138713,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -149330,7 +138752,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse409ApplicationProblemPlusJson::ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -149349,23 +138771,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("FAILED_PRECONDITION") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Failed Precondition") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/failed-precondition") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_REQUEST_IN_PROGRESS") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Request In Progress") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-request-in-progress", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -149376,49 +138796,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse409ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse409ApplicationProblemPlusJson::ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse409ApplicationProblemPlusJson::ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -149426,23 +138838,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -149461,65 +138865,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyGatewayTimeoutProblem", ), ) } } } - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant0 as ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant0; - pub use self::CancelSubscriptionResponse409ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse409ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse422ApplicationProblemPlusJson { - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RevokeAccountServiceKeyInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse422ApplicationProblemPlusJson { + for RevokeAccountServiceKeyInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse422ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -149532,7 +138920,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -149540,7 +138928,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse422ApplicationProblemPlusJson::ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -149548,33 +138936,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -149595,7 +138975,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse422ApplicationProblemPlusJson::ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -149614,22 +138994,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -149641,49 +139021,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse422ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse422ApplicationProblemPlusJson::ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse422ApplicationProblemPlusJson::ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -149691,22 +139063,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -149726,55 +139092,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as ResumeSubscriptionResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RevokeAccountServiceKeyNotFoundProblem { + AccountNotFoundProblem(Box), + AccountServiceKeyNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeAccountServiceKeyNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse500ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyNotFoundProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("ACCOUNT_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Account Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/account-not-found", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -149787,7 +139148,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -149795,7 +139156,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RevokeAccountServiceKeyNotFoundProblem::AccountNotFoundProblem( inner, ), )); @@ -149803,33 +139164,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ACCOUNT_SERVICE_KEY_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Account Service Key Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/account-service-key-not-found", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -149850,7 +139203,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse500ApplicationProblemPlusJson::ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyNotFoundProblem::AccountServiceKeyNotFoundProblem( inner, ), )); @@ -149869,22 +139222,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("ACCOUNT_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Account Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/account-not-found") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ACCOUNT_SERVICE_KEY_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Account Service Key Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/account-service-key-not-found", ) { (match_count, selected) = select(true); @@ -149896,43 +139249,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyNotFoundProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse500ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse500ApplicationProblemPlusJson::ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyNotFoundProblem::AccountNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeAccountServiceKeyNotFoundProblem::AccountServiceKeyNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -149940,22 +139291,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -149975,65 +139320,82 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as ResumeSubscriptionResponse502ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct RevokeAccountServiceKeyResponse { + #[serde(rename = "serviceKey")] + pub service_key: AccountServiceKey, + } + impl<'de> serde::Deserialize<'de> for RevokeAccountServiceKeyResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["serviceKey"])?; + RevokeAccountServiceKeyResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + RevokeAccountServiceKeyResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for RevokeAccountServiceKeyResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + RevokeAccountServiceKeyResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse503ApplicationProblemPlusJson { - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RevokeAccountServiceKeyUnprocessableEntityProblem { + IdempotencyKeyReusedProblem(Box), + ValidationFailedProblem(Box), } impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse503ApplicationProblemPlusJson { + for RevokeAccountServiceKeyUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse503ApplicationProblemPlusJson), + ((usize, u32), RevokeAccountServiceKeyUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-unavailable", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -150054,7 +139416,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse503ApplicationProblemPlusJson::ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -150062,33 +139424,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -150101,7 +139455,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -150109,7 +139463,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse503ApplicationProblemPlusJson::ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -150128,23 +139482,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_UNAVAILABLE") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Unavailable") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-unavailable") + == Some("https://photon.codes/docs/problems/idempotency-key-reused") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-unavailable", - ) + == Some("https://photon.codes/docs/problems/validation-failed") { (match_count, selected) = select(true); } @@ -150155,48 +139507,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAccountServiceKeyUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse503ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAccountServiceKeyUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse503ApplicationProblemPlusJson::ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0( + RevokeAccountServiceKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse503ApplicationProblemPlusJson::ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1( + RevokeAccountServiceKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -150205,23 +139551,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -150240,65 +139578,94 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyUnprocessableEntityProblem", ), ) } } } - pub use self::CancelSubscriptionResponse503ApplicationProblemPlusJsonVariant0 as ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum ResumeSubscriptionResponse504ApplicationProblemPlusJson { - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RevokeAuthorizedApplicationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for ResumeSubscriptionResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeAuthorizedApplicationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), ResumeSubscriptionResponse504ApplicationProblemPlusJson), + ((usize, u32), RevokeAuthorizedApplicationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RevokeAuthorizedApplicationForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -150319,7 +139686,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse504ApplicationProblemPlusJson::ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0( + RevokeAuthorizedApplicationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -150327,33 +139694,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -150374,7 +139733,7 @@ pub mod types { if replace { selected = Some(( rank, - ResumeSubscriptionResponse504ApplicationProblemPlusJson::ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1( + RevokeAuthorizedApplicationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -150392,22 +139751,31 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -150418,48 +139786,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union ResumeSubscriptionResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationForbiddenProblem", ), ) } } } - impl serde::Serialize for ResumeSubscriptionResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAuthorizedApplicationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - ResumeSubscriptionResponse504ApplicationProblemPlusJson::ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0( + RevokeAuthorizedApplicationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeAuthorizedApplicationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - ResumeSubscriptionResponse504ApplicationProblemPlusJson::ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1( + RevokeAuthorizedApplicationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -150468,22 +139848,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -150503,62 +139877,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union ResumeSubscriptionResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as ResumeSubscriptionResponse504ApplicationProblemPlusJsonVariant1; - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJson as RetryOrganizationConnectionSyncResponse200ApplicationJson; - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus as RetryOrganizationConnectionSyncResponse200ApplicationJsonmembershipstatus; - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJsonmembership as RetryOrganizationConnectionSyncResponse200ApplicationJsonmembership; - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJsonmembershipstatus as RetryOrganizationConnectionSyncResponse200ApplicationJsonorganizationstatus; - pub use self::GetOrganizationConnectionStatusResponse200ApplicationJsonorganization as RetryOrganizationConnectionSyncResponse200ApplicationJsonorganization; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum RevokeAuthorizedApplicationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson { + for RevokeAuthorizedApplicationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), RevokeAuthorizedApplicationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -150571,7 +139934,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -150579,7 +139942,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + RevokeAuthorizedApplicationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -150587,27 +139950,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -150620,7 +139981,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -150628,7 +139989,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RevokeAuthorizedApplicationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -150646,21 +140007,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -150671,44 +140033,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAuthorizedApplicationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + RevokeAuthorizedApplicationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RevokeAuthorizedApplicationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -150716,17 +140075,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -150745,38 +140102,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationGatewayTimeoutProblem", ), ) } } } - pub use self::GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson as RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson; - pub use self::GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson as RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1( - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RevokeAuthorizedApplicationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson { + for RevokeAuthorizedApplicationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), RevokeAuthorizedApplicationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -150790,16 +140135,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -150812,7 +140157,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -150820,7 +140165,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RevokeAuthorizedApplicationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -150837,24 +140182,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -150875,7 +140212,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1( + RevokeAuthorizedApplicationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -150921,44 +140258,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeAuthorizedApplicationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson { + impl serde::Serialize for RevokeAuthorizedApplicationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RevokeAuthorizedApplicationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1( + RevokeAuthorizedApplicationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -150966,24 +140300,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -151003,73 +140329,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson { - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0( - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1( - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RevokeProjectApiKeyBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeProjectApiKeyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), RevokeProjectApiKeyBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -151090,7 +140392,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0( + RevokeProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -151098,33 +140400,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RevokeProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -151145,7 +140486,7 @@ pub mod types { if replace { selected = Some(( rank, - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1( + RevokeProjectApiKeyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -151164,21 +140505,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -151189,51 +140542,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyBadRequestProblem", ), ) } } } - impl serde::Serialize - for RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RevokeProjectApiKeyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0( + RevokeProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson::RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1( + RevokeProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RevokeProjectApiKeyBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -151242,24 +140589,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -151268,6 +140607,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -151279,109 +140634,91 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeProjectApiKeyBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RevokeAccountServiceKeyResponse200ApplicationJson { - #[serde(rename = "serviceKey")] - pub service_key: RevokeAccountServiceKeyResponse200ApplicationJsonserviceKey, - } - impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["serviceKey"])?; - RevokeAccountServiceKeyResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - RevokeAccountServiceKeyResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for RevokeAccountServiceKeyResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RevokeAccountServiceKeyResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateAccountServiceKeyResponse201ApplicationJsonserviceKey as RevokeAccountServiceKeyResponse200ApplicationJsonserviceKey; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson { - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RevokeProjectApiKeyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeProjectApiKeyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), RevokeProjectApiKeyForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RevokeProjectApiKeyForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -151402,7 +140739,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( + RevokeProjectApiKeyForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -151410,33 +140747,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -151457,7 +140786,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( + RevokeProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -151465,33 +140794,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -151512,7 +140833,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( + RevokeProjectApiKeyForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -151530,34 +140851,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -151568,54 +140894,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyForbiddenProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson { + impl serde::Serialize for RevokeProjectApiKeyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2( + RevokeProjectApiKeyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeProjectApiKeyForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RevokeProjectApiKeyForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -151624,24 +140959,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -151650,25 +140977,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -151687,70 +141004,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeProjectApiKeyForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson { - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RevokeProjectApiKeyNotFoundProblem { + ProjectNotFoundProblem(Box), + ApiKeyNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RevokeProjectApiKeyNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), RevokeProjectApiKeyNotFoundProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/project-not-found", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -151771,7 +141066,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( + RevokeProjectApiKeyNotFoundProblem::ProjectNotFoundProblem( inner, ), )); @@ -151779,27 +141074,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("API_KEY_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("API Key Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/api-key-not-found", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -151812,7 +141105,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -151820,41 +141113,210 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RevokeProjectApiKeyNotFoundProblem::ApiKeyNotFoundProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Project Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/project-not-found") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("API_KEY_NOT_FOUND") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(404i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("API Key Not Found") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/api-key-not-found") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union RevokeProjectApiKeyNotFoundProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union RevokeProjectApiKeyNotFoundProblem", + ), + ) + } + } + } + impl serde::Serialize for RevokeProjectApiKeyNotFoundProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + RevokeProjectApiKeyNotFoundProblem::ProjectNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RevokeProjectApiKeyNotFoundProblem::ApiKeyNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union RevokeProjectApiKeyNotFoundProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum RevokeProjectApiKeyUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), + } + impl<'de> serde::Deserialize<'de> for RevokeProjectApiKeyUnprocessableEntityProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), RevokeProjectApiKeyUnprocessableEntityProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1109u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RevokeProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -151875,7 +141337,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( + RevokeProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -151893,29 +141355,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -151926,73 +141383,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RevokeProjectApiKeyUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RevokeProjectApiKeyUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0( + RevokeProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2( + RevokeProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -152000,24 +141425,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -152037,68 +141454,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RevokeProjectApiKeyUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson { - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), RotateVoiceProfileOutboundCredentialBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ACCOUNT_NOT_FOUND") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Account Not Found") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/account-not-found", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -152119,7 +141519,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -152127,33 +141527,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ACCOUNT_SERVICE_KEY_NOT_FOUND") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Account Service Key Not Found") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/account-service-key-not-found", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152174,7 +141566,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -152193,22 +141585,24 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("ACCOUNT_NOT_FOUND") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Account Not Found") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/account-not-found") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("ACCOUNT_SERVICE_KEY_NOT_FOUND") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Account Service Key Not Found") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/account-service-key-not-found", + "https://photon.codes/docs/problems/idempotency-key-invalid", ) { (match_count, selected) = select(true); @@ -152220,51 +141614,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialBadRequestProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson { + impl serde::Serialize for RotateVoiceProfileOutboundCredentialBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -152273,24 +141658,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152310,152 +141687,53 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialBadRequestProblem", ), ) } } } - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_account_service_key_not_found_de", - serialize_with = "const_account_service_key_not_found_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_service_key_not_found_36cf2448_de", - serialize_with = "const_account_service_key_not_found_36cf2448_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_service_key_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_account_service_key_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson { - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), + VoiceOutboundNotConfiguredProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), RotateVoiceProfileOutboundCredentialConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -152476,7 +141754,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialConflictProblem::ProjectClosingProblem( inner, ), )); @@ -152484,33 +141762,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152523,7 +141793,101 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceOutboundOperationPendingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Not Configured") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-not-configured", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -152531,7 +141895,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ), )); @@ -152550,21 +141914,43 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-reused") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Not Configured") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-not-configured", + ) { (match_count, selected) = select(true); } @@ -152575,51 +141961,64 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialConflictProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson { + impl serde::Serialize for RotateVoiceProfileOutboundCredentialConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -152628,24 +142027,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152665,58 +142074,96 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), RotateVoiceProfileOutboundCredentialForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateVoiceProfileOutboundCredentialForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -152729,7 +142176,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -152737,7 +142184,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RotateVoiceProfileOutboundCredentialForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -152745,33 +142192,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateVoiceProfileOutboundCredentialForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152792,7 +142278,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -152810,24 +142296,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -152838,43 +142339,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialForbiddenProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson { + impl serde::Serialize for RotateVoiceProfileOutboundCredentialForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RotateVoiceProfileOutboundCredentialForbiddenProblem::ForbiddenProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RotateVoiceProfileOutboundCredentialForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RotateVoiceProfileOutboundCredentialForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -152883,24 +142404,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -152909,6 +142422,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -152920,69 +142449,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson { - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -153003,7 +142514,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -153011,33 +142522,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -153058,7 +142561,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -153077,21 +142580,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -153102,52 +142605,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0( + RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson::RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -153155,25 +142647,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -153192,23 +142674,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -153217,7 +142695,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson, + RotateVoiceProfileOutboundCredentialInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -153225,23 +142703,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -153254,7 +142732,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -153262,7 +142740,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + RotateVoiceProfileOutboundCredentialInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -153270,27 +142748,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -153303,7 +142779,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -153311,7 +142787,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RotateVoiceProfileOutboundCredentialInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -153329,21 +142805,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -153354,44 +142833,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + RotateVoiceProfileOutboundCredentialInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RotateVoiceProfileOutboundCredentialInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -153399,16 +142876,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -153428,24 +142905,114 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJsonissuesItem; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct RotateVoiceProfileOutboundCredentialRequest { + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + #[serde(rename = "mode")] + pub mode: VoiceOutboundCredentialRotationMode, + } + impl<'de> serde::Deserialize<'de> for RotateVoiceProfileOutboundCredentialRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["expectedVersion", "mode"])?; + RotateVoiceProfileOutboundCredentialRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + RotateVoiceProfileOutboundCredentialRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for RotateVoiceProfileOutboundCredentialRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + RotateVoiceProfileOutboundCredentialRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum VoiceOutboundCredentialRotationMode { + #[serde(rename = "normal")] + Normal, + #[serde(rename = "emergency")] + Emergency, + } + impl std::fmt::Display for VoiceOutboundCredentialRotationMode { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + VoiceOutboundCredentialRotationMode::Normal => "normal", + VoiceOutboundCredentialRotationMode::Emergency => "emergency", + }, + ) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct RotateVoiceProfileOutboundCredentialResponse { + #[serde(rename = "password")] + pub password: Option, + #[serde(rename = "previousPasswordValidUntil")] + pub previous_password_valid_until: Option, + #[serde( + rename = "profileVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub profile_version: i64, + } + impl<'de> serde::Deserialize<'de> for RotateVoiceProfileOutboundCredentialResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &["password", "previousPasswordValidUntil", "profileVersion"], + )?; + RotateVoiceProfileOutboundCredentialResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + RotateVoiceProfileOutboundCredentialResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for RotateVoiceProfileOutboundCredentialResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + RotateVoiceProfileOutboundCredentialResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -153454,7 +143021,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson, + RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -153462,23 +143029,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -153491,7 +143060,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -153499,7 +143068,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -153507,33 +143076,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -153554,7 +143115,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -153573,22 +143134,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -153600,44 +143161,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem", ), ) } } } impl serde::Serialize - for RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson { + for RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1( + RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -153645,24 +143204,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -153682,69 +143233,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson { - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateWebhookSigningSecretBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RotateWebhookSigningSecretBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), RotateWebhookSigningSecretBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -153765,7 +143298,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -153773,33 +143306,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateWebhookSigningSecretBadRequestProblem::IdempotencyKeyInvalidProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/invalid-argument", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -153820,7 +143392,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -153839,21 +143411,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -153864,51 +143448,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretBadRequestProblem", ), ) } } } - impl serde::Serialize - for RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for RotateWebhookSigningSecretBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + RotateWebhookSigningSecretBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson::RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -153917,24 +143495,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -153943,6 +143513,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -153954,66 +143540,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateWebhookSigningSecretBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RevokeProjectApiKeyResponse200ApplicationJson { - #[serde(rename = "apiKey")] - pub api_key: RevokeProjectApiKeyResponse200ApplicationJsonapiKey, - } - impl<'de> serde::Deserialize<'de> for RevokeProjectApiKeyResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["apiKey"])?; - RevokeProjectApiKeyResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - RevokeProjectApiKeyResponse200ApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for RevokeProjectApiKeyResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RevokeProjectApiKeyResponse200ApplicationJson::serialize(self, serializer) - } - } - pub use self::CreateProjectApiKeyResponse201ApplicationJsonapiKey as RevokeProjectApiKeyResponse200ApplicationJsonapiKey; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RevokeProjectApiKeyResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RevokeProjectApiKeyResponse403ApplicationProblemPlusJson { - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum RotateWebhookSigningSecretForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RevokeProjectApiKeyResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for RotateWebhookSigningSecretForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), RevokeProjectApiKeyResponse403ApplicationProblemPlusJson), + ((usize, u32), RotateWebhookSigningSecretForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -154027,25 +143574,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -154065,7 +143602,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -154082,18 +143619,63 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + RotateWebhookSigningSecretForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -154106,7 +143688,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -154114,7 +143696,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RotateWebhookSigningSecretForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -154131,24 +143713,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -154169,7 +143743,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( + RotateWebhookSigningSecretForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -154202,6 +143776,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -154220,51 +143804,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretForbiddenProblem", ), ) } } } - impl serde::Serialize for RevokeProjectApiKeyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for RotateWebhookSigningSecretForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + RotateWebhookSigningSecretForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + RotateWebhookSigningSecretForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeProjectApiKeyResponse403ApplicationProblemPlusJson::RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( + RotateWebhookSigningSecretForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -154273,16 +143869,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -154291,23 +143887,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -154326,65 +143914,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeProjectApiKeyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateWebhookSigningSecretForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum RevokeProjectApiKeyResponse404ApplicationProblemPlusJson { - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum RotateWebhookSigningSecretGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RevokeProjectApiKeyResponse404ApplicationProblemPlusJson { + for RotateWebhookSigningSecretGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), RevokeProjectApiKeyResponse404ApplicationProblemPlusJson), + ((usize, u32), RotateWebhookSigningSecretGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-not-found", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -154405,7 +143979,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson::RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -154413,33 +143987,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("API_KEY_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("API Key Not Found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/api-key-not-found", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -154460,7 +144026,7 @@ pub mod types { if replace { selected = Some(( rank, - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson::RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -154479,21 +144045,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-not-found") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("API_KEY_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("API Key Not Found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/api-key-not-found") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -154504,49 +144070,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeProjectApiKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RevokeProjectApiKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for RevokeProjectApiKeyResponse404ApplicationProblemPlusJson { + impl serde::Serialize for RotateWebhookSigningSecretGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson::RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RevokeProjectApiKeyResponse404ApplicationProblemPlusJson::RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -154554,23 +144112,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -154589,115 +144139,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RevokeProjectApiKeyResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateWebhookSigningSecretGatewayTimeoutProblem", ), ) } } } - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_api_key_not_found_0af29523_de", - serialize_with = "const_api_key_not_found_0af29523_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, + pub struct RotateWebhookSigningSecretRequest { + ///Default: `86400`. #[serde( - rename = "remediation", + rename = "overlapSeconds", default, skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_api_key_not_found_de", - serialize_with = "const_api_key_not_found_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_api_key_not_found_de", - serialize_with = "const_https_photon_codes_docs_problems_api_key_not_found_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as RevokeProjectApiKeyResponse410ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RevokeProjectApiKeyResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RevokeProjectApiKeyResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RevokeProjectApiKeyResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RevokeProjectApiKeyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RevokeProjectApiKeyResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RotateVoiceProfileOutboundCredentialRequestApplicationJson { - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", + deserialize_with = "deserialize_228516a18f025ff8", )] - pub expected_version: i64, - #[serde(rename = "mode")] - pub mode: RotateVoiceProfileOutboundCredentialRequestApplicationJsonmode, + pub overlap_seconds: Option, } - impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for RotateWebhookSigningSecretRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -154706,68 +144166,31 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >(&value, &["expectedVersion", "mode"])?; - RotateVoiceProfileOutboundCredentialRequestApplicationJson::deserialize( - value, - ) + >(&value, &["overlapSeconds"])?; + RotateWebhookSigningSecretRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - RotateVoiceProfileOutboundCredentialRequestApplicationJson::deserialize( - deserializer, - ) + RotateWebhookSigningSecretRequest::deserialize(deserializer) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialRequestApplicationJson { + impl serde::Serialize for RotateWebhookSigningSecretRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - RotateVoiceProfileOutboundCredentialRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum RotateVoiceProfileOutboundCredentialRequestApplicationJsonmode { - #[serde(rename = "normal")] - Normal, - #[serde(rename = "emergency")] - Emergency, - } - impl std::fmt::Display - for RotateVoiceProfileOutboundCredentialRequestApplicationJsonmode { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - RotateVoiceProfileOutboundCredentialRequestApplicationJsonmode::Normal => { - "normal" - } - RotateVoiceProfileOutboundCredentialRequestApplicationJsonmode::Emergency => { - "emergency" - } - }, - ) + RotateWebhookSigningSecretRequest::serialize(self, serializer) } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct RotateVoiceProfileOutboundCredentialResponse200ApplicationJson { - #[serde(rename = "password")] - pub password: Option, - #[serde(rename = "previousPasswordValidUntil")] - pub previous_password_valid_until: Option, - #[serde( - rename = "profileVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub profile_version: i64, + pub struct RotateWebhookSigningSecretResponse { + #[serde(rename = "previousSecretExpiresAt")] + pub previous_secret_expires_at: Option, + #[serde(rename = "signingSecret")] + pub signing_secret: String, } - impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse200ApplicationJson { + impl<'de> serde::Deserialize<'de> for RotateWebhookSigningSecretResponse { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -154776,91 +144199,61 @@ pub mod types { let value = serde_json::Value::deserialize(deserializer)?; super::support::check_known_members::< D::Error, - >( - &value, - &["password", "previousPasswordValidUntil", "profileVersion"], - )?; - RotateVoiceProfileOutboundCredentialResponse200ApplicationJson::deserialize( - value, - ) + >(&value, &["previousSecretExpiresAt", "signingSecret"])?; + RotateWebhookSigningSecretResponse::deserialize(value) .map_err(serde::de::Error::custom) } else { - RotateVoiceProfileOutboundCredentialResponse200ApplicationJson::deserialize( - deserializer, - ) + RotateWebhookSigningSecretResponse::deserialize(deserializer) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse200ApplicationJson { + impl serde::Serialize for RotateWebhookSigningSecretResponse { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - RotateVoiceProfileOutboundCredentialResponse200ApplicationJson::serialize( - self, - serializer, - ) + RotateWebhookSigningSecretResponse::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson { - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0( - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, - ), - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1( - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum RotateWebhookSigningSecretUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson { + for RotateWebhookSigningSecretUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), RotateWebhookSigningSecretUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -154873,7 +144266,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -154881,7 +144274,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -154889,33 +144282,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -154936,7 +144321,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -154955,24 +144340,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -154984,52 +144367,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union RotateWebhookSigningSecretUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson { + impl serde::Serialize for RotateWebhookSigningSecretUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0( + RotateWebhookSigningSecretUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1( + RotateWebhookSigningSecretUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -155037,24 +144409,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -155074,122 +144438,330 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union RotateWebhookSigningSecretUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SharedLineAssignment { + #[serde(rename = "assignedPhoneNumber")] + pub assigned_phone_number: String, + #[serde(rename = "assignmentId")] + pub assignment_id: String, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "email", default, skip_serializing_if = "Option::is_none")] + pub email: Option, + #[serde(rename = "firstName", default, skip_serializing_if = "Option::is_none")] + pub first_name: Option, + #[serde(rename = "handle")] + pub handle: String, + #[serde(rename = "lastName", default, skip_serializing_if = "Option::is_none")] + pub last_name: Option, + #[serde(rename = "platform")] + pub platform: SharedLineAssignmentPlatform, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde(rename = "releasedAt", default, skip_serializing_if = "Option::is_none")] + pub released_at: Option, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for SharedLineAssignment { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "assignedPhoneNumber", + "assignmentId", + "createdAt", + "email", + "firstName", + "handle", + "lastName", + "platform", + "projectId", + "releasedAt", + "updatedAt", + ], + )?; + SharedLineAssignment::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SharedLineAssignment::deserialize(deserializer) + } + } + } + impl serde::Serialize for SharedLineAssignment { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SharedLineAssignment::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum SharedLineAssignmentPlatform { + ///`imessage` + Imessage, + ///`whatsapp` + Whatsapp, + /// A value this version of the client does not know, kept as received. + Unknown(String), + } + impl SharedLineAssignmentPlatform { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Imessage => "imessage", + Self::Whatsapp => "whatsapp", + Self::Unknown(value) => value, + } + } + } + impl std::fmt::Display for SharedLineAssignmentPlatform { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for SharedLineAssignmentPlatform { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } + } + impl<'de> serde::Deserialize<'de> for SharedLineAssignmentPlatform { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "imessage" => Ok(Self::Imessage), + "whatsapp" => Ok(Self::Whatsapp), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `imessage`, `whatsapp`", + ), + ) + } + _ => Ok(Self::Unknown(value)), + } + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SharedLineAssignmentPage { + #[serde(rename = "assignments")] + pub assignments: Vec, + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, + } + impl<'de> serde::Deserialize<'de> for SharedLineAssignmentPage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["assignments", "nextPageToken"])?; + SharedLineAssignmentPage::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SharedLineAssignmentPage::deserialize(deserializer) + } + } + } + impl serde::Serialize for SharedLineAssignmentPage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SharedLineAssignmentPage::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipInboundConfiguration { + #[serde(rename = "credentials")] + pub credentials: Option, + #[serde(rename = "destinationUri")] + pub destination_uri: String, + } + impl<'de> serde::Deserialize<'de> for SipInboundConfiguration { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["credentials", "destinationUri"])?; + SipInboundConfiguration::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipInboundConfiguration::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipInboundConfiguration { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipInboundConfiguration::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct SipInboundCredentials { + #[serde(rename = "username")] + pub username: String, + } + impl<'de> serde::Deserialize<'de> for SipInboundCredentials { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::(&value, &["username"])?; + SipInboundCredentials::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + SipInboundCredentials::deserialize(deserializer) + } + } + } + impl serde::Serialize for SipInboundCredentials { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + SipInboundCredentials::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct SlugTakenProblem { + #[serde( + rename = "code", + deserialize_with = "const_slug_taken_de", + serialize_with = "const_slug_taken_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde(rename = "suggestion", default, skip_serializing_if = "Option::is_none")] + pub suggestion: Option, + #[serde( + rename = "title", + deserialize_with = "const_slug_already_taken_de", + serialize_with = "const_slug_already_taken_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_slug_taken_de", + serialize_with = "const_https_photon_codes_docs_problems_slug_taken_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum SortOrder { + #[serde(rename = "asc")] + Asc, + #[serde(rename = "desc")] + Desc, + } + impl std::fmt::Display for SortOrder { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + SortOrder::Asc => "asc", + SortOrder::Desc => "desc", + }, + ) + } + } #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson { - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0( - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2( - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum StartAccountPhoneVerificationForbiddenProblem { + CaptchaRequiredProblem(Box), + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for StartAccountPhoneVerificationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), StartAccountPhoneVerificationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("CAPTCHA_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Captcha Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/captcha-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -155202,7 +144774,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1151u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -155210,7 +144782,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + StartAccountPhoneVerificationForbiddenProblem::CaptchaRequiredProblem( inner, ), )); @@ -155218,293 +144790,22 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-mismatch", - )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson { - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0( - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1( - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2( - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, - ), - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3( - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, - ), - } - impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -155524,7 +144825,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0( + StartAccountPhoneVerificationForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -155532,33 +144833,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -155579,7 +144872,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -155587,33 +144880,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -155634,7 +144919,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2( + StartAccountPhoneVerificationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -155642,33 +144927,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -155689,7 +144966,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3( + StartAccountPhoneVerificationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -155708,43 +144985,47 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("CAPTCHA_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Captcha Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/captcha-required") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -155755,58 +145036,50 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationForbiddenProblem", ), ) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson { + impl serde::Serialize for StartAccountPhoneVerificationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0( + StartAccountPhoneVerificationForbiddenProblem::CaptchaRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + StartAccountPhoneVerificationForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2( + StartAccountPhoneVerificationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3( + StartAccountPhoneVerificationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -155814,24 +145087,31 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -155840,24 +145120,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -155866,25 +145138,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -155903,74 +145165,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant1; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant2; - pub use self::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonVariant3; #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson { - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0( - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, - ), - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1( - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum StartAccountPhoneVerificationGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson { + for StartAccountPhoneVerificationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson, - ), + ((usize, u32), StartAccountPhoneVerificationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -155983,7 +145222,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -155991,7 +145230,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0( + StartAccountPhoneVerificationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -155999,33 +145238,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -156046,7 +145277,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -156065,23 +145296,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -156092,52 +145321,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson { + impl serde::Serialize for StartAccountPhoneVerificationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0( + StartAccountPhoneVerificationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -156145,25 +145363,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -156182,38 +145390,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1( - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum StartAccountPhoneVerificationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson { + for StartAccountPhoneVerificationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), StartAccountPhoneVerificationInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -156227,16 +145423,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -156249,7 +145445,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -156257,7 +145453,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + StartAccountPhoneVerificationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -156274,24 +145470,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -156312,7 +145500,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -156358,44 +145546,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union StartAccountPhoneVerificationInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson { + impl serde::Serialize for StartAccountPhoneVerificationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + StartAccountPhoneVerificationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1( + StartAccountPhoneVerificationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -156403,24 +145588,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -156440,86 +145617,128 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct StartAccountPhoneVerificationRequest { + #[serde( + rename = "captcha", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub captcha: Option, + #[serde(rename = "phoneNumber")] + pub phone_number: String, + } + impl<'de> serde::Deserialize<'de> for StartAccountPhoneVerificationRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["captcha", "phoneNumber"])?; + StartAccountPhoneVerificationRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + StartAccountPhoneVerificationRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for StartAccountPhoneVerificationRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + StartAccountPhoneVerificationRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct StartAccountPhoneVerificationResponse { + #[serde( + rename = "channel", + deserialize_with = "const_sms_de", + serialize_with = "const_sms_ser", + )] + pub channel: String, + #[serde(rename = "expiresAt")] + pub expires_at: DateTime, + #[serde(rename = "resendAvailableAt")] + pub resend_available_at: DateTime, + } + impl<'de> serde::Deserialize<'de> for StartAccountPhoneVerificationResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["channel", "expiresAt", "resendAvailableAt"])?; + StartAccountPhoneVerificationResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + StartAccountPhoneVerificationResponse::deserialize(deserializer) + } + } + } + impl serde::Serialize for StartAccountPhoneVerificationResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + StartAccountPhoneVerificationResponse::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson { - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0( - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1( - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum StartEnterpriseLoginRequest { + OrganizationEnterpriseLoginRequest(Box), + InvitationEnterpriseLoginRequest(Box), + RetryEnterpriseLoginRequest(Box), } - impl<'de> serde::Deserialize<'de> - for RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for StartEnterpriseLoginRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + type Selected = Option<((usize, u32), StartEnterpriseLoginRequest)>; + let pass = |strict: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { + if let Some(inner) = (|| -> Option< + Box, + > { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1043u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -156527,54 +145746,35 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0( + StartEnterpriseLoginRequest::OrganizationEnterpriseLoginRequest( inner, ), )); } } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { + if let Some(inner) = (|| -> Option< + Box, + > { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1042u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -156582,95 +145782,97 @@ pub mod types { if replace { selected = Some(( rank, - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1( + StartEnterpriseLoginRequest::InvitationEnterpriseLoginRequest( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; + if let Some(inner) = (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1021u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + StartEnterpriseLoginRequest::RetryEnterpriseLoginRequest( + inner, + ), + )); + } } (match_count, selected) }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); + let (mut match_count, mut selected) = pass(true); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false); + match_count = count.min(1); + selected = lenient; } - if match_count == 1 { + if match_count >= 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson", + "data must match at least one typed variant of union StartEnterpriseLoginRequest", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson", + "data must match at least one typed variant of union StartEnterpriseLoginRequest", ), ) } } } - impl serde::Serialize - for RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson { + impl serde::Serialize for StartEnterpriseLoginRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1( + StartEnterpriseLoginRequest::OrganizationEnterpriseLoginRequest( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + StartEnterpriseLoginRequest::InvitationEnterpriseLoginRequest(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + StartEnterpriseLoginRequest::RetryEnterpriseLoginRequest(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -156679,24 +145881,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -156711,203 +145923,46 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count == 1 { + if match_count >= 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson", + "serialized value must match at least one typed variant of union StartEnterpriseLoginRequest", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RotateWebhookSigningSecretRequestApplicationJson { - ///Default: `86400`. - #[serde( - rename = "overlapSeconds", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_228516a18f025ff8", - )] - pub overlap_seconds: Option, - } - impl<'de> serde::Deserialize<'de> - for RotateWebhookSigningSecretRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["overlapSeconds"])?; - RotateWebhookSigningSecretRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - RotateWebhookSigningSecretRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for RotateWebhookSigningSecretRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RotateWebhookSigningSecretRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct RotateWebhookSigningSecretResponse200ApplicationJson { - #[serde(rename = "previousSecretExpiresAt")] - pub previous_secret_expires_at: Option, - #[serde(rename = "signingSecret")] - pub signing_secret: String, - } - impl<'de> serde::Deserialize<'de> - for RotateWebhookSigningSecretResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["previousSecretExpiresAt", "signingSecret"])?; - RotateWebhookSigningSecretResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - RotateWebhookSigningSecretResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for RotateWebhookSigningSecretResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - RotateWebhookSigningSecretResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson; + pub use self::CreateOrganizationSsoPortalLinkResponse as StartEnterpriseLoginResponse; #[derive(Debug, Clone)] - pub enum RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson { - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum TerminalBillingOperation { + SucceededBillingOperation(Box), + FailedBillingOperation(Box), } - impl<'de> serde::Deserialize<'de> - for RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for TerminalBillingOperation { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), TerminalBillingOperation)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("succeeded")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -156920,7 +145975,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1147u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -156928,41 +145983,23 @@ pub mod types { if replace { selected = Some(( rank, - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), + TerminalBillingOperation::SucceededBillingOperation(inner), )); } } if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-mismatch", - )) - .then(|| (|| -> Option< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + || value.get("status").and_then(serde_json::Value::as_str) + == Some("failed")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -156975,7 +146012,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1147u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -156983,9 +146020,7 @@ pub mod types { if replace { selected = Some(( rank, - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + TerminalBillingOperation::FailedBillingOperation(inner), )); } } @@ -157001,29 +146036,10 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + if value.get("status").and_then(serde_json::Value::as_str) + == Some("succeeded") + || value.get("status").and_then(serde_json::Value::as_str) + == Some("failed") { (match_count, selected) = select(true); } @@ -157034,72 +146050,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union TerminalBillingOperation", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union TerminalBillingOperation", ), ) } } } - impl serde::Serialize - for RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson { + impl serde::Serialize for TerminalBillingOperation { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson::RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + TerminalBillingOperation::SucceededBillingOperation(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + TerminalBillingOperation::FailedBillingOperation(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -157108,25 +146094,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -157145,273 +146121,69 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union TerminalBillingOperation", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteWebhookDestinationResponse404ApplicationProblemPlusJson as RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson; - pub use self::GetWebhookDestinationResponse410ApplicationProblemPlusJson as RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartAccountPhoneVerificationRequestApplicationJson { - #[serde( - rename = "captcha", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub captcha: Option, - #[serde(rename = "phoneNumber")] - pub phone_number: String, - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["captcha", "phoneNumber"])?; - StartAccountPhoneVerificationRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - StartAccountPhoneVerificationRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for StartAccountPhoneVerificationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartAccountPhoneVerificationRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartAccountPhoneVerificationRequestApplicationJsoncaptcha { - #[serde(rename = "challengeContext")] - pub challenge_context: String, - #[serde(rename = "token")] - pub token: String, - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationRequestApplicationJsoncaptcha { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["challengeContext", "token"])?; - StartAccountPhoneVerificationRequestApplicationJsoncaptcha::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - StartAccountPhoneVerificationRequestApplicationJsoncaptcha::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for StartAccountPhoneVerificationRequestApplicationJsoncaptcha { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartAccountPhoneVerificationRequestApplicationJsoncaptcha::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartAccountPhoneVerificationResponse201ApplicationJson { - #[serde( - rename = "channel", - deserialize_with = "const_sms_de", - serialize_with = "const_sms_ser", - )] - pub channel: String, - #[serde(rename = "expiresAt")] - pub expires_at: DateTime, - #[serde(rename = "resendAvailableAt")] - pub resend_available_at: DateTime, - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse201ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["channel", "expiresAt", "resendAvailableAt"])?; - StartAccountPhoneVerificationResponse201ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - StartAccountPhoneVerificationResponse201ApplicationJson::deserialize( - deserializer, - ) - } - } + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[non_exhaustive] + pub enum TimestampOrderBy { + #[serde(rename = "created_at")] + CreatedAt, + #[serde(rename = "updated_at")] + UpdatedAt, } - impl serde::Serialize for StartAccountPhoneVerificationResponse201ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartAccountPhoneVerificationResponse201ApplicationJson::serialize( - self, - serializer, + impl std::fmt::Display for TimestampOrderBy { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str( + match self { + TimestampOrderBy::CreatedAt => "created_at", + TimestampOrderBy::UpdatedAt => "updated_at", + }, ) } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson { - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1( - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3( - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, - ), + pub enum UnassignSmsLineCampaignBadRequestProblem { + SmsCampaignInvalidRequestProblem(Box), + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignSmsLineCampaignBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("CAPTCHA_REQUIRED") + == Some("SMS_CAMPAIGN_INVALID_REQUEST") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Captcha Required") + == Some("Invalid SMS campaign request") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/captcha-required", + "https://photon.codes/docs/problems/sms-campaign-invalid-request", )) - .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1151u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -157432,7 +146204,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignBadRequestProblem::SmsCampaignInvalidRequestProblem( inner, ), )); @@ -157440,27 +146212,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -157473,7 +146243,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -157481,7 +146251,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UnassignSmsLineCampaignBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -157489,33 +146259,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -157536,7 +146298,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3( + UnassignSmsLineCampaignBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -157555,37 +146317,35 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("CAPTCHA_REQUIRED") + == Some("SMS_CAMPAIGN_INVALID_REQUEST") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Captcha Required") + == Some("Invalid SMS campaign request") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/captcha-required") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some( + "https://photon.codes/docs/problems/sms-campaign-invalid-request", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) { (match_count, selected) = select(true); } @@ -157596,83 +146356,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignBadRequestProblem", ), ) } } } - impl serde::Serialize - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UnassignSmsLineCampaignBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignBadRequestProblem::SmsCampaignInvalidRequestProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UnassignSmsLineCampaignBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3( + UnassignSmsLineCampaignBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -157681,16 +146403,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -157699,24 +146421,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -157736,214 +146450,151 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignBadRequestProblem", ), ) } } } - #[derive(Debug, Clone, PartialEq, Eq)] - #[non_exhaustive] - pub enum StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider { - ///`turnstile` - Turnstile, - ///`hcaptcha` - Hcaptcha, - /// A value this version of the client does not know, kept as received. - Unknown(String), - } - impl StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider { - /// The value as it appears on the wire. - pub fn as_str(&self) -> &str { - match self { - Self::Turnstile => "turnstile", - Self::Hcaptcha => "hcaptcha", - Self::Unknown(value) => value, - } - } - } - impl std::fmt::Display - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(self.as_str()) - } - } - impl serde::Serialize - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = String::deserialize(deserializer)?; - match value.as_str() { - "turnstile" => Ok(Self::Turnstile), - "hcaptcha" => Ok(Self::Hcaptcha), - _ if super::support::is_strict() => { - Err( - serde::de::Error::invalid_value( - serde::de::Unexpected::Str(&value), - &"one of `turnstile`, `hcaptcha`", - ), - ) - } - _ => Ok(Self::Unknown(value)), - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0 { - #[serde(rename = "challengeContext")] - pub challenge_context: String, - #[serde( - rename = "code", - deserialize_with = "const_captcha_required_de", - serialize_with = "const_captcha_required_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde(rename = "provider")] - pub provider: StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0provider, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "siteKey")] - pub site_key: String, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_captcha_required_aebb016d_de", - serialize_with = "const_captcha_required_aebb016d_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_captcha_required_de", - serialize_with = "const_https_photon_codes_docs_problems_captcha_required_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "challengeContext", - "code", - "detail", - "instance", - "provider", - "remediation", - "requestId", - "siteKey", - "status", - "title", - "type", - ], - )?; - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonVariant3; - pub use self::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as StartAccountPhoneVerificationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as StartAccountPhoneVerificationResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + pub enum UnassignSmsLineCampaignConflictProblem { + ProjectClosingProblem(Box), + SmsLineUnsupportedProblem(Box), + SmsCampaignNotReadyProblem(Box), + SmsCampaignVersionConflictProblem(Box), + SmsCampaignCapacityExceededProblem(Box), + SmsCampaignReconciliationRequiredProblem( + Box, ), + SmsCampaignMutationInProgressProblem(Box), } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignSmsLineCampaignConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("PROJECT_CLOSING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Project Is Closing") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UnassignSmsLineCampaignConflictProblem::ProjectClosingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_LINE_UNSUPPORTED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("SMS line unsupported") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-line-unsupported", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UnassignSmsLineCampaignConflictProblem::SmsLineUnsupportedProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Campaign not ready") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/sms-campaign-not-ready", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -157956,7 +146607,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -157964,7 +146615,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UnassignSmsLineCampaignConflictProblem::SmsCampaignNotReadyProblem( inner, ), )); @@ -157972,33 +146623,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Assignment version conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/sms-campaign-version-conflict", )) - .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -158019,201 +146662,82 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignConflictProblem::SmsCampaignVersionConflictProblem( inner, ), )); } } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize - for StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign number capacity exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() { match_count += 1; - } - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() + let retained = if strict { + 0 } else { - serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UnassignSmsLineCampaignConflictProblem::SmsCampaignCapacityExceededProblem( + inner, + ), + )); } - })() - .is_some() - { - match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson { - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - ), - } - impl<'de> serde::Deserialize<'de> - for StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson, - ), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Campaign reconciliation required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", )) .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -158234,7 +146758,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignConflictProblem::SmsCampaignReconciliationRequiredProblem( inner, ), )); @@ -158242,33 +146766,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Assignment mutation in progress") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", )) - .then(|| (|| -> Option< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -158281,7 +146797,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1130u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -158289,7 +146805,7 @@ pub mod types { if replace { selected = Some(( rank, - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignConflictProblem::SmsCampaignMutationInProgressProblem( inner, ), )); @@ -158308,21 +146824,73 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("SMS_LINE_UNSUPPORTED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("SMS line unsupported") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/sms-line-unsupported", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_NOT_READY") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign not ready") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-not-ready", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment version conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign number capacity exhausted") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign reconciliation required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Assignment mutation in progress") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + ) { (match_count, selected) = select(true); } @@ -158333,52 +146901,56 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignConflictProblem", ), ) } } } - impl serde::Serialize - for StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UnassignSmsLineCampaignConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UnassignSmsLineCampaignConflictProblem::SmsLineUnsupportedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignConflictProblem::SmsCampaignNotReadyProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignConflictProblem::SmsCampaignVersionConflictProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignConflictProblem::SmsCampaignCapacityExceededProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignConflictProblem::SmsCampaignReconciliationRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson::StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignConflictProblem::SmsCampaignMutationInProgressProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -158386,24 +146958,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -158412,210 +146976,52 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone)] - pub enum StartEnterpriseLoginRequestApplicationJson { - StartEnterpriseLoginRequestApplicationJsonVariant0( - Box, - ), - StartEnterpriseLoginRequestApplicationJsonVariant1( - Box, - ), - StartEnterpriseLoginRequestApplicationJsonVariant2( - Box, - ), - } - impl<'de> serde::Deserialize<'de> for StartEnterpriseLoginRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), StartEnterpriseLoginRequestApplicationJson), - >; - let pass = |strict: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1043u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } - })() { + })() + .is_some() + { match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1042u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant1( - inner, - ), - )); - } } - if let Some(inner) = (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } - })() { + })() + .is_some() + { match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1021u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant2( - inner, - ), - )); - } } - (match_count, selected) - }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; - } - if match_count >= 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union StartEnterpriseLoginRequestApplicationJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match at least one typed variant of union StartEnterpriseLoginRequestApplicationJson", - ), - ) - } - } - } - impl serde::Serialize for StartEnterpriseLoginRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - StartEnterpriseLoginRequestApplicationJson::StartEnterpriseLoginRequestApplicationJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -158624,18 +147030,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -158644,18 +147048,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -158670,206 +147072,103 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match at least one typed variant of union StartEnterpriseLoginRequestApplicationJson", + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignConflictProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartEnterpriseLoginRequestApplicationJsonVariant0 { - #[serde( - rename = "invitationToken", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub invitation_token: Option, - #[serde(rename = "organizationId")] - pub organization_id: String, - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for StartEnterpriseLoginRequestApplicationJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["invitationToken", "organizationId", "returnTo"])?; - StartEnterpriseLoginRequestApplicationJsonVariant0::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - StartEnterpriseLoginRequestApplicationJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for StartEnterpriseLoginRequestApplicationJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartEnterpriseLoginRequestApplicationJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartEnterpriseLoginRequestApplicationJsonVariant1 { - #[serde(rename = "invitationToken")] - pub invitation_token: String, - #[serde(rename = "returnTo")] - pub return_to: String, - } - impl<'de> serde::Deserialize<'de> - for StartEnterpriseLoginRequestApplicationJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["invitationToken", "returnTo"])?; - StartEnterpriseLoginRequestApplicationJsonVariant1::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - StartEnterpriseLoginRequestApplicationJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for StartEnterpriseLoginRequestApplicationJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartEnterpriseLoginRequestApplicationJsonVariant1::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct StartEnterpriseLoginRequestApplicationJsonVariant2 { - #[serde(rename = "retryToken")] - pub retry_token: String, - } - impl<'de> serde::Deserialize<'de> - for StartEnterpriseLoginRequestApplicationJsonVariant2 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["retryToken"])?; - StartEnterpriseLoginRequestApplicationJsonVariant2::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - StartEnterpriseLoginRequestApplicationJsonVariant2::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for StartEnterpriseLoginRequestApplicationJsonVariant2 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - StartEnterpriseLoginRequestApplicationJsonVariant2::serialize( - self, - serializer, - ) - } - } - pub use self::CreateOrganizationSsoPortalLinkResponse200ApplicationJson as StartEnterpriseLoginResponse200ApplicationJson; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as StartEnterpriseLoginResponse400ApplicationProblemPlusJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJson as UnassignSmsLineCampaignResponse200ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as UnassignSmsLineCampaignResponse200ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as UnassignSmsLineCampaignResponse200ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as UnassignSmsLineCampaignResponse200ApplicationJsontype; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJson as UnassignSmsLineCampaignResponse202ApplicationJson; - pub use self::ConnectWhatsappBusinessResponse202ApplicationJsonerror as UnassignSmsLineCampaignResponse202ApplicationJsonerror; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsonstate as UnassignSmsLineCampaignResponse202ApplicationJsonstate; - pub use self::AssignSmsLineCampaignResponse200ApplicationJsontype as UnassignSmsLineCampaignResponse202ApplicationJsontype; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( - Box, + pub enum UnassignSmsLineCampaignForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + SmsCampaignOrganizationMismatchProblem( + Box, ), } - impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignSmsLineCampaignForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_INVALID_REQUEST") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid SMS campaign request") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UnassignSmsLineCampaignForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-invalid-request", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -158890,7 +147189,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -158898,33 +147197,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -158945,7 +147236,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -158953,33 +147244,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UnassignSmsLineCampaignForbiddenProblem::ResourceMismatchProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign belongs to another organization") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -159000,7 +147330,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( + UnassignSmsLineCampaignForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ), )); @@ -159018,35 +147348,48 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_INVALID_REQUEST") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid SMS campaign request") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-invalid-request", - ) + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign belongs to another organization") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", ) { (match_count, selected) = select(true); @@ -159058,54 +147401,66 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignForbiddenProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UnassignSmsLineCampaignForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UnassignSmsLineCampaignForbiddenProblem::InsufficientScopeProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2( + UnassignSmsLineCampaignForbiddenProblem::SmsCampaignOrganizationMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -159114,24 +147469,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -159140,24 +147487,32 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -159177,73 +147532,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( - Box, - ), + pub enum UnassignSmsLineCampaignGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignSmsLineCampaignGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -159264,7 +147596,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -159272,27 +147604,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -159305,7 +147635,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -159313,41 +147643,162 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UnassignSmsLineCampaignGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/request-timeout") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_TIMEOUT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(504i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Timeout") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/upstream-timeout") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union UnassignSmsLineCampaignGatewayTimeoutProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union UnassignSmsLineCampaignGatewayTimeoutProblem", + ), + ) + } + } + } + impl serde::Serialize for UnassignSmsLineCampaignGatewayTimeoutProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + UnassignSmsLineCampaignGatewayTimeoutProblem::RequestTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignGatewayTimeoutProblem::UpstreamTimeoutProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignGatewayTimeoutProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum UnassignSmsLineCampaignInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), + } + impl<'de> serde::Deserialize<'de> + for UnassignSmsLineCampaignInternalServerErrorProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), UnassignSmsLineCampaignInternalServerErrorProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/resource-mismatch", - )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -159368,7 +147819,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( + UnassignSmsLineCampaignInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -159376,33 +147827,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -159423,7 +147866,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( + UnassignSmsLineCampaignInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -159441,38 +147884,23 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_ORGANIZATION_MISMATCH") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign belongs to another organization") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-organization-mismatch", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -159484,102 +147912,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UnassignSmsLineCampaignInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2( + UnassignSmsLineCampaignInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3( + UnassignSmsLineCampaignInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -159587,24 +147954,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -159624,36 +147983,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3 as UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant3; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UnassignSmsLineCampaignNotFoundProblem { + SmsCampaignNotFoundProblem(Box), + SmsLineNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignSmsLineCampaignNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignNotFoundProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -159669,24 +148017,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/sms-campaign-not-found", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -159707,7 +148047,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignNotFoundProblem::SmsCampaignNotFoundProblem( inner, ), )); @@ -159724,24 +148064,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/sms-line-not-found", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -159762,7 +148094,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignNotFoundProblem::SmsLineNotFoundProblem( inner, ), )); @@ -159806,51 +148138,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignSmsLineCampaignNotFoundProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson { + impl serde::Serialize for UnassignSmsLineCampaignNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignNotFoundProblem::SmsCampaignNotFoundProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignNotFoundProblem::SmsLineNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -159859,25 +148182,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -159896,83 +148209,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( - Box, - ), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( - Box, - ), + pub enum UnassignSmsLineCampaignServiceUnavailableProblem { + SmsCampaignContextUnavailableProblem(Box), + UpstreamUnavailableProblem(Box), } impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson { + for UnassignSmsLineCampaignServiceUnavailableProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignSmsLineCampaignServiceUnavailableProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Campaign context unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-closing", + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -159993,7 +148274,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( + UnassignSmsLineCampaignServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( inner, ), )); @@ -160001,33 +148282,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") + == Some("UPSTREAM_UNAVAILABLE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(503i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") + == Some("Upstream Service Unavailable") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", + "https://photon.codes/docs/problems/upstream-unavailable", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -160048,97 +148321,170 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( + UnassignSmsLineCampaignServiceUnavailableProblem::UpstreamUnavailableProblem( inner, ), )); } } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Campaign context unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/sms-campaign-context-unavailable", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("UPSTREAM_UNAVAILABLE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(503i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Upstream Service Unavailable") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/upstream-unavailable", + ) + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union UnassignSmsLineCampaignServiceUnavailableProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union UnassignSmsLineCampaignServiceUnavailableProblem", + ), + ) + } + } + } + impl serde::Serialize for UnassignSmsLineCampaignServiceUnavailableProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + UnassignSmsLineCampaignServiceUnavailableProblem::SmsCampaignContextUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UnassignSmsLineCampaignServiceUnavailableProblem::UpstreamUnavailableProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() { match_count += 1; - let retained = if strict { - 0 + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( - inner, - ), - )); + serde_json::from_value::< + Box, + >(candidate) + .ok() } + })() + .is_some() + { + match_count += 1; } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignServiceUnavailableProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum UnassignVoiceLineProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), + } + impl<'de> serde::Deserialize<'de> for UnassignVoiceLineProfileForbiddenProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option< + ((usize, u32), UnassignVoiceLineProfileForbiddenProblem), + >; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", - )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -160158,7 +148504,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( + UnassignVoiceLineProfileForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -160166,33 +148512,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, + Box, >(candidate) .ok() } @@ -160213,7 +148551,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( + UnassignVoiceLineProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -160221,33 +148559,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, + Box, >(candidate) .ok() } @@ -160268,7 +148598,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( + UnassignVoiceLineProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -160276,33 +148606,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, + Box, >(candidate) .ok() } @@ -160323,7 +148645,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( + UnassignVoiceLineProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -160341,74 +148663,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_LINE_UNSUPPORTED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("SMS line unsupported") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-line-unsupported", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_NOT_READY") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign not ready") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-not-ready", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment version conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-version-conflict", - ) + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_MUTATION_IN_PROGRESS") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Assignment mutation in progress") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-mutation-in-progress", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CAPACITY_EXCEEDED") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign number capacity exhausted") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/sms-campaign-capacity-exceeded", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_RECONCILIATION_REQUIRED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign reconciliation required") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-reconciliation-required", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -160419,92 +148706,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileForbiddenProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UnassignVoiceLineProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4( + UnassignVoiceLineProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UnassignVoiceLineProfileForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5( + UnassignVoiceLineProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6( + UnassignVoiceLineProfileForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -160513,24 +148771,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -160539,103 +148789,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -160654,63 +148816,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant3; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant4; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant5; - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6 as UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant6; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UnassignVoiceLineProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UnassignVoiceLineProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignVoiceLineProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -160723,7 +148872,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -160731,7 +148880,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UnassignVoiceLineProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -160739,33 +148888,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -160786,7 +148927,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( + UnassignVoiceLineProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -160805,23 +148946,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -160832,44 +148971,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UnassignVoiceLineProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UnassignVoiceLineProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1( + UnassignVoiceLineProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -160877,25 +149013,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -160914,68 +149040,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UnassignVoiceLineProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson { + for UnassignVoiceLineProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson, - ), + ((usize, u32), UnassignVoiceLineProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -160996,7 +149103,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( + UnassignVoiceLineProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -161004,33 +149111,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -161051,7 +149150,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( + UnassignVoiceLineProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -161070,24 +149169,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("SMS_CAMPAIGN_CONTEXT_UNAVAILABLE") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Campaign context unavailable") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/sms-campaign-context-unavailable", - ) + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_UNAVAILABLE") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(503i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Unavailable") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-unavailable", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -161099,52 +149196,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UnassignVoiceLineProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson { + impl serde::Serialize for UnassignVoiceLineProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0( + UnassignVoiceLineProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1( + UnassignVoiceLineProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -161152,24 +149238,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -161189,68 +149267,136 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson { - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateAccountBadRequestProblem { + HttpErrorProblem(Box), + InvalidArgumentProblem(Box), + IdempotencyKeyInvalidProblem(Box), + IdempotencyKeyRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateAccountBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("HTTP_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/http-error")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateAccountBadRequestProblem::HttpErrorProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INVALID_ARGUMENT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateAccountBadRequestProblem::InvalidArgumentProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -161271,7 +149417,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( + UpdateAccountBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -161279,33 +149425,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -161326,7 +149464,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( + UpdateAccountBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -161345,21 +149483,41 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("HTTP_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Request Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/http-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/invalid-argument") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) { (match_count, selected) = select(true); } @@ -161370,51 +149528,79 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountBadRequestProblem", ), ) } } } - impl serde::Serialize - for UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAccountBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson::UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAccountBadRequestProblem::HttpErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountBadRequestProblem::IdempotencyKeyInvalidProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountBadRequestProblem::IdempotencyKeyRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -161423,24 +149609,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -161460,39 +149638,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAccountBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson { - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateAccountForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateAccountForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -161505,24 +149670,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateAccountForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -161543,7 +149743,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( + UpdateAccountForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -161551,27 +149751,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -161584,7 +149782,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -161592,7 +149790,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateAccountForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -161609,24 +149807,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -161647,9 +149837,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + UpdateAccountForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -161680,6 +149868,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -161698,54 +149896,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountForbiddenProblem", ), ) } } } - impl serde::Serialize - for UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAccountForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAccountForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -161754,16 +149961,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -161772,25 +149979,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -161809,62 +150006,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAccountForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant0 as UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UnassignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UnassignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateAccountGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateAccountGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/upstream-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -161877,7 +150060,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -161885,7 +150068,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateAccountGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -161893,33 +150076,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -161940,7 +150115,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( + UpdateAccountGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -161959,23 +150134,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -161986,44 +150159,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAccountGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAccountGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -162031,25 +150201,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -162068,69 +150228,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAccountGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson { - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateAccountInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateAccountInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -162151,7 +150290,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateAccountInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -162159,33 +150298,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -162206,7 +150337,7 @@ pub mod types { if replace { selected = Some(( rank, - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -162225,21 +150356,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -162250,52 +150383,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAccountInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAccountInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson::UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateAccountInternalServerErrorProblem::InternalErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAccountInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -162303,24 +150425,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -162340,17 +150454,15 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAccountInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct UpdateAccountRequestApplicationJson { + pub struct UpdateAccountRequest { #[serde( rename = "firstName", default, @@ -162366,7 +150478,7 @@ pub mod types { )] pub last_name: Option>, } - impl<'de> serde::Deserialize<'de> for UpdateAccountRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -162376,75 +150488,59 @@ pub mod types { super::support::check_known_members::< D::Error, >(&value, &["firstName", "lastName"])?; - UpdateAccountRequestApplicationJson::deserialize(value) + UpdateAccountRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - UpdateAccountRequestApplicationJson::deserialize(deserializer) + UpdateAccountRequest::deserialize(deserializer) } } } - impl serde::Serialize for UpdateAccountRequestApplicationJson { + impl serde::Serialize for UpdateAccountRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - UpdateAccountRequestApplicationJson::serialize(self, serializer) + UpdateAccountRequest::serialize(self, serializer) } } - pub use self::CommitAccountProfilePictureResponse200ApplicationJson as UpdateAccountResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum UpdateAccountResponse400ApplicationProblemPlusJson { - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAccountResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - UpdateAccountResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), - UpdateAccountResponse400ApplicationProblemPlusJsonVariant3( - Box, - ), + pub enum UpdateAccountUnprocessableEntityProblem { + IdempotencyKeyReusedProblem(Box), + ValidationFailedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAccountUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAccountResponse400ApplicationProblemPlusJson), + ((usize, u32), UpdateAccountUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("HTTP_ERROR") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Failed") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/http-error")) - .then(|| (|| -> Option< - Box, - > { + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -162465,7 +150561,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant0( + UpdateAccountUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -162473,31 +150569,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-argument", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -162510,7 +150600,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -162518,39 +150608,163 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant1( + UpdateAccountUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); } } + (match_count, selected) + }; + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; + } + (match_count, selected) + }; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/idempotency-key-reused") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/validation-failed") + { + (match_count, selected) = select(true); + } + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { + selected + .map(|(_, value)| value) + .ok_or_else(|| serde::de::Error::custom( + "data must match exactly one typed variant of union UpdateAccountUnprocessableEntityProblem", + )) + } else { + Err( + serde::de::Error::custom( + "data must match exactly one typed variant of union UpdateAccountUnprocessableEntityProblem", + ), + ) + } + } + } + impl serde::Serialize for UpdateAccountUnprocessableEntityProblem { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let value = match self { + UpdateAccountUnprocessableEntityProblem::IdempotencyKeyReusedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAccountUnprocessableEntityProblem::ValidationFailedProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + }; + let count = |strict: bool| -> usize { + let mut match_count = 0_usize; + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + match_count + }; + let mut match_count = count(true); + if match_count == 0 && !super::support::is_strict() { + match_count = count(false).min(1); + } + if match_count == 1 { + value.serialize(serializer) + } else { + Err( + serde::ser::Error::custom( + "serialized value must match exactly one typed variant of union UpdateAccountUnprocessableEntityProblem", + ), + ) + } + } + } + #[derive(Debug, Clone)] + pub enum UpdateAgentProfileBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + } + impl<'de> serde::Deserialize<'de> for UpdateAgentProfileBadRequestProblem { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = serde_json::Value::deserialize(deserializer)?; + type Selected = Option<((usize, u32), UpdateAgentProfileBadRequestProblem)>; + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { + let mut match_count = 0_usize; + let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -162571,7 +150785,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant2( + UpdateAgentProfileBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -162579,31 +150793,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -162624,7 +150832,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant3( + UpdateAgentProfileBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -162643,21 +150851,15 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("HTTP_ERROR") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Failed") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/http-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) @@ -162668,16 +150870,6 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) { (match_count, selected) = select(true); } @@ -162688,78 +150880,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileBadRequestProblem", ), ) } } } - impl serde::Serialize for UpdateAccountResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAgentProfileBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant0( + UpdateAgentProfileBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse400ApplicationProblemPlusJson::UpdateAccountResponse400ApplicationProblemPlusJsonVariant3( + UpdateAgentProfileBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -162768,46 +150924,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse400ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -162827,120 +150953,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAccountResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAgentProfileBadRequestProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateAccountResponse400ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_http_error_de", - serialize_with = "const_http_error_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_request_failed_de", - serialize_with = "const_request_failed_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_http_error_de", - serialize_with = "const_https_photon_codes_docs_problems_http_error_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse400ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateAccountResponse400ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateAccountResponse400ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as UpdateAccountResponse400ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as UpdateAccountResponse400ApplicationProblemPlusJsonVariant2; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as UpdateAccountResponse400ApplicationProblemPlusJsonVariant3; #[derive(Debug, Clone)] - pub enum UpdateAccountResponse403ApplicationProblemPlusJson { - UpdateAccountResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateAccountResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateAgentProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAgentProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateAccountResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateAgentProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -162953,22 +150985,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateAgentProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -162989,7 +151058,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse403ApplicationProblemPlusJson::UpdateAccountResponse403ApplicationProblemPlusJsonVariant0( + UpdateAgentProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -162997,27 +151066,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -163030,7 +151097,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -163038,7 +151105,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateAgentProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -163055,22 +151122,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -163091,7 +151152,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse403ApplicationProblemPlusJson::UpdateAccountResponse403ApplicationProblemPlusJsonVariant2( + UpdateAgentProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -163124,6 +151185,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -163142,51 +151213,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileForbiddenProblem", ), ) } } } - impl serde::Serialize for UpdateAccountResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAgentProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAccountResponse403ApplicationProblemPlusJson::UpdateAccountResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse403ApplicationProblemPlusJson::UpdateAccountResponse403ApplicationProblemPlusJsonVariant2( + UpdateAgentProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAgentProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateAgentProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAgentProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -163195,16 +151278,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -163213,23 +151296,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAccountResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -163248,145 +151323,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAccountResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAgentProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateAccountResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateAccountResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteAccountResponse404ApplicationProblemPlusJson as UpdateAccountResponse404ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateAccountResponse410ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_account_deleted_de", - serialize_with = "const_account_deleted_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_account_deleted_7029ef3c_de", - serialize_with = "const_account_deleted_7029ef3c_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_account_deleted_de", - serialize_with = "const_https_photon_codes_docs_problems_account_deleted_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse410ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UpdateAccountResponse410ApplicationProblemPlusJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateAccountResponse410ApplicationProblemPlusJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for UpdateAccountResponse410ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateAccountResponse410ApplicationProblemPlusJson::serialize( - self, - serializer, - ) - } - } - pub use self::CreateProjectResponse413ApplicationProblemPlusJson as UpdateAccountResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateAccountResponse422ApplicationProblemPlusJson { - UpdateAccountResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAccountResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateAgentProfileGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAgentProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAccountResponse422ApplicationProblemPlusJson), + ((usize, u32), UpdateAgentProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -163407,7 +151387,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse422ApplicationProblemPlusJson::UpdateAccountResponse422ApplicationProblemPlusJsonVariant0( + UpdateAgentProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -163415,31 +151395,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -163452,7 +151426,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -163460,7 +151434,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse422ApplicationProblemPlusJson::UpdateAccountResponse422ApplicationProblemPlusJsonVariant1( + UpdateAgentProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -163479,21 +151453,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/idempotency-key-reused") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -163504,49 +151478,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UpdateAccountResponse422ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAgentProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAccountResponse422ApplicationProblemPlusJson::UpdateAccountResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse422ApplicationProblemPlusJson::UpdateAccountResponse422ApplicationProblemPlusJsonVariant1( + UpdateAgentProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateAgentProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -163554,23 +151520,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAccountResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -163589,55 +151547,93 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAccountResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAgentProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UpdateAccountResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateAccountResponse422ApplicationProblemPlusJsonVariant1issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateAccountResponse422ApplicationProblemPlusJsonVariant1issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateAccountResponse422ApplicationProblemPlusJsonVariant1; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateAgentProfileRequest { + #[serde( + rename = "firstName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub first_name: Option, + #[serde( + rename = "lastName", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub last_name: Option>, + } + impl<'de> serde::Deserialize<'de> for UpdateAgentProfileRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["firstName", "lastName"])?; + UpdateAgentProfileRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateAgentProfileRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for UpdateAgentProfileRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateAgentProfileRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum UpdateAccountResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateAccountResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateAgentProfileUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateAgentProfileUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAccountResponse500ApplicationProblemPlusJson), + ((usize, u32), UpdateAgentProfileUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -163650,7 +151646,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -163658,7 +151654,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateAgentProfileUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -163666,31 +151662,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -163711,7 +151701,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse500ApplicationProblemPlusJson::UpdateAccountResponse500ApplicationProblemPlusJsonVariant1( + UpdateAgentProfileUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -163730,22 +151720,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/idempotency-key-reused", ) { (match_count, selected) = select(true); @@ -163757,43 +151747,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateAgentProfileUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for UpdateAccountResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UpdateAgentProfileUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAccountResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateAgentProfileUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse500ApplicationProblemPlusJson::UpdateAccountResponse500ApplicationProblemPlusJsonVariant1( + UpdateAgentProfileUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -163801,22 +151789,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -163836,64 +151818,54 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAccountResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateAgentProfileUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateAccountResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as UpdateAccountResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as UpdateAccountResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateAccountResponse504ApplicationProblemPlusJson { - UpdateAccountResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAccountResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum UpdateDefaultVoiceProfileConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileDirectionConfiguredProblem( + Box, ), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAccountResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateDefaultVoiceProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAccountResponse504ApplicationProblemPlusJson), + ((usize, u32), UpdateDefaultVoiceProfileConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -163914,7 +151886,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse504ApplicationProblemPlusJson::UpdateAccountResponse504ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileConflictProblem::ProjectClosingProblem( inner, ), )); @@ -163922,31 +151894,119 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Voice Profile Direction Configured") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/voice-profile-direction-configured", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateDefaultVoiceProfileConflictProblem::VoiceProfileDirectionConfiguredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateDefaultVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -163967,7 +152027,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAccountResponse504ApplicationProblemPlusJson::UpdateAccountResponse504ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileConflictProblem::VoiceOutboundOperationPendingProblem( inner, ), )); @@ -163986,21 +152046,43 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Voice Profile Direction Configured") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/voice-profile-direction-configured", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) { (match_count, selected) = select(true); } @@ -164011,48 +152093,64 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAccountResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileConflictProblem", ), ) } } } - impl serde::Serialize for UpdateAccountResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateDefaultVoiceProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAccountResponse504ApplicationProblemPlusJson::UpdateAccountResponse504ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateDefaultVoiceProfileConflictProblem::VoiceProfileDirectionConfiguredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAccountResponse504ApplicationProblemPlusJson::UpdateAccountResponse504ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateDefaultVoiceProfileConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -164061,22 +152159,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAccountResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, >(candidate) .ok() } @@ -164096,109 +152206,133 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAccountResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateAccountResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateAccountResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateAgentProfileRequestApplicationJson { + pub struct VoiceProfileDirectionConfiguredProblem { #[serde( - rename = "firstName", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", + rename = "code", + deserialize_with = "const_voice_profile_direction_configured_de", + serialize_with = "const_voice_profile_direction_configured_ser", )] - pub first_name: Option, + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, #[serde( - rename = "lastName", + rename = "remediation", default, skip_serializing_if = "Option::is_none", deserialize_with = "deserialize_request_field", )] - pub last_name: Option>, - } - impl<'de> serde::Deserialize<'de> for UpdateAgentProfileRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["firstName", "lastName"])?; - UpdateAgentProfileRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateAgentProfileRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for UpdateAgentProfileRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateAgentProfileRequestApplicationJson::serialize(self, serializer) - } + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_voice_profile_direction_configured_107748a8_de", + serialize_with = "const_voice_profile_direction_configured_107748a8_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_direction_configured_de", + serialize_with = "const_https_photon_codes_docs_problems_voice_profile_direction_configured_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, } - pub use self::GetAgentProfileResponse200ApplicationJson as UpdateAgentProfileResponse200ApplicationJson; #[derive(Debug, Clone)] - pub enum UpdateAgentProfileResponse400ApplicationProblemPlusJson { - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateDefaultVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAgentProfileResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateDefaultVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAgentProfileResponse400ApplicationProblemPlusJson), + ((usize, u32), UpdateDefaultVoiceProfileForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Forbidden") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateDefaultVoiceProfileForbiddenProblem::ForbiddenProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -164219,7 +152353,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse400ApplicationProblemPlusJson::UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -164227,33 +152361,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -164274,7 +152400,54 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse400ApplicationProblemPlusJson::UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -164292,26 +152465,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/organization-sso-required", ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -164322,48 +152508,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize for UpdateAgentProfileResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UpdateDefaultVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAgentProfileResponse400ApplicationProblemPlusJson::UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateDefaultVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAgentProfileResponse400ApplicationProblemPlusJson::UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateDefaultVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -164372,22 +152573,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -164396,6 +152591,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -164407,115 +152618,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAgentProfileResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as UpdateAgentProfileResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UpdateAgentProfileResponse403ApplicationProblemPlusJson { - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateDefaultVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateAgentProfileResponse403ApplicationProblemPlusJson { + for UpdateDefaultVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAgentProfileResponse403ApplicationProblemPlusJson), + ((usize, u32), UpdateDefaultVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateAgentProfileResponse403ApplicationProblemPlusJson::UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -164528,7 +152675,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -164536,7 +152683,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -164544,33 +152691,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -164591,7 +152730,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse403ApplicationProblemPlusJson::UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -164609,29 +152748,22 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -164642,70 +152774,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UpdateAgentProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateDefaultVoiceProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAgentProfileResponse403ApplicationProblemPlusJson::UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAgentProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateDefaultVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAgentProfileResponse403ApplicationProblemPlusJson::UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateDefaultVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -164713,23 +152816,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -164748,68 +152843,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAgentProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateAgentProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as UpdateAgentProfileResponse404ApplicationProblemPlusJson; - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as UpdateAgentProfileResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as UpdateAgentProfileResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateAgentProfileResponse422ApplicationProblemPlusJson { - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateDefaultVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateAgentProfileResponse422ApplicationProblemPlusJson { + for UpdateDefaultVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAgentProfileResponse422ApplicationProblemPlusJson), + ((usize, u32), UpdateDefaultVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/validation-failed", - )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -164822,7 +152898,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -164830,7 +152906,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse422ApplicationProblemPlusJson::UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -164838,33 +152914,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -164885,7 +152953,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse422ApplicationProblemPlusJson::UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -164904,22 +152972,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/invalid-auth-context", ) { (match_count, selected) = select(true); @@ -164931,49 +152999,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for UpdateAgentProfileResponse422ApplicationProblemPlusJson { + impl serde::Serialize for UpdateDefaultVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAgentProfileResponse422ApplicationProblemPlusJson::UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0( + UpdateDefaultVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAgentProfileResponse422ApplicationProblemPlusJson::UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1( + UpdateDefaultVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -164981,22 +153041,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -165016,69 +153070,99 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAgentProfileResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UpdateAgentProfileResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateAgentProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateAgentProfileResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateDefaultVoiceProfileRequest { + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + #[serde( + rename = "mediaEncryption", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub media_encryption: Option, + #[serde( + rename = "protocol", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "const_sip_de_present", + serialize_with = "const_sip_ser", + )] + pub protocol: Option, + } + impl<'de> serde::Deserialize<'de> for UpdateDefaultVoiceProfileRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["expectedVersion", "mediaEncryption", "protocol"])?; + UpdateDefaultVoiceProfileRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateDefaultVoiceProfileRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for UpdateDefaultVoiceProfileRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateDefaultVoiceProfileRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum UpdateAgentProfileResponse504ApplicationProblemPlusJson { - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateOrganizationSsoPolicyBadRequestProblem { + InvalidReturnToProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateAgentProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateOrganizationSsoPolicyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateAgentProfileResponse504ApplicationProblemPlusJson), + ((usize, u32), UpdateOrganizationSsoPolicyBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-return-to", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -165099,7 +153183,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse504ApplicationProblemPlusJson::UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateOrganizationSsoPolicyBadRequestProblem::InvalidReturnToProblem( inner, ), )); @@ -165107,33 +153191,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -165154,7 +153230,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateAgentProfileResponse504ApplicationProblemPlusJson::UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -165173,21 +153249,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_RETURN_TO") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Return To") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/invalid-return-to") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -165198,49 +153274,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateAgentProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyBadRequestProblem", ), ) } } } - impl serde::Serialize for UpdateAgentProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateAgentProfileResponse504ApplicationProblemPlusJson::UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateOrganizationSsoPolicyBadRequestProblem::InvalidReturnToProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateAgentProfileResponse504ApplicationProblemPlusJson::UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -165248,23 +153316,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -165283,126 +153343,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateAgentProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateAgentProfileResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateDefaultVoiceProfileRequestApplicationJson { - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - #[serde( - rename = "mediaEncryption", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub media_encryption: Option< - UpdateDefaultVoiceProfileRequestApplicationJsonmediaEncryption, - >, - #[serde( - rename = "protocol", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "const_sip_de_present", - serialize_with = "const_sip_ser", - )] - pub protocol: Option, - } - impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["expectedVersion", "mediaEncryption", "protocol"])?; - UpdateDefaultVoiceProfileRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateDefaultVoiceProfileRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for UpdateDefaultVoiceProfileRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateDefaultVoiceProfileRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum UpdateDefaultVoiceProfileRequestApplicationJsonmediaEncryption { - #[serde(rename = "auto")] - Auto, - #[serde(rename = "srtp")] - Srtp, - } - impl std::fmt::Display - for UpdateDefaultVoiceProfileRequestApplicationJsonmediaEncryption { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - UpdateDefaultVoiceProfileRequestApplicationJsonmediaEncryption::Auto => { - "auto" - } - UpdateDefaultVoiceProfileRequestApplicationJsonmediaEncryption::Srtp => { - "srtp" - } - }, - ) - } - } - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJson as UpdateDefaultVoiceProfileResponse200ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as UpdateDefaultVoiceProfileResponse200ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as UpdateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption; #[derive(Debug, Clone)] - pub enum UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateOrganizationSsoPolicyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateOrganizationSsoPolicyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateOrganizationSsoPolicyForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -165416,25 +153376,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -165454,7 +153404,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + UpdateOrganizationSsoPolicyForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -165471,18 +153421,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -165495,7 +153443,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -165503,7 +153451,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateOrganizationSsoPolicyForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -165511,33 +153459,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -165558,7 +153498,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateOrganizationSsoPolicyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -165592,13 +153532,15 @@ pub mod types { && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) { (match_count, selected) = select(true); } @@ -165609,72 +153551,60 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyForbiddenProblem", ), ) } } } - impl serde::Serialize - for UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateOrganizationSsoPolicyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateOrganizationSsoPolicyForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateOrganizationSsoPolicyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -165683,24 +153613,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -165720,185 +153642,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), + pub enum UpdateOrganizationSsoPolicyGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { + for UpdateOrganizationSsoPolicyGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateOrganizationSsoPolicyGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Direction Configured") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-direction-configured", - )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -165919,7 +153707,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( + UpdateOrganizationSsoPolicyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -165927,33 +153715,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -165974,7 +153754,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( + UpdateOrganizationSsoPolicyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -165993,43 +153773,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Direction Configured") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-direction-configured", - ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -166040,110 +153798,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( + UpdateOrganizationSsoPolicyGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( + UpdateOrganizationSsoPolicyGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -166151,25 +153840,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -166188,121 +153867,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_voice_profile_direction_configured_de", - serialize_with = "const_voice_profile_direction_configured_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_voice_profile_direction_configured_107748a8_de", - serialize_with = "const_voice_profile_direction_configured_107748a8_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_voice_profile_direction_configured_de", - serialize_with = "const_https_photon_codes_docs_problems_voice_profile_direction_configured_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant2; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant3; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateOrganizationSsoPolicyInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + for UpdateOrganizationSsoPolicyInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateOrganizationSsoPolicyInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -166316,16 +153900,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -166338,7 +153922,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -166346,7 +153930,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateOrganizationSsoPolicyInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -166363,24 +153947,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -166401,7 +153977,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -166447,44 +154023,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateOrganizationSsoPolicyInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -166492,24 +154065,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -166529,69 +154094,55 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, + pub enum UpdateOrganizationSsoPolicyPreconditionFailedProblem { + OrganizationSsoPreconditionFailedProblem( + Box, ), + SsoSubscriptionRequiredProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + for UpdateOrganizationSsoPolicyPreconditionFailedProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateOrganizationSsoPolicyPreconditionFailedProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/organization-sso-precondition-failed", )) .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, > { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -166612,7 +154163,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateOrganizationSsoPolicyPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ), )); @@ -166620,33 +154171,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/sso-subscription-required", )) - .then(|| (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -166667,7 +154210,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ), )); @@ -166686,21 +154229,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("ORGANIZATION_SSO_PRECONDITION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Organization SSO Precondition Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/organization-sso-precondition-failed", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("SSO_SUBSCRIPTION_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(412i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("SSO Subscription Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/sso-subscription-required", + ) { (match_count, selected) = select(true); } @@ -166711,51 +154258,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyPreconditionFailedProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyPreconditionFailedProblem", ), ) } } } - impl serde::Serialize - for UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyPreconditionFailedProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateOrganizationSsoPolicyPreconditionFailedProblem::OrganizationSsoPreconditionFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson::UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateOrganizationSsoPolicyPreconditionFailedProblem::SsoSubscriptionRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -166764,24 +154302,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -166801,24 +154331,21 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyPreconditionFailedProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct UpdateOrganizationSsoPolicyRequestApplicationJson { + pub struct UpdateOrganizationSsoPolicyRequest { #[serde(rename = "expectedVersion")] pub expected_version: String, #[serde(rename = "ssoJitEnabled")] pub sso_jit_enabled: bool, } - impl<'de> serde::Deserialize<'de> - for UpdateOrganizationSsoPolicyRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for UpdateOrganizationSsoPolicyRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -166828,85 +154355,105 @@ pub mod types { super::support::check_known_members::< D::Error, >(&value, &["expectedVersion", "ssoJitEnabled"])?; - UpdateOrganizationSsoPolicyRequestApplicationJson::deserialize(value) + UpdateOrganizationSsoPolicyRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - UpdateOrganizationSsoPolicyRequestApplicationJson::deserialize( - deserializer, - ) + UpdateOrganizationSsoPolicyRequest::deserialize(deserializer) } } } - impl serde::Serialize for UpdateOrganizationSsoPolicyRequestApplicationJson { + impl serde::Serialize for UpdateOrganizationSsoPolicyRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - UpdateOrganizationSsoPolicyRequestApplicationJson::serialize( - self, - serializer, - ) + UpdateOrganizationSsoPolicyRequest::serialize(self, serializer) } } - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJson as UpdateOrganizationSsoPolicyResponse200ApplicationJson; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsonconnectionState as UpdateOrganizationSsoPolicyResponse200ApplicationJsonconnectionState; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItemstate as UpdateOrganizationSsoPolicyResponse200ApplicationJsondomainsItemstate; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsondomainsItem as UpdateOrganizationSsoPolicyResponse200ApplicationJsondomainsItem; - pub use self::GetOrganizationSsoConfigurationResponse200ApplicationJsonpolicySyncStatus as UpdateOrganizationSsoPolicyResponse200ApplicationJsonpolicySyncStatus; #[derive(Debug, Clone)] - pub enum UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson { - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateProjectApiKeyBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateProjectApiKeyBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-return-to", + "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -166927,7 +154474,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0( + UpdateProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -166944,24 +154491,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -166982,7 +154521,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1( + UpdateProjectApiKeyBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -167001,13 +154540,25 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_RETURN_TO") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Return To") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-return-to") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_INVALID") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(400i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Invalid") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) @@ -167026,51 +154577,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyBadRequestProblem", ), ) } } } - impl serde::Serialize - for UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectApiKeyBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0( + UpdateProjectApiKeyBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1( + UpdateProjectApiKeyBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectApiKeyBadRequestProblem::InvalidArgumentProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -167079,24 +154624,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -167105,6 +154642,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -167116,34 +154669,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectApiKeyBadRequestProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant0 as UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant0; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson { - PhotonProblemForbidden403(Box), - AuthorizationProblemInsufficientScope403( - Box, - ), + pub enum UpdateProjectApiKeyForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateProjectApiKeyForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -167156,16 +154701,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateProjectApiKeyForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -167178,7 +154766,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -167186,7 +154774,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( + UpdateProjectApiKeyForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -167194,27 +154782,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -167227,7 +154813,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -167235,7 +154821,54 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/resource-mismatch", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateProjectApiKeyForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -167268,6 +154901,24 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("RESOURCE_MISMATCH") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Resource Mismatch") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -167278,43 +154929,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyForbiddenProblem", ), ) } } } - impl serde::Serialize - for UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectApiKeyForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson::PhotonProblemForbidden403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateProjectApiKeyForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectApiKeyForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectApiKeyForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectApiKeyForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -167323,16 +154994,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -167341,6 +155012,22 @@ pub mod types { { match_count += 1; } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } match_count }; let mut match_count = count(true); @@ -167352,60 +155039,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectApiKeyForbiddenProblem", ), ) } } } - pub use self::BeginInvitationSsoResponse404ApplicationProblemPlusJson as UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse409ApplicationProblemPlusJson as UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson; - pub use self::BeginInvitationSsoResponse412ApplicationProblemPlusJson as UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateProjectApiKeyNotFoundProblem { + ProjectNotFoundProblem(Box), + ApiKeyNotFoundProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyNotFoundProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UpdateProjectApiKeyNotFoundProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("PROJECT_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Project Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/project-not-found", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -167418,7 +155093,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -167426,7 +155101,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateProjectApiKeyNotFoundProblem::ProjectNotFoundProblem( inner, ), )); @@ -167434,33 +155109,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("API_KEY_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("API Key Not Found") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/api-key-not-found", )) - .then(|| (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -167481,7 +155148,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1( + UpdateProjectApiKeyNotFoundProblem::ApiKeyNotFoundProblem( inner, ), )); @@ -167500,23 +155167,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("PROJECT_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Project Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/project-not-found") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("API_KEY_NOT_FOUND") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(404i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("API Key Not Found") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/api-key-not-found") { (match_count, selected) = select(true); } @@ -167527,44 +155192,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyNotFoundProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyNotFoundProblem", ), ) } } } - impl serde::Serialize - for UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectApiKeyNotFoundProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectApiKeyNotFoundProblem::ProjectNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectApiKeyNotFoundProblem::ApiKeyNotFoundProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -167572,25 +155234,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -167609,69 +155261,81 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectApiKeyNotFoundProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateProjectApiKeyRequest { + #[serde(rename = "permissions")] + pub permissions: Vec, + } + impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["permissions"])?; + UpdateProjectApiKeyRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateProjectApiKeyRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for UpdateProjectApiKeyRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateProjectApiKeyRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson { - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateProjectApiKeyUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateProjectApiKeyUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -167684,7 +155348,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1088u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -167692,7 +155356,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0( + UpdateProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -167700,33 +155364,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -167747,7 +155403,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1( + UpdateProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -167766,21 +155422,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("VALIDATION_FAILED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Request Validation Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/validation-failed") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("IDEMPOTENCY_KEY_REUSED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(422i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Idempotency Key Reused") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) { (match_count, selected) = select(true); } @@ -167791,52 +155449,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectApiKeyUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectApiKeyUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0( + UpdateProjectApiKeyUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson::UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1( + UpdateProjectApiKeyUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -167844,24 +155491,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -167881,111 +155520,24 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectApiKeyUnprocessableEntityProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateProjectApiKeyRequestApplicationJson { - #[serde(rename = "permissions")] - pub permissions: Vec, - } - impl<'de> serde::Deserialize<'de> for UpdateProjectApiKeyRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["permissions"])?; - UpdateProjectApiKeyRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateProjectApiKeyRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for UpdateProjectApiKeyRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateProjectApiKeyRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum UpdateProjectApiKeyRequestApplicationJsonpermissionsItem { - #[serde(rename = "events:read")] - EventsRead, - #[serde(rename = "events:write")] - EventsWrite, - #[serde(rename = "platforms:read")] - PlatformsRead, - #[serde(rename = "platforms:write")] - PlatformsWrite, - #[serde(rename = "project:read")] - ProjectRead, - #[serde(rename = "project:write")] - ProjectWrite, - } - impl std::fmt::Display for UpdateProjectApiKeyRequestApplicationJsonpermissionsItem { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::EventsRead => { - "events:read" - } - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::EventsWrite => { - "events:write" - } - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::PlatformsRead => { - "platforms:read" - } - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::PlatformsWrite => { - "platforms:write" - } - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::ProjectRead => { - "project:read" - } - UpdateProjectApiKeyRequestApplicationJsonpermissionsItem::ProjectWrite => { - "project:write" - } - }, - ) - } - } - pub use self::RevokeProjectApiKeyResponse200ApplicationJson as UpdateProjectApiKeyResponse200ApplicationJson; - pub use self::CreateProjectApiKeyResponse201ApplicationJsonapiKey as UpdateProjectApiKeyResponse200ApplicationJsonapiKey; #[derive(Debug, Clone)] - pub enum UpdateProjectApiKeyResponse400ApplicationProblemPlusJson { - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateProjectBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectApiKeyResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateProjectApiKeyResponse400ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateProjectBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -168000,24 +155552,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-required", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -168038,7 +155582,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( + UpdateProjectBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -168055,24 +155599,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -168093,62 +155629,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-argument", - )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( + UpdateProjectBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -168186,14 +155667,6 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-invalid", ) - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ARGUMENT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Argument") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -168204,51 +155677,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectBadRequestProblem", ), ) } } } - impl serde::Serialize for UpdateProjectApiKeyResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse400ApplicationProblemPlusJson::UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectBadRequestProblem::IdempotencyKeyRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectBadRequestProblem::IdempotencyKeyInvalidProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -168257,46 +155721,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -168316,37 +155750,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectApiKeyResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant1; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum UpdateProjectApiKeyResponse403ApplicationProblemPlusJson { - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateProjectForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectApiKeyResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateProjectApiKeyResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateProjectForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -168359,24 +155782,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateProjectForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -168397,7 +155855,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( + UpdateProjectForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -168405,27 +155863,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -168438,7 +155894,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -168446,7 +155902,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateProjectForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -168463,24 +155919,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -168501,9 +155949,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( - inner, - ), + UpdateProjectForbiddenProblem::ResourceMismatchProblem(inner), )); } } @@ -168534,6 +155980,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -168552,51 +156008,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectForbiddenProblem", ), ) } } } - impl serde::Serialize for UpdateProjectApiKeyResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse403ApplicationProblemPlusJson::UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectForbiddenProblem::OrganizationSsoRequiredProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -168605,16 +156073,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -168623,23 +156091,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -168658,65 +156118,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectApiKeyResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum UpdateProjectApiKeyResponse404ApplicationProblemPlusJson { - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateProjectGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectApiKeyResponse404ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateProjectApiKeyResponse404ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateProjectGatewayTimeoutProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Not Found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/project-not-found", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -168737,7 +156180,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson::UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( + UpdateProjectGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -168745,33 +156188,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("API_KEY_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("API Key Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/api-key-not-found", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -168792,7 +156227,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson::UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( + UpdateProjectGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -168811,21 +156246,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_NOT_FOUND") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Not Found") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-not-found") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("API_KEY_NOT_FOUND") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(404i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("API Key Not Found") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/api-key-not-found") + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -168836,49 +156271,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse404ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UpdateProjectApiKeyResponse404ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson::UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse404ApplicationProblemPlusJson::UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateProjectGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateProjectGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -168886,23 +156313,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -168921,116 +156340,54 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectApiKeyResponse404ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectGatewayTimeoutProblem", ), ) } } } - pub use self::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson as UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant0; - pub use self::RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1 as UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct UpdateProjectApiKeyResponse409ApplicationProblemPlusJson { - #[serde( - rename = "code", - deserialize_with = "const_api_key_revoked_de77a00f_de", - serialize_with = "const_api_key_revoked_de77a00f_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_api_key_revoked_de", - serialize_with = "const_api_key_revoked_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_api_key_revoked_de", - serialize_with = "const_https_photon_codes_docs_problems_api_key_revoked_ser", - )] - pub r#type: String, + pub struct UpdateProjectRequest { + #[serde(rename = "name")] + pub name: String, } - impl<'de> serde::Deserialize<'de> - for UpdateProjectApiKeyResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { if super::support::is_strict() { let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UpdateProjectApiKeyResponse409ApplicationProblemPlusJson::deserialize( - value, - ) + super::support::check_known_members::(&value, &["name"])?; + UpdateProjectRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - UpdateProjectApiKeyResponse409ApplicationProblemPlusJson::deserialize( - deserializer, - ) + UpdateProjectRequest::deserialize(deserializer) } } } - impl serde::Serialize for UpdateProjectApiKeyResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - UpdateProjectApiKeyResponse409ApplicationProblemPlusJson::serialize( - self, - serializer, - ) + UpdateProjectRequest::serialize(self, serializer) } } - pub use self::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson as UpdateProjectApiKeyResponse410ApplicationProblemPlusJson; - pub use self::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson as UpdateProjectApiKeyResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateProjectApiKeyResponse422ApplicationProblemPlusJson { - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateProjectUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectApiKeyResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateProjectUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateProjectApiKeyResponse422ApplicationProblemPlusJson), + ((usize, u32), UpdateProjectUnprocessableEntityProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -169046,24 +156403,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/validation-failed", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169084,7 +156433,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson::UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( + UpdateProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); @@ -169101,24 +156450,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/idempotency-key-reused", )) - .then(|| (|| -> Option< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -169139,7 +156480,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson::UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( + UpdateProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -169185,49 +156526,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectApiKeyResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateProjectUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize for UpdateProjectApiKeyResponse422ApplicationProblemPlusJson { + impl serde::Serialize for UpdateProjectUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson::UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0( + UpdateProjectUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectApiKeyResponse422ApplicationProblemPlusJson::UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1( + UpdateProjectUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -169235,22 +156568,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -169270,100 +156597,52 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectApiKeyResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateProjectUnprocessableEntityProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateProjectApiKeyResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateProjectApiKeyResponse504ApplicationProblemPlusJson; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateProjectRequestApplicationJson { - #[serde(rename = "name")] - pub name: String, - } - impl<'de> serde::Deserialize<'de> for UpdateProjectRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["name"])?; - UpdateProjectRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateProjectRequestApplicationJson::deserialize(deserializer) - } - } - } - impl serde::Serialize for UpdateProjectRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateProjectRequestApplicationJson::serialize(self, serializer) - } - } - pub use self::CreateProjectResponse201ApplicationJson as UpdateProjectResponse200ApplicationJson; - pub use self::CommitAgentProfileAvatarResponse200ApplicationJson as UpdateProjectResponse200ApplicationJsonagentProfile; - pub use self::CreateProjectResponse201ApplicationJsonbillingInitialization as UpdateProjectResponse200ApplicationJsonbillingInitialization; - pub use self::CreateProjectResponse201ApplicationJsoncreatedByActorKind as UpdateProjectResponse200ApplicationJsoncreatedByActorKind; #[derive(Debug, Clone)] - pub enum UpdateProjectResponse400ApplicationProblemPlusJson { - UpdateProjectResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectResponse400ApplicationProblemPlusJsonVariant1( - Box, + pub enum UpdateVoiceProfileConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileDirectionConfiguredProblem( + Box, ), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateProjectResponse400ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateVoiceProfileConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-required", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169384,7 +156663,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse400ApplicationProblemPlusJson::UpdateProjectResponse400ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileConflictProblem::ProjectClosingProblem( inner, ), )); @@ -169392,31 +156671,119 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Profile Direction Configured") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-profile-direction-configured", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileConflictProblem::VoiceProfileDirectionConfiguredProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -169437,7 +156804,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse400ApplicationProblemPlusJson::UpdateProjectResponse400ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileConflictProblem::VoiceOutboundOperationPendingProblem( inner, ), )); @@ -169456,24 +156823,42 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REQUIRED") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Required") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-required", - ) + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_INVALID") + == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Invalid") + == Some("Voice Profile Direction Configured") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-invalid", + "https://photon.codes/docs/problems/voice-profile-direction-configured", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", ) { (match_count, selected) = select(true); @@ -169485,48 +156870,64 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileConflictProblem", ), ) } } } - impl serde::Serialize for UpdateProjectResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectResponse400ApplicationProblemPlusJson::UpdateProjectResponse400ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileConflictProblem::ProjectClosingProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateVoiceProfileConflictProblem::VoiceProfileDirectionConfiguredProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateVoiceProfileConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectResponse400ApplicationProblemPlusJson::UpdateProjectResponse400ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169535,22 +156936,34 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -169570,36 +156983,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant1 as UpdateProjectResponse400ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonVariant2 as UpdateProjectResponse400ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone)] - pub enum UpdateProjectResponse403ApplicationProblemPlusJson { - UpdateProjectResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateProjectResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateVoiceProfileForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateProjectResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UpdateVoiceProfileForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -169612,22 +157015,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169648,7 +157088,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse403ApplicationProblemPlusJson::UpdateProjectResponse403ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -169656,27 +157096,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -169689,7 +157127,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -169697,7 +157135,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -169714,22 +157152,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -169750,7 +157182,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse403ApplicationProblemPlusJson::UpdateProjectResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -169783,6 +157215,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -169801,51 +157243,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileForbiddenProblem", ), ) } } } - impl serde::Serialize for UpdateProjectResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectResponse403ApplicationProblemPlusJson::UpdateProjectResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectResponse403ApplicationProblemPlusJson::UpdateProjectResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateVoiceProfileForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateVoiceProfileForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateVoiceProfileForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169854,16 +157308,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -169872,23 +157326,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -169907,66 +157353,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateProjectResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateProjectResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteProjectResponse404ApplicationProblemPlusJson as UpdateProjectResponse404ApplicationProblemPlusJson; - pub use self::GetAgentProfileResponse410ApplicationProblemPlusJson as UpdateProjectResponse410ApplicationProblemPlusJson; - pub use self::CreateProjectResponse413ApplicationProblemPlusJson as UpdateProjectResponse413ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateProjectResponse422ApplicationProblemPlusJson { - UpdateProjectResponse422ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectResponse422ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateVoiceProfileGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectResponse422ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateProjectResponse422ApplicationProblemPlusJson), + ((usize, u32), UpdateVoiceProfileGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/validation-failed", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -169979,7 +157409,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1109u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -169987,7 +157417,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse422ApplicationProblemPlusJson::UpdateProjectResponse422ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -169995,31 +157425,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -170040,7 +157464,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse422ApplicationProblemPlusJson::UpdateProjectResponse422ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -170059,23 +157483,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("VALIDATION_FAILED") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Validation Failed") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/validation-failed") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("IDEMPOTENCY_KEY_REUSED") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(422i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Idempotency Key Reused") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/idempotency-key-reused", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -170086,49 +157508,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse422ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UpdateProjectResponse422ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectResponse422ApplicationProblemPlusJson::UpdateProjectResponse422ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectResponse422ApplicationProblemPlusJson::UpdateProjectResponse422ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateVoiceProfileGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -170136,23 +157550,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateProjectResponse422ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -170171,67 +157577,98 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectResponse422ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileGatewayTimeoutProblem", ), ) } } } - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateProjectResponse422ApplicationProblemPlusJsonVariant0issuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateProjectResponse422ApplicationProblemPlusJsonVariant0issuesItem; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateProjectResponse422ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UpdateProjectResponse422ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as UpdateProjectResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as UpdateProjectResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateProjectResponse504ApplicationProblemPlusJson { - UpdateProjectResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateProjectResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateVoiceProfileInboundConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateProjectResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileInboundConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateProjectResponse504ApplicationProblemPlusJson), + ((usize, u32), UpdateVoiceProfileInboundConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/project-closing", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileInboundConflictProblem::ProjectClosingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_PROFILE_VERSION_CONFLICT") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Profile Version Conflict") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -170252,7 +157689,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse504ApplicationProblemPlusJson::UpdateProjectResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -170260,31 +157697,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/request-timeout", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -170305,7 +157736,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateProjectResponse504ApplicationProblemPlusJson::UpdateProjectResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ), )); @@ -170324,21 +157755,33 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) { (match_count, selected) = select(true); } @@ -170349,48 +157792,61 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateProjectResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundConflictProblem", ), ) } } } - impl serde::Serialize for UpdateProjectResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileInboundConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateProjectResponse504ApplicationProblemPlusJson::UpdateProjectResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInboundConflictProblem::ProjectClosingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateProjectResponse504ApplicationProblemPlusJson::UpdateProjectResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInboundConflictProblem::VoiceProfileVersionConflictProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateVoiceProfileInboundConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -170399,22 +157855,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateProjectResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -170434,136 +157884,27 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateProjectResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateProjectResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateProjectResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateVoiceProfileInboundRequestApplicationJson { - #[serde( - rename = "credentials", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub credentials: Option< - Option, - >, - #[serde( - rename = "destinationUri", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub destination_uri: Option, - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["credentials", "destinationUri", "expectedVersion"])?; - UpdateVoiceProfileInboundRequestApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateVoiceProfileInboundRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for UpdateVoiceProfileInboundRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateVoiceProfileInboundRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateVoiceProfileInboundRequestApplicationJsoncredentials { - #[serde(rename = "password")] - pub password: String, - #[serde(rename = "username")] - pub username: String, - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundRequestApplicationJsoncredentials { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["password", "username"])?; - UpdateVoiceProfileInboundRequestApplicationJsoncredentials::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateVoiceProfileInboundRequestApplicationJsoncredentials::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateVoiceProfileInboundRequestApplicationJsoncredentials { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateVoiceProfileInboundRequestApplicationJsoncredentials::serialize( - self, - serializer, - ) - } - } - pub use self::DeleteVoiceProfileInboundResponse200ApplicationJson as UpdateVoiceProfileInboundResponse200ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as UpdateVoiceProfileInboundResponse200ApplicationJsoninboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as UpdateVoiceProfileInboundResponse200ApplicationJsoninbound; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson { - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateVoiceProfileInboundForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileInboundForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileInboundForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -170577,25 +157918,15 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -170615,7 +157946,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInboundForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -170632,18 +157963,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -170656,7 +157985,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -170664,7 +157993,54 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -170681,24 +158057,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -170719,7 +158087,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -170752,6 +158120,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -170770,54 +158148,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundForbiddenProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileInboundForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInboundForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateVoiceProfileInboundForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateVoiceProfileInboundForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileInboundForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -170826,16 +158213,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -170844,25 +158231,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -170881,127 +158258,51 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson { - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateVoiceProfileInboundGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson { + for UpdateVoiceProfileInboundGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileInboundGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -171022,7 +158323,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -171030,33 +158331,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -171077,7 +158370,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -171096,33 +158389,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -171133,55 +158414,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileInboundGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInboundGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileInboundGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -171189,51 +158456,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -171252,38 +158483,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant1; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateVoiceProfileInboundInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson { + for UpdateVoiceProfileInboundInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileInboundInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -171297,16 +158516,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -171319,7 +158538,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -171327,7 +158546,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -171344,24 +158563,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -171382,7 +158593,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -171428,44 +158639,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileInboundInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateVoiceProfileInboundInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInboundInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -171473,24 +158681,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -171510,69 +158710,96 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson; + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateVoiceProfileInboundRequest { + #[serde( + rename = "credentials", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub credentials: Option>, + #[serde( + rename = "destinationUri", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub destination_uri: Option, + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + } + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileInboundRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["credentials", "destinationUri", "expectedVersion"])?; + UpdateVoiceProfileInboundRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateVoiceProfileInboundRequest::deserialize(deserializer) + } + } + } + impl serde::Serialize for UpdateVoiceProfileInboundRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateVoiceProfileInboundRequest::serialize(self, serializer) + } + } #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson { - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateVoiceProfileInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -171593,7 +158820,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -171601,33 +158828,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -171648,7 +158867,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -171667,21 +158886,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -171692,52 +158913,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileInternalServerErrorProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson::UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -171745,24 +158955,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -171782,230 +158984,53 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson { - #[serde(rename = "authentication")] - pub authentication: UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication, - #[serde( - rename = "expectedVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub expected_version: i64, - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["authentication", "expectedVersion"])?; - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthenticationalgorithm { - #[serde(rename = "sha-256")] - Sha256, - #[serde(rename = "md5")] - Md5, - } - impl std::fmt::Display - for UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthenticationalgorithm { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthenticationalgorithm::Sha256 => { - "sha-256" - } - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthenticationalgorithm::Md5 => { - "md5" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication { - #[serde(rename = "algorithm")] - pub algorithm: UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthenticationalgorithm, - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::(&value, &["algorithm"])?; - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonauthentication::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson { - #[serde(rename = "outbound")] - pub outbound: UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutbound, - #[serde( - rename = "profileVersion", - deserialize_with = "deserialize_8f30dd1f92019b30", - )] - pub profile_version: i64, - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >(&value, &["outbound", "profileVersion"])?; - UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonoutbound; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson { - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, - ), + pub enum UpdateVoiceProfileOutboundAuthenticationConflictProblem { + ProjectClosingProblem(Box), + VoiceProfileVersionConflictProblem(Box), + VoiceOutboundOperationPendingProblem(Box), + VoiceOutboundNotConfiguredProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileOutboundAuthenticationConflictProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/project-closing", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -172026,7 +159051,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::ProjectClosingProblem( inner, ), )); @@ -172034,27 +159059,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/voice-profile-version-conflict", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -172067,7 +159090,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -172075,7 +159098,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceProfileVersionConflictProblem( inner, ), )); @@ -172083,33 +159106,72 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_OPERATION_PENDING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Operation Pending") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/voice-outbound-operation-pending", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceOutboundOperationPendingProblem( + inner, + ), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Not Configured") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-not-configured", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -172130,7 +159192,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ), )); @@ -172148,29 +159210,44 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("PROJECT_CLOSING") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Project Is Closing") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some("https://photon.codes/docs/problems/project-closing") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("VOICE_PROFILE_VERSION_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Voice Profile Version Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/voice-profile-version-conflict", + ) + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VOICE_OUTBOUND_OPERATION_PENDING") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(409i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Voice Outbound Operation Pending") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/voice-outbound-operation-pending", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("VOICE_OUTBOUND_NOT_CONFIGURED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Voice Outbound Not Configured") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/voice-outbound-not-configured", + ) { (match_count, selected) = select(true); } @@ -172181,54 +159258,64 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationConflictProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileOutboundAuthenticationConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::ProjectClosingProblem( + inner, + ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceProfileVersionConflictProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceOutboundOperationPendingProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileOutboundAuthenticationConflictProblem::VoiceOutboundNotConfiguredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -172237,16 +159324,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -172255,24 +159342,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -172292,84 +159371,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationConflictProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson { - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, - ), - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, - ), - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, - ), - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, - ), + pub enum UpdateVoiceProfileOutboundAuthenticationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson, - ), + ((usize, u32), UpdateVoiceProfileOutboundAuthenticationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -172389,7 +159434,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -172397,33 +159442,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -172444,7 +159481,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -172452,33 +159489,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -172499,7 +159528,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -172507,33 +159536,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -172554,7 +159575,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -172572,44 +159593,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_NOT_CONFIGURED") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Not Configured") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-not-configured", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -172620,83 +159636,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationForbiddenProblem", ), ) } } } - impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UpdateVoiceProfileOutboundAuthenticationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::ForbiddenProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3( + UpdateVoiceProfileOutboundAuthenticationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -172705,24 +159701,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -172731,25 +159719,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -172768,31 +159746,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant0; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant1; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant2; - pub use self::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonVariant3; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -172801,7 +159767,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson, + UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -172809,23 +159775,25 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + == Some( + "https://photon.codes/docs/problems/request-timeout", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -172838,7 +159806,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -172846,7 +159814,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -172854,33 +159822,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-auth-context", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -172901,7 +159861,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -172920,23 +159880,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") + == Some("https://photon.codes/docs/problems/request-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) + == Some("https://photon.codes/docs/problems/upstream-timeout") { (match_count, selected) = select(true); } @@ -172947,44 +159905,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem", ), ) } } } impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -172992,25 +159948,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -173029,30 +159975,19 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson { - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - ), - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1( - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - ), + pub enum UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -173061,7 +159996,7 @@ pub mod types { type Selected = Option< ( (usize, u32), - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson, + UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem, ), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { @@ -173069,33 +160004,23 @@ pub mod types { let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/internal-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -173116,7 +160041,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -173124,33 +160049,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/upstream-timeout", + "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -173171,7 +160088,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -173190,21 +160107,23 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") + == Some("INTERNAL_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") + == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") + == Some("https://photon.codes/docs/problems/internal-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") + == Some("INVALID_AUTH_CONTEXT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) + == Some(500i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") + == Some("Invalid Authentication Context") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") + == Some( + "https://photon.codes/docs/problems/invalid-auth-context", + ) { (match_count, selected) = select(true); } @@ -173215,52 +160134,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem", ), ) } } } impl serde::Serialize - for UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson { + for UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0( + UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1( + UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -173268,24 +160177,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -173305,17 +160206,93 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct UpdateVoiceProfileRequestApplicationJson { + pub struct UpdateVoiceProfileOutboundAuthenticationRequest { + #[serde(rename = "authentication")] + pub authentication: SipOutboundAuthenticationPolicy, + #[serde( + rename = "expectedVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub expected_version: i64, + } + impl<'de> serde::Deserialize<'de> + for UpdateVoiceProfileOutboundAuthenticationRequest { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["authentication", "expectedVersion"])?; + UpdateVoiceProfileOutboundAuthenticationRequest::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateVoiceProfileOutboundAuthenticationRequest::deserialize( + deserializer, + ) + } + } + } + impl serde::Serialize for UpdateVoiceProfileOutboundAuthenticationRequest { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateVoiceProfileOutboundAuthenticationRequest::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateVoiceProfileOutboundAuthenticationResponse { + #[serde(rename = "outbound")] + pub outbound: SipOutboundConfiguration, + #[serde( + rename = "profileVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub profile_version: i64, + } + impl<'de> serde::Deserialize<'de> + for UpdateVoiceProfileOutboundAuthenticationResponse { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["outbound", "profileVersion"])?; + UpdateVoiceProfileOutboundAuthenticationResponse::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + UpdateVoiceProfileOutboundAuthenticationResponse::deserialize( + deserializer, + ) + } + } + } + impl serde::Serialize for UpdateVoiceProfileOutboundAuthenticationResponse { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + UpdateVoiceProfileOutboundAuthenticationResponse::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct UpdateVoiceProfileRequest { #[serde( rename = "expectedVersion", deserialize_with = "deserialize_8f30dd1f92019b30", @@ -173327,9 +160304,7 @@ pub mod types { skip_serializing_if = "Option::is_none", deserialize_with = "deserialize_request_field", )] - pub media_encryption: Option< - UpdateVoiceProfileRequestApplicationJsonmediaEncryption, - >, + pub media_encryption: Option, #[serde( rename = "name", default, @@ -173346,7 +160321,7 @@ pub mod types { )] pub protocol: Option, } - impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for UpdateVoiceProfileRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -173356,106 +160331,60 @@ pub mod types { super::support::check_known_members::< D::Error, >(&value, &["expectedVersion", "mediaEncryption", "name", "protocol"])?; - UpdateVoiceProfileRequestApplicationJson::deserialize(value) + UpdateVoiceProfileRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - UpdateVoiceProfileRequestApplicationJson::deserialize(deserializer) + UpdateVoiceProfileRequest::deserialize(deserializer) } } } - impl serde::Serialize for UpdateVoiceProfileRequestApplicationJson { + impl serde::Serialize for UpdateVoiceProfileRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - UpdateVoiceProfileRequestApplicationJson::serialize(self, serializer) - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum UpdateVoiceProfileRequestApplicationJsonmediaEncryption { - #[serde(rename = "auto")] - Auto, - #[serde(rename = "srtp")] - Srtp, - } - impl std::fmt::Display for UpdateVoiceProfileRequestApplicationJsonmediaEncryption { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - UpdateVoiceProfileRequestApplicationJsonmediaEncryption::Auto => { - "auto" - } - UpdateVoiceProfileRequestApplicationJsonmediaEncryption::Srtp => { - "srtp" - } - }, - ) + UpdateVoiceProfileRequest::serialize(self, serializer) } } - pub use self::CreateVoiceProfileResponse201ApplicationJson as UpdateVoiceProfileResponse200ApplicationJson; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials as UpdateVoiceProfileResponse200ApplicationJsonconfigurationinboundcredentials; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfigurationinbound as UpdateVoiceProfileResponse200ApplicationJsonconfigurationinbound; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthenticationalgorithm as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthenticationalgorithm; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundauthentication as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutboundauthentication; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItemtransport as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItemtransport; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnectionendpointsItem as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnectionendpointsItem; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutboundconnection as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutboundconnection; - pub use self::ConfigureVoiceProfileOutboundResponse200ApplicationJsonoutbound as UpdateVoiceProfileResponse200ApplicationJsonconfigurationoutbound; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonconfiguration as UpdateVoiceProfileResponse200ApplicationJsonconfiguration; - pub use self::CreateDefaultVoiceProfileResponse200ApplicationJsonmediaEncryption as UpdateVoiceProfileResponse200ApplicationJsonmediaEncryption; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileResponse403ApplicationProblemPlusJson { - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UpdateWebhookDestinationBadRequestProblem { + IdempotencyKeyRequiredProblem(Box), + IdempotencyKeyInvalidProblem(Box), + InvalidArgumentProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateWebhookDestinationBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateVoiceProfileResponse403ApplicationProblemPlusJson), + ((usize, u32), UpdateWebhookDestinationBadRequestProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -173476,7 +160405,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + UpdateWebhookDestinationBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ), )); @@ -173484,27 +160413,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/idempotency-key-invalid", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -173517,7 +160444,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -173525,7 +160452,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateWebhookDestinationBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ), )); @@ -173533,33 +160460,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-argument", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -173580,7 +160499,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateWebhookDestinationBadRequestProblem::InvalidArgumentProblem( inner, ), )); @@ -173598,29 +160517,34 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Idempotency Key Required") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") + == Some( + "https://photon.codes/docs/problems/idempotency-key-required", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("IDEMPOTENCY_KEY_INVALID") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Idempotency Key Invalid") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some( + "https://photon.codes/docs/problems/idempotency-key-invalid", + ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ARGUMENT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Argument") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some("https://photon.codes/docs/problems/invalid-argument") { (match_count, selected) = select(true); } @@ -173631,51 +160555,45 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationBadRequestProblem", ), ) } } } - impl serde::Serialize for UpdateVoiceProfileResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UpdateWebhookDestinationBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0( + UpdateWebhookDestinationBadRequestProblem::IdempotencyKeyRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UpdateWebhookDestinationBadRequestProblem::IdempotencyKeyInvalidProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse403ApplicationProblemPlusJson::UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2( + UpdateWebhookDestinationBadRequestProblem::InvalidArgumentProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -173684,16 +160602,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -173702,23 +160620,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -173737,73 +160647,49 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateWebhookDestinationBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileResponse403ApplicationProblemPlusJsonVariant2; - pub use self::AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileResponse404ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileResponse409ApplicationProblemPlusJson { - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( - Box, - ), - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( - Box, - ), + pub enum UpdateWebhookDestinationForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateWebhookDestinationForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateVoiceProfileResponse409ApplicationProblemPlusJson), + ((usize, u32), UpdateWebhookDestinationForbiddenProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/project-closing", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/forbidden")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -173823,7 +160709,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( + UpdateWebhookDestinationForbiddenProblem::ForbiddenProblem( inner, ), )); @@ -173831,33 +160717,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Direction Configured") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-direction-configured", + "https://photon.codes/docs/problems/insufficient-scope", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -173878,7 +160756,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + UpdateWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -173886,33 +160764,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -173933,7 +160803,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( + UpdateWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -173941,33 +160811,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", + "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -173988,7 +160850,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( + UpdateWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -174006,44 +160868,39 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("PROJECT_CLOSING") + if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Project Is Closing") + == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/project-closing") + == Some("https://photon.codes/docs/problems/forbidden") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_DIRECTION_CONFIGURED") + == Some("INSUFFICIENT_SCOPE") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Direction Configured") + == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-profile-direction-configured", - ) + == Some("https://photon.codes/docs/problems/insufficient-scope") || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_PROFILE_VERSION_CONFLICT") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Profile Version Conflict") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/voice-profile-version-conflict", + "https://photon.codes/docs/problems/organization-sso-required", ) || value.get("code").and_then(serde_json::Value::as_str) - == Some("VOICE_OUTBOUND_OPERATION_PENDING") + == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Voice Outbound Operation Pending") + == Some("Resource Mismatch") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/voice-outbound-operation-pending", - ) + == Some("https://photon.codes/docs/problems/resource-mismatch") { (match_count, selected) = select(true); } @@ -174054,126 +160911,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationForbiddenProblem", ), ) } } } - impl serde::Serialize for UpdateVoiceProfileResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UpdateWebhookDestinationForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1( + UpdateWebhookDestinationForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UpdateWebhookDestinationForbiddenProblem::InsufficientScopeProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2( + UpdateWebhookDestinationForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse409ApplicationProblemPlusJson::UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3( + UpdateWebhookDestinationForbiddenProblem::ResourceMismatchProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2, - >, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3, - >, + Box, >(candidate) .ok() } @@ -174182,227 +160976,16 @@ pub mod types { { match_count += 1; } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileResponse409ApplicationProblemPlusJson", - ), - ) - } - } - } - pub use self::AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant0; - pub use self::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant1; - pub use self::AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant2; - pub use self::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonVariant2 as UpdateVoiceProfileResponse409ApplicationProblemPlusJsonVariant3; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson as UpdateVoiceProfileResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UpdateVoiceProfileResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UpdateVoiceProfileResponse422ApplicationProblemPlusJsonissuesItem; - pub use self::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson as UpdateVoiceProfileResponse429ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), - } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileResponse500ApplicationProblemPlusJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UpdateVoiceProfileResponse500ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateVoiceProfileResponse500ApplicationProblemPlusJson::UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; - } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("INTERNAL_ERROR") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Internal Server Error") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/internal-error") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_AUTH_CONTEXT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(500i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Authentication Context") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/invalid-auth-context", - ) - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); - } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse500ApplicationProblemPlusJson", - )) - } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse500ApplicationProblemPlusJson", - ), - ) - } - } - } - impl serde::Serialize for UpdateVoiceProfileResponse500ApplicationProblemPlusJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - UpdateVoiceProfileResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse500ApplicationProblemPlusJson::UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -174411,23 +160994,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -174446,33 +161021,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateWebhookDestinationForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileResponse500ApplicationProblemPlusJsonVariant1; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateVoiceProfileResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileResponse503ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateVoiceProfileResponse504ApplicationProblemPlusJson { - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UpdateWebhookDestinationGatewayTimeoutProblem { + RequestTimeoutProblem(Box), + UpstreamTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateVoiceProfileResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UpdateWebhookDestinationGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UpdateVoiceProfileResponse504ApplicationProblemPlusJson), + ((usize, u32), UpdateWebhookDestinationGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -174488,24 +161055,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -174526,7 +161085,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse504ApplicationProblemPlusJson::UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -174543,24 +161102,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -174581,7 +161132,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateVoiceProfileResponse504ApplicationProblemPlusJson::UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -174625,49 +161176,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateVoiceProfileResponse504ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UpdateWebhookDestinationGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UpdateVoiceProfileResponse504ApplicationProblemPlusJson { + impl serde::Serialize for UpdateWebhookDestinationGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateVoiceProfileResponse504ApplicationProblemPlusJson::UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0( + UpdateWebhookDestinationGatewayTimeoutProblem::RequestTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateVoiceProfileResponse504ApplicationProblemPlusJson::UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1( + UpdateWebhookDestinationGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -174675,23 +161218,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -174710,17 +161245,15 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateVoiceProfileResponse504ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UpdateWebhookDestinationGatewayTimeoutProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateVoiceProfileResponse504ApplicationProblemPlusJsonVariant1; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(remote = "Self")] - pub struct UpdateWebhookDestinationRequestApplicationJson { + pub struct UpdateWebhookDestinationRequest { #[serde( rename = "description", default, @@ -174734,9 +161267,7 @@ pub mod types { skip_serializing_if = "Option::is_none", deserialize_with = "deserialize_request_field", )] - pub enabled_events: Option< - UpdateWebhookDestinationRequestApplicationJsonenabledEvents, - >, + pub enabled_events: Option, #[serde( rename = "name", default, @@ -174750,7 +161281,7 @@ pub mod types { skip_serializing_if = "Option::is_none", deserialize_with = "deserialize_request_field", )] - pub status: Option, + pub status: Option, ///HTTPS URL without credentials or a fragment. #[serde( rename = "url", @@ -174760,8 +161291,7 @@ pub mod types { )] pub url: Option, } - impl<'de> serde::Deserialize<'de> - for UpdateWebhookDestinationRequestApplicationJson { + impl<'de> serde::Deserialize<'de> for UpdateWebhookDestinationRequest { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, @@ -174771,65 +161301,73 @@ pub mod types { super::support::check_known_members::< D::Error, >(&value, &["description", "enabledEvents", "name", "status", "url"])?; - UpdateWebhookDestinationRequestApplicationJson::deserialize(value) + UpdateWebhookDestinationRequest::deserialize(value) .map_err(serde::de::Error::custom) } else { - UpdateWebhookDestinationRequestApplicationJson::deserialize(deserializer) + UpdateWebhookDestinationRequest::deserialize(deserializer) } } } - impl serde::Serialize for UpdateWebhookDestinationRequestApplicationJson { + impl serde::Serialize for UpdateWebhookDestinationRequest { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - UpdateWebhookDestinationRequestApplicationJson::serialize(self, serializer) + UpdateWebhookDestinationRequest::serialize(self, serializer) } } #[derive(Debug, Clone)] - pub enum UpdateWebhookDestinationRequestApplicationJsonenabledEvents { - UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( - Box>, - ), - UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( - Box>, - ), + pub enum UpdateWebhookDestinationUnprocessableEntityProblem { + ValidationFailedProblem(Box), + IdempotencyKeyReusedProblem(Box), } impl<'de> serde::Deserialize<'de> - for UpdateWebhookDestinationRequestApplicationJsonenabledEvents { + for UpdateWebhookDestinationUnprocessableEntityProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ( - (usize, u32), - UpdateWebhookDestinationRequestApplicationJsonenabledEvents, - ), + ((usize, u32), UpdateWebhookDestinationUnprocessableEntityProblem), >; - let pass = |strict: bool| -> (usize, Selected) { + let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/validation-failed", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 800u32); + let rank = (retained, 1109u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -174837,30 +161375,46 @@ pub mod types { if replace { selected = Some(( rank, - UpdateWebhookDestinationRequestApplicationJsonenabledEvents::UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( + UpdateWebhookDestinationUnprocessableEntityProblem::ValidationFailedProblem( inner, ), )); } } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + )) + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::< + Box, + >(candidate) + .ok() + } + })()) + .flatten() + { match_count += 1; let retained = if strict { 0 } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 850u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -174868,7 +161422,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateWebhookDestinationRequestApplicationJsonenabledEvents::UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( + UpdateWebhookDestinationUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ), )); @@ -174876,321 +161430,79 @@ pub mod types { } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; - } - if match_count >= 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union UpdateWebhookDestinationRequestApplicationJsonenabledEvents", - )) - } else { - Err( - serde::de::Error::custom( - "data must match at least one typed variant of union UpdateWebhookDestinationRequestApplicationJsonenabledEvents", - ), - ) - } - } - } - impl serde::Serialize - for UpdateWebhookDestinationRequestApplicationJsonenabledEvents { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let value = match self { - UpdateWebhookDestinationRequestApplicationJsonenabledEvents::UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateWebhookDestinationRequestApplicationJsonenabledEvents::UpdateWebhookDestinationRequestApplicationJsonenabledEventsVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count >= 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match at least one typed variant of union UpdateWebhookDestinationRequestApplicationJsonenabledEvents", - ), - ) - } - } - } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum UpdateWebhookDestinationRequestApplicationJsonstatus { - #[serde(rename = "enabled")] - Enabled, - #[serde(rename = "disabled")] - Disabled, - } - impl std::fmt::Display for UpdateWebhookDestinationRequestApplicationJsonstatus { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - UpdateWebhookDestinationRequestApplicationJsonstatus::Enabled => { - "enabled" - } - UpdateWebhookDestinationRequestApplicationJsonstatus::Disabled => { - "disabled" - } - }, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UpdateWebhookDestinationResponse200ApplicationJson { - #[serde(rename = "apiVersion")] - pub api_version: Date, - #[serde(rename = "createdAt")] - pub created_at: DateTime, - #[serde(rename = "deletedAt")] - pub deleted_at: Option, - #[serde(rename = "description")] - pub description: Option, - #[serde(rename = "destinationId")] - pub destination_id: String, - #[serde(rename = "enabledEvents")] - pub enabled_events: UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents, - #[serde(rename = "name")] - pub name: String, - #[serde(rename = "projectId")] - pub project_id: String, - #[serde(rename = "status")] - pub status: UpdateWebhookDestinationResponse200ApplicationJsonstatus, - #[serde(rename = "updatedAt")] - pub updated_at: DateTime, - #[serde(rename = "url")] - pub url: String, - } - impl<'de> serde::Deserialize<'de> - for UpdateWebhookDestinationResponse200ApplicationJson { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "apiVersion", - "createdAt", - "deletedAt", - "description", - "destinationId", - "enabledEvents", - "name", - "projectId", - "status", - "updatedAt", - "url", - ], - )?; - UpdateWebhookDestinationResponse200ApplicationJson::deserialize(value) - .map_err(serde::de::Error::custom) - } else { - UpdateWebhookDestinationResponse200ApplicationJson::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize for UpdateWebhookDestinationResponse200ApplicationJson { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UpdateWebhookDestinationResponse200ApplicationJson::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone)] - pub enum UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents { - UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - Box>, - ), - UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - Box>, - ), - } - impl<'de> serde::Deserialize<'de> - for UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents, - ), - >; - let pass = |strict: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate) - .ok() - } - })() { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 800u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents::UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (|| -> Option>> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box>, - >(candidate)) - .ok() - } else { - serde_json::from_value::>>(candidate).ok() - } - })() { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 850u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents::UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( - inner, - ), - )); - } + let select = |keyed: bool| -> (usize, Selected) { + let (mut match_count, mut selected) = pass(true, keyed); + if match_count == 0 && !super::support::is_strict() { + let (count, lenient) = pass(false, keyed); + match_count = count.min(1); + selected = lenient; } (match_count, selected) }; - let (mut match_count, mut selected) = pass(true); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false); - match_count = count.min(1); - selected = lenient; + let (mut match_count, mut selected) = (0_usize, None); + if value.get("code").and_then(serde_json::Value::as_str) + == Some("VALIDATION_FAILED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Request Validation Failed") + && value.get("type").and_then(serde_json::Value::as_str) + == Some("https://photon.codes/docs/problems/validation-failed") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("IDEMPOTENCY_KEY_REUSED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(422i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Idempotency Key Reused") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/idempotency-key-reused", + ) + { + (match_count, selected) = select(true); } - if match_count >= 1 { + if match_count != 1 { + (match_count, selected) = select(false); + } + if match_count == 1 { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match at least one typed variant of union UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents", + "data must match exactly one typed variant of union UpdateWebhookDestinationUnprocessableEntityProblem", )) } else { Err( serde::de::Error::custom( - "data must match at least one typed variant of union UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents", + "data must match exactly one typed variant of union UpdateWebhookDestinationUnprocessableEntityProblem", ), ) } } } - impl serde::Serialize - for UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents { + impl serde::Serialize for UpdateWebhookDestinationUnprocessableEntityProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents::UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant0( + UpdateWebhookDestinationUnprocessableEntityProblem::ValidationFailedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents::UpdateWebhookDestinationResponse200ApplicationJsonenabledEventsVariant1( + UpdateWebhookDestinationUnprocessableEntityProblem::IdempotencyKeyReusedProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -175198,15 +161510,18 @@ pub mod types { { match_count += 1; } - if (|| -> Option>> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box>, + Box, >(candidate)) .ok() } else { - serde_json::from_value::>>(candidate).ok() + serde_json::from_value::< + Box, + >(candidate) + .ok() } })() .is_some() @@ -175219,75 +161534,50 @@ pub mod types { if match_count == 0 && !super::support::is_strict() { match_count = count(false).min(1); } - if match_count >= 1 { + if match_count == 1 { value.serialize(serializer) } else { Err( serde::ser::Error::custom( - "serialized value must match at least one typed variant of union UpdateWebhookDestinationResponse200ApplicationJsonenabledEvents", + "serialized value must match exactly one typed variant of union UpdateWebhookDestinationUnprocessableEntityProblem", ), ) } } } - pub use self::CreateWebhookDestinationResponse201ApplicationJsondestinationstatus as UpdateWebhookDestinationResponse200ApplicationJsonstatus; - pub use self::BeginInvitationSsoResponse400ApplicationProblemPlusJsonVariant1 as UpdateWebhookDestinationResponse400ApplicationProblemPlusJson; #[derive(Debug, Clone)] - pub enum UpdateWebhookDestinationResponse403ApplicationProblemPlusJson { - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UploadAttachmentBadRequestProblem { + HttpErrorProblem(Box), + InvalidAttachmentRequestProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UpdateWebhookDestinationResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UploadAttachmentBadRequestProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ( - (usize, u32), - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson, - ), - >; + type Selected = Option<((usize, u32), UploadAttachmentBadRequestProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("FORBIDDEN") + == Some("HTTP_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + == Some("https://photon.codes/docs/problems/http-error")) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })()) @@ -175307,90 +161597,31 @@ pub mod types { if replace { selected = Some(( rank, - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/insufficient-scope", - )) - .then(|| (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1087u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ), + UploadAttachmentBadRequestProblem::HttpErrorProblem(inner), )); } } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ATTACHMENT_REQUEST") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Attachment Request") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/resource-mismatch", + "https://photon.codes/docs/problems/invalid-attachment-request", )) - .then(|| (|| -> Option< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -175411,7 +161642,7 @@ pub mod types { if replace { selected = Some(( rank, - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + UploadAttachmentBadRequestProblem::InvalidAttachmentRequestProblem( inner, ), )); @@ -175429,29 +161660,24 @@ pub mod types { (match_count, selected) }; let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) == Some("FORBIDDEN") + if value.get("code").and_then(serde_json::Value::as_str) + == Some("HTTP_ERROR") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Forbidden") + == Some("Request Failed") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/forbidden") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/insufficient-scope") + == Some("https://photon.codes/docs/problems/http-error") || value.get("code").and_then(serde_json::Value::as_str) - == Some("RESOURCE_MISMATCH") + == Some("INVALID_ATTACHMENT_REQUEST") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(403i64) + == Some(400i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Resource Mismatch") + == Some("Invalid Attachment Request") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/resource-mismatch") + == Some( + "https://photon.codes/docs/problems/invalid-attachment-request", + ) { (match_count, selected) = select(true); } @@ -175462,98 +161688,57 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentBadRequestProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UpdateWebhookDestinationResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentBadRequestProblem", ), ) } } } - impl serde::Serialize - for UpdateWebhookDestinationResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UploadAttachmentBadRequestProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UpdateWebhookDestinationResponse403ApplicationProblemPlusJson::UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2( + UploadAttachmentBadRequestProblem::HttpErrorProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UploadAttachmentBadRequestProblem::InvalidAttachmentRequestProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option> { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box, - >(candidate) - .ok() + serde_json::from_value::>(candidate).ok() } })() .is_some() { match_count += 1; } - if (|| -> Option< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -175573,72 +161758,48 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UpdateWebhookDestinationResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UploadAttachmentBadRequestProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonVariant2; - pub use self::DeleteWebhookDestinationResponse404ApplicationProblemPlusJson as UpdateWebhookDestinationResponse404ApplicationProblemPlusJson; - pub use self::GetWebhookDestinationResponse410ApplicationProblemPlusJson as UpdateWebhookDestinationResponse410ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson as UpdateWebhookDestinationResponse422ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson as UpdateWebhookDestinationResponse502ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonVariant1 as UpdateWebhookDestinationResponse503ApplicationProblemPlusJson; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UpdateWebhookDestinationResponse504ApplicationProblemPlusJson; - pub type UploadAttachmentRequestMultipartRelated = bytes::Bytes; - pub use self::GetAttachmentResponse200ApplicationJson as UploadAttachmentResponse200ApplicationJson; - pub use self::GetAttachmentResponse200ApplicationJson as UploadAttachmentResponse201ApplicationJson; #[derive(Debug, Clone)] - pub enum UploadAttachmentResponse400ApplicationProblemPlusJson { - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0( - Box, - ), - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UploadAttachmentConflictProblem { + AttachmentConflictProblem(Box), + AttachmentUploadNotReadyProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse400ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UploadAttachmentConflictProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UploadAttachmentResponse400ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UploadAttachmentConflictProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("HTTP_ERROR") + == Some("ATTACHMENT_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Failed") + == Some("Attachment Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/http-error")) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0, - >, - > { + == Some( + "https://photon.codes/docs/problems/attachment-conflict", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -175659,7 +161820,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse400ApplicationProblemPlusJson::UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0( + UploadAttachmentConflictProblem::AttachmentConflictProblem( inner, ), )); @@ -175667,33 +161828,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ATTACHMENT_REQUEST") + == Some("ATTACHMENT_UPLOAD_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Attachment Request") + == Some("Attachment Upload Not Ready") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-attachment-request", + "https://photon.codes/docs/problems/attachment-upload-not-ready", )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -175714,7 +161867,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse400ApplicationProblemPlusJson::UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1( + UploadAttachmentConflictProblem::AttachmentUploadNotReadyProblem( inner, ), )); @@ -175733,22 +161886,22 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("HTTP_ERROR") + == Some("ATTACHMENT_CONFLICT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Failed") + == Some("Attachment Conflict") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/http-error") + == Some("https://photon.codes/docs/problems/attachment-conflict") || value.get("code").and_then(serde_json::Value::as_str) - == Some("INVALID_ATTACHMENT_REQUEST") + == Some("ATTACHMENT_UPLOAD_NOT_READY") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(400i64) + == Some(409i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Invalid Attachment Request") + == Some("Attachment Upload Not Ready") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/invalid-attachment-request", + "https://photon.codes/docs/problems/attachment-upload-not-ready", ) { (match_count, selected) = select(true); @@ -175760,48 +161913,42 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentConflictProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse400ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentConflictProblem", ), ) } } } - impl serde::Serialize for UploadAttachmentResponse400ApplicationProblemPlusJson { + impl serde::Serialize for UploadAttachmentConflictProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UploadAttachmentResponse400ApplicationProblemPlusJson::UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse400ApplicationProblemPlusJson::UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1( + UploadAttachmentConflictProblem::AttachmentConflictProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UploadAttachmentConflictProblem::AttachmentUploadNotReadyProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -175810,22 +161957,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -175845,118 +161986,26 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UploadAttachmentResponse400ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UploadAttachmentConflictProblem", ), ) } } } - pub use self::UpdateAccountResponse400ApplicationProblemPlusJsonVariant0 as UploadAttachmentResponse400ApplicationProblemPlusJsonVariant0; - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_invalid_attachment_request_de", - serialize_with = "const_invalid_attachment_request_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_invalid_attachment_request_3e31c04b_de", - serialize_with = "const_invalid_attachment_request_3e31c04b_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_invalid_attachment_request_de", - serialize_with = "const_https_photon_codes_docs_problems_invalid_attachment_request_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UploadAttachmentResponse400ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } #[derive(Debug, Clone)] - pub enum UploadAttachmentResponse403ApplicationProblemPlusJson { - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0( - Box, - ), - AuthorizationProblemInsufficientScope403( - Box, - ), - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2( - Box, - ), + pub enum UploadAttachmentForbiddenProblem { + ForbiddenProblem(Box), + InsufficientScopeProblem(Box), + OrganizationSsoRequiredProblem(Box), + ResourceMismatchProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse403ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UploadAttachmentForbiddenProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UploadAttachmentResponse403ApplicationProblemPlusJson), - >; + type Selected = Option<((usize, u32), UploadAttachmentForbiddenProblem)>; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; @@ -175969,24 +162018,59 @@ pub mod types { == Some("Forbidden") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/forbidden")) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate) + .ok() + } + })()) + .flatten() + { + match_count += 1; + let retained = if strict { + 0 + } else { + super::support::retained_members(&value, &inner) + }; + let rank = (retained, 1088u32); + let replace = match &selected { + Some((selected_rank, _)) => rank > *selected_rank, + None => true, + }; + if replace { + selected = Some(( + rank, + UploadAttachmentForbiddenProblem::ForbiddenProblem(inner), + )); + } + } + if let Some(inner) = (!keyed + || value.get("code").and_then(serde_json::Value::as_str) + == Some("INSUFFICIENT_SCOPE") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Insufficient Scope") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/insufficient-scope", + )) + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -176007,7 +162091,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse403ApplicationProblemPlusJson::UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0( + UploadAttachmentForbiddenProblem::InsufficientScopeProblem( inner, ), )); @@ -176015,27 +162099,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("INSUFFICIENT_SCOPE") + == Some("ORGANIZATION_SSO_REQUIRED") && value.get("status").and_then(serde_json::Value::as_i64) == Some(403i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Insufficient Scope") + == Some("Organization SSO Required") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/insufficient-scope", + "https://photon.codes/docs/problems/organization-sso-required", )) - .then(|| (|| -> Option< - Box, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -176048,7 +162130,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -176056,7 +162138,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( + UploadAttachmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ), )); @@ -176073,24 +162155,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/resource-mismatch", )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate) .ok() } @@ -176111,7 +162185,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse403ApplicationProblemPlusJson::UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2( + UploadAttachmentForbiddenProblem::ResourceMismatchProblem( inner, ), )); @@ -176144,6 +162218,16 @@ pub mod types { == Some("Insufficient Scope") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/insufficient-scope") + || value.get("code").and_then(serde_json::Value::as_str) + == Some("ORGANIZATION_SSO_REQUIRED") + && value.get("status").and_then(serde_json::Value::as_i64) + == Some(403i64) + && value.get("title").and_then(serde_json::Value::as_str) + == Some("Organization SSO Required") + && value.get("type").and_then(serde_json::Value::as_str) + == Some( + "https://photon.codes/docs/problems/organization-sso-required", + ) || value.get("code").and_then(serde_json::Value::as_str) == Some("RESOURCE_MISMATCH") && value.get("status").and_then(serde_json::Value::as_i64) @@ -176162,51 +162246,63 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentForbiddenProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse403ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentForbiddenProblem", ), ) } } } - impl serde::Serialize for UploadAttachmentResponse403ApplicationProblemPlusJson { + impl serde::Serialize for UploadAttachmentForbiddenProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UploadAttachmentResponse403ApplicationProblemPlusJson::UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse403ApplicationProblemPlusJson::AuthorizationProblemInsufficientScope403( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse403ApplicationProblemPlusJson::UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2( + UploadAttachmentForbiddenProblem::ForbiddenProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UploadAttachmentForbiddenProblem::InsufficientScopeProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UploadAttachmentForbiddenProblem::OrganizationSsoRequiredProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UploadAttachmentForbiddenProblem::ResourceMismatchProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { + let candidate = value.clone(); + if strict { + super::support::strictly(|| serde_json::from_value::< + Box, + >(candidate)) + .ok() + } else { + serde_json::from_value::>(candidate).ok() + } + })() + .is_some() + { + match_count += 1; + } + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -176215,16 +162311,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -176233,23 +162329,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -176268,65 +162356,50 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UploadAttachmentResponse403ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UploadAttachmentForbiddenProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant0 as UploadAttachmentResponse403ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonVariant2 as UploadAttachmentResponse403ApplicationProblemPlusJsonVariant2; #[derive(Debug, Clone)] - pub enum UploadAttachmentResponse409ApplicationProblemPlusJson { - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0( - Box, - ), - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UploadAttachmentGatewayTimeoutProblem { + UpstreamTimeoutProblem(Box), + RequestTimeoutProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse409ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UploadAttachmentGatewayTimeoutProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UploadAttachmentResponse409ApplicationProblemPlusJson), + ((usize, u32), UploadAttachmentGatewayTimeoutProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; let mut selected: Selected = None; if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ATTACHMENT_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Attachment Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/attachment-conflict", + "https://photon.codes/docs/problems/upstream-timeout", )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate) .ok() } @@ -176347,7 +162420,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse409ApplicationProblemPlusJson::UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0( + UploadAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem( inner, ), )); @@ -176355,33 +162428,25 @@ pub mod types { } if let Some(inner) = (!keyed || value.get("code").and_then(serde_json::Value::as_str) - == Some("ATTACHMENT_UPLOAD_NOT_READY") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Attachment Upload Not Ready") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) == Some( - "https://photon.codes/docs/problems/attachment-upload-not-ready", + "https://photon.codes/docs/problems/request-timeout", )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -176402,7 +162467,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse409ApplicationProblemPlusJson::UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1( + UploadAttachmentGatewayTimeoutProblem::RequestTimeoutProblem( inner, ), )); @@ -176421,23 +162486,21 @@ pub mod types { }; let (mut match_count, mut selected) = (0_usize, None); if value.get("code").and_then(serde_json::Value::as_str) - == Some("ATTACHMENT_CONFLICT") + == Some("UPSTREAM_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Attachment Conflict") + == Some("Upstream Service Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/attachment-conflict") + == Some("https://photon.codes/docs/problems/upstream-timeout") || value.get("code").and_then(serde_json::Value::as_str) - == Some("ATTACHMENT_UPLOAD_NOT_READY") + == Some("REQUEST_TIMEOUT") && value.get("status").and_then(serde_json::Value::as_i64) - == Some(409i64) + == Some(504i64) && value.get("title").and_then(serde_json::Value::as_str) - == Some("Attachment Upload Not Ready") + == Some("Request Timeout") && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/attachment-upload-not-ready", - ) + == Some("https://photon.codes/docs/problems/request-timeout") { (match_count, selected) = select(true); } @@ -176448,49 +162511,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentGatewayTimeoutProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse409ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentGatewayTimeoutProblem", ), ) } } } - impl serde::Serialize for UploadAttachmentResponse409ApplicationProblemPlusJson { + impl serde::Serialize for UploadAttachmentGatewayTimeoutProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UploadAttachmentResponse409ApplicationProblemPlusJson::UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse409ApplicationProblemPlusJson::UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, + UploadAttachmentGatewayTimeoutProblem::UpstreamTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } + UploadAttachmentGatewayTimeoutProblem::RequestTimeoutProblem(inner) => { + serde_json::to_value(inner).map_err(serde::ser::Error::custom)? + } }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -176498,23 +162553,15 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1, - >, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -176533,198 +162580,25 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UploadAttachmentResponse409ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UploadAttachmentGatewayTimeoutProblem", ), ) } } } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0 { - #[serde( - rename = "code", - deserialize_with = "const_attachment_conflict_de", - serialize_with = "const_attachment_conflict_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_attachment_conflict_8f1af563_de", - serialize_with = "const_attachment_conflict_8f1af563_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_attachment_conflict_de", - serialize_with = "const_https_photon_codes_docs_problems_attachment_conflict_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant0::serialize( - self, - serializer, - ) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] - #[serde(remote = "Self")] - pub struct UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1 { - #[serde( - rename = "code", - deserialize_with = "const_attachment_upload_not_ready_de", - serialize_with = "const_attachment_upload_not_ready_ser", - )] - pub code: String, - #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] - pub detail: Option, - #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] - pub instance: Option, - #[serde( - rename = "remediation", - default, - skip_serializing_if = "Option::is_none", - deserialize_with = "deserialize_request_field", - )] - pub remediation: Option, - #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] - pub request_id: Option, - #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] - pub status: i64, - #[serde( - rename = "title", - deserialize_with = "const_attachment_upload_not_ready_775a86d2_de", - serialize_with = "const_attachment_upload_not_ready_775a86d2_ser", - )] - pub title: String, - #[serde( - rename = "type", - deserialize_with = "const_https_photon_codes_docs_problems_attachment_upload_not_ready_de", - serialize_with = "const_https_photon_codes_docs_problems_attachment_upload_not_ready_ser", - )] - pub r#type: String, - } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1 { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - if super::support::is_strict() { - let value = serde_json::Value::deserialize(deserializer)?; - super::support::check_known_members::< - D::Error, - >( - &value, - &[ - "code", - "detail", - "instance", - "remediation", - "requestId", - "status", - "title", - "type", - ], - )?; - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - value, - ) - .map_err(serde::de::Error::custom) - } else { - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1::deserialize( - deserializer, - ) - } - } - } - impl serde::Serialize - for UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1 { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - UploadAttachmentResponse409ApplicationProblemPlusJsonVariant1::serialize( - self, - serializer, - ) - } - } - pub use self::CreateProjectResponse413ApplicationProblemPlusJson as UploadAttachmentResponse413ApplicationProblemPlusJson; - pub use self::CancelOperationResponse422ApplicationProblemPlusJson as UploadAttachmentResponse422ApplicationProblemPlusJson; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItemlocation as UploadAttachmentResponse422ApplicationProblemPlusJsonissuesItemlocation; - pub use self::AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonissuesItem as UploadAttachmentResponse422ApplicationProblemPlusJsonissuesItem; #[derive(Debug, Clone)] - pub enum UploadAttachmentResponse500ApplicationProblemPlusJson { - PhotonProblemInternalError500(Box), - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1( - Box, - ), + pub enum UploadAttachmentInternalServerErrorProblem { + InternalErrorProblem(Box), + InvalidAuthContextProblem(Box), } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse500ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for UploadAttachmentInternalServerErrorProblem { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let value = serde_json::Value::deserialize(deserializer)?; type Selected = Option< - ((usize, u32), UploadAttachmentResponse500ApplicationProblemPlusJson), + ((usize, u32), UploadAttachmentInternalServerErrorProblem), >; let pass = |strict: bool, keyed: bool| -> (usize, Selected) { let mut match_count = 0_usize; @@ -176738,16 +162612,16 @@ pub mod types { == Some("Internal Server Error") && value.get("type").and_then(serde_json::Value::as_str) == Some("https://photon.codes/docs/problems/internal-error")) - .then(|| (|| -> Option> { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box, + Box, >(candidate) .ok() } @@ -176760,7 +162634,7 @@ pub mod types { } else { super::support::retained_members(&value, &inner) }; - let rank = (retained, 1087u32); + let rank = (retained, 1088u32); let replace = match &selected { Some((selected_rank, _)) => rank > *selected_rank, None => true, @@ -176768,7 +162642,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UploadAttachmentInternalServerErrorProblem::InternalErrorProblem( inner, ), )); @@ -176785,24 +162659,16 @@ pub mod types { == Some( "https://photon.codes/docs/problems/invalid-auth-context", )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, - > { + .then(|| (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -176823,7 +162689,7 @@ pub mod types { if replace { selected = Some(( rank, - UploadAttachmentResponse500ApplicationProblemPlusJson::UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1( + UploadAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ), )); @@ -176869,43 +162735,41 @@ pub mod types { selected .map(|(_, value)| value) .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentInternalServerErrorProblem", )) } else { Err( serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse500ApplicationProblemPlusJson", + "data must match exactly one typed variant of union UploadAttachmentInternalServerErrorProblem", ), ) } } } - impl serde::Serialize for UploadAttachmentResponse500ApplicationProblemPlusJson { + impl serde::Serialize for UploadAttachmentInternalServerErrorProblem { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { let value = match self { - UploadAttachmentResponse500ApplicationProblemPlusJson::PhotonProblemInternalError500( + UploadAttachmentInternalServerErrorProblem::InternalErrorProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse500ApplicationProblemPlusJson::UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1( + UploadAttachmentInternalServerErrorProblem::InvalidAuthContextProblem( inner, ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, }; let count = |strict: bool| -> usize { let mut match_count = 0_usize; - if (|| -> Option> { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box, + Box, >(candidate)) .ok() } else { - serde_json::from_value::< - Box, - >(candidate) + serde_json::from_value::>(candidate) .ok() } })() @@ -176913,22 +162777,16 @@ pub mod types { { match_count += 1; } - if (|| -> Option< - Box, - > { + if (|| -> Option> { let candidate = value.clone(); if strict { super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate)) .ok() } else { serde_json::from_value::< - Box< - UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1, - >, + Box, >(candidate) .ok() } @@ -176948,396 +162806,716 @@ pub mod types { } else { Err( serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UploadAttachmentResponse500ApplicationProblemPlusJson", + "serialized value must match exactly one typed variant of union UploadAttachmentInternalServerErrorProblem", ), ) } } } - pub use self::AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonVariant1 as UploadAttachmentResponse500ApplicationProblemPlusJsonVariant1; - pub use self::CancelOperationResponse502ApplicationProblemPlusJson as UploadAttachmentResponse502ApplicationProblemPlusJson; - pub use self::CancelOperationResponse503ApplicationProblemPlusJson as UploadAttachmentResponse503ApplicationProblemPlusJson; - #[derive(Debug, Clone)] - pub enum UploadAttachmentResponse504ApplicationProblemPlusJson { - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0( - Box, - ), - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1( - Box, - ), + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct UpstreamFailureProblem { + #[serde( + rename = "code", + deserialize_with = "const_upstream_failure_de", + serialize_with = "const_upstream_failure_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_upstream_service_failure_de", + serialize_with = "const_upstream_service_failure_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_upstream_failure_de", + serialize_with = "const_https_photon_codes_docs_problems_upstream_failure_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceProfile { + #[serde(rename = "configuration")] + pub configuration: VoiceProfileConfiguration, + #[serde(rename = "createdAt")] + pub created_at: DateTime, + #[serde(rename = "isDefault")] + pub is_default: bool, + #[serde(rename = "lineCount", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub line_count: i64, + #[serde(rename = "mediaEncryption")] + pub media_encryption: VoiceProfileMediaEncryption, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "profileId")] + pub profile_id: String, + #[serde(rename = "projectId")] + pub project_id: String, + #[serde( + rename = "protocol", + deserialize_with = "const_sip_de", + serialize_with = "const_sip_ser", + )] + pub protocol: String, + #[serde(rename = "updatedAt")] + pub updated_at: DateTime, + #[serde(rename = "version", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub version: i64, + } + impl<'de> serde::Deserialize<'de> for VoiceProfile { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "configuration", + "createdAt", + "isDefault", + "lineCount", + "mediaEncryption", + "name", + "profileId", + "projectId", + "protocol", + "updatedAt", + "version", + ], + )?; + VoiceProfile::deserialize(value).map_err(serde::de::Error::custom) + } else { + VoiceProfile::deserialize(deserializer) + } + } + } + impl serde::Serialize for VoiceProfile { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + VoiceProfile::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceProfileConfiguration { + #[serde(rename = "inbound")] + pub inbound: Option, + #[serde(rename = "outbound")] + pub outbound: Option, + } + impl<'de> serde::Deserialize<'de> for VoiceProfileConfiguration { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["inbound", "outbound"])?; + VoiceProfileConfiguration::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + VoiceProfileConfiguration::deserialize(deserializer) + } + } + } + impl serde::Serialize for VoiceProfileConfiguration { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + VoiceProfileConfiguration::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceProfileInboundConfiguration { + #[serde(rename = "inbound")] + pub inbound: Option, + #[serde( + rename = "profileVersion", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub profile_version: i64, + } + impl<'de> serde::Deserialize<'de> for VoiceProfileInboundConfiguration { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["inbound", "profileVersion"])?; + VoiceProfileInboundConfiguration::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + VoiceProfileInboundConfiguration::deserialize(deserializer) + } + } + } + impl serde::Serialize for VoiceProfileInboundConfiguration { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + VoiceProfileInboundConfiguration::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct VoiceProfilePage { + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, + #[serde(rename = "profiles")] + pub profiles: Vec, + } + impl<'de> serde::Deserialize<'de> for VoiceProfilePage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["nextPageToken", "profiles"])?; + VoiceProfilePage::deserialize(value).map_err(serde::de::Error::custom) + } else { + VoiceProfilePage::deserialize(deserializer) + } + } + } + impl serde::Serialize for VoiceProfilePage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + VoiceProfilePage::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WebhookDestinationDeletedProblem { + #[serde( + rename = "code", + deserialize_with = "const_webhook_destination_deleted_de", + serialize_with = "const_webhook_destination_deleted_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_webhook_destination_deleted_88615f02_de", + serialize_with = "const_webhook_destination_deleted_88615f02_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_webhook_destination_deleted_de", + serialize_with = "const_https_photon_codes_docs_problems_webhook_destination_deleted_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WebhookDestinationNotFoundProblem { + #[serde( + rename = "code", + deserialize_with = "const_webhook_destination_not_found_de", + serialize_with = "const_webhook_destination_not_found_ser", + )] + pub code: String, + #[serde(rename = "detail", default, skip_serializing_if = "Option::is_none")] + pub detail: Option, + #[serde(rename = "instance", default, skip_serializing_if = "Option::is_none")] + pub instance: Option, + #[serde( + rename = "remediation", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_request_field", + )] + pub remediation: Option, + #[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")] + pub request_id: Option, + #[serde(rename = "status", deserialize_with = "deserialize_8f30dd1f92019b30")] + pub status: i64, + #[serde( + rename = "title", + deserialize_with = "const_webhook_destination_not_found_d6d379c2_de", + serialize_with = "const_webhook_destination_not_found_d6d379c2_ser", + )] + pub title: String, + #[serde( + rename = "type", + deserialize_with = "const_https_photon_codes_docs_problems_webhook_destination_not_found_de", + serialize_with = "const_https_photon_codes_docs_problems_webhook_destination_not_found_ser", + )] + pub r#type: String, + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WebhookDestinationPage { + #[serde(rename = "destinations")] + pub destinations: Vec, + #[serde( + rename = "nextPageToken", + default, + skip_serializing_if = "Option::is_none", + )] + pub next_page_token: Option, + } + impl<'de> serde::Deserialize<'de> for WebhookDestinationPage { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["destinations", "nextPageToken"])?; + WebhookDestinationPage::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + WebhookDestinationPage::deserialize(deserializer) + } + } + } + impl serde::Serialize for WebhookDestinationPage { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WebhookDestinationPage::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + pub struct WebhookEventSchema { + #[serde(flatten)] + pub additional: BTreeMap>, + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WhatsappBusinessAccount { + #[serde(rename = "accountName")] + pub account_name: Option, + #[serde(rename = "alerts")] + pub alerts: Vec, + #[serde(rename = "businessId")] + pub business_id: String, + #[serde(rename = "businessName")] + pub business_name: Option, + #[serde(rename = "connectedAt")] + pub connected_at: DateTime, + #[serde( + rename = "maxPhoneNumbersPerBusiness", + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_849930913d2b9d6c", + )] + pub max_phone_numbers_per_business: Option, + #[serde(rename = "outboundCapacity")] + pub outbound_capacity: WhatsappOutboundCapacity, + #[serde(rename = "restriction")] + pub restriction: Option, + #[serde(rename = "reviewStatus")] + pub review_status: WhatsappReviewStatus, + #[serde( + rename = "senderCount", + deserialize_with = "deserialize_8f30dd1f92019b30", + )] + pub sender_count: i64, + #[serde( + rename = "subscribedAt", + default, + skip_serializing_if = "Option::is_none", + )] + pub subscribed_at: Option, + #[serde(rename = "wabaId")] + pub waba_id: String, + } + impl<'de> serde::Deserialize<'de> for WhatsappBusinessAccount { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "accountName", + "alerts", + "businessId", + "businessName", + "connectedAt", + "maxPhoneNumbersPerBusiness", + "outboundCapacity", + "restriction", + "reviewStatus", + "senderCount", + "subscribedAt", + "wabaId", + ], + )?; + WhatsappBusinessAccount::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + WhatsappBusinessAccount::deserialize(deserializer) + } + } + } + impl serde::Serialize for WhatsappBusinessAccount { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WhatsappBusinessAccount::serialize(self, serializer) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WhatsappBusinessAccountAlert { + #[serde(rename = "description")] + pub description: String, + #[serde(rename = "entityId")] + pub entity_id: String, + #[serde(rename = "entityType")] + pub entity_type: String, + #[serde(rename = "observedAt")] + pub observed_at: DateTime, + #[serde(rename = "severity")] + pub severity: String, + #[serde(rename = "status")] + pub status: String, + #[serde(rename = "type")] + pub r#type: String, + } + impl<'de> serde::Deserialize<'de> for WhatsappBusinessAccountAlert { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >( + &value, + &[ + "description", + "entityId", + "entityType", + "observedAt", + "severity", + "status", + "type", + ], + )?; + WhatsappBusinessAccountAlert::deserialize(value) + .map_err(serde::de::Error::custom) + } else { + WhatsappBusinessAccountAlert::deserialize(deserializer) + } + } + } + impl serde::Serialize for WhatsappBusinessAccountAlert { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + WhatsappBusinessAccountAlert::serialize(self, serializer) + } + } + #[derive(Debug, Clone, PartialEq, Eq)] + #[non_exhaustive] + pub enum WhatsappOutboundCapacity { + ///`50` + N50, + ///`250` + N250, + ///`1000` + N1000, + ///`2000` + N2000, + ///`10000` + N10000, + ///`100000` + N100000, + ///`UNLIMITED` + Unlimited, + ///`UNTIERED` + Untiered, + ///`UNKNOWN` + Unknown, + /// A value this version of the client does not know, kept as received. + Unknown2(String), + } + impl WhatsappOutboundCapacity { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::N50 => "50", + Self::N250 => "250", + Self::N1000 => "1000", + Self::N2000 => "2000", + Self::N10000 => "10000", + Self::N100000 => "100000", + Self::Unlimited => "UNLIMITED", + Self::Untiered => "UNTIERED", + Self::Unknown => "UNKNOWN", + Self::Unknown2(value) => value, + } + } + } + impl std::fmt::Display for WhatsappOutboundCapacity { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.as_str()) + } + } + impl serde::Serialize for WhatsappOutboundCapacity { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } } - impl<'de> serde::Deserialize<'de> - for UploadAttachmentResponse504ApplicationProblemPlusJson { + impl<'de> serde::Deserialize<'de> for WhatsappOutboundCapacity { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { - let value = serde_json::Value::deserialize(deserializer)?; - type Selected = Option< - ((usize, u32), UploadAttachmentResponse504ApplicationProblemPlusJson), - >; - let pass = |strict: bool, keyed: bool| -> (usize, Selected) { - let mut match_count = 0_usize; - let mut selected: Selected = None; - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/upstream-timeout", - )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UploadAttachmentResponse504ApplicationProblemPlusJson::UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0( - inner, - ), - )); - } - } - if let Some(inner) = (!keyed - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some( - "https://photon.codes/docs/problems/request-timeout", - )) - .then(|| (|| -> Option< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })()) - .flatten() - { - match_count += 1; - let retained = if strict { - 0 - } else { - super::support::retained_members(&value, &inner) - }; - let rank = (retained, 1088u32); - let replace = match &selected { - Some((selected_rank, _)) => rank > *selected_rank, - None => true, - }; - if replace { - selected = Some(( - rank, - UploadAttachmentResponse504ApplicationProblemPlusJson::UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1( - inner, - ), - )); - } - } - (match_count, selected) - }; - let select = |keyed: bool| -> (usize, Selected) { - let (mut match_count, mut selected) = pass(true, keyed); - if match_count == 0 && !super::support::is_strict() { - let (count, lenient) = pass(false, keyed); - match_count = count.min(1); - selected = lenient; + let value = String::deserialize(deserializer)?; + match value.as_str() { + "50" => Ok(Self::N50), + "250" => Ok(Self::N250), + "1000" => Ok(Self::N1000), + "2000" => Ok(Self::N2000), + "10000" => Ok(Self::N10000), + "100000" => Ok(Self::N100000), + "UNLIMITED" => Ok(Self::Unlimited), + "UNTIERED" => Ok(Self::Untiered), + "UNKNOWN" => Ok(Self::Unknown), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `50`, `250`, `1000`, `2000`, `10000`, `100000`, `UNLIMITED`, `UNTIERED`, `UNKNOWN`", + ), + ) } - (match_count, selected) - }; - let (mut match_count, mut selected) = (0_usize, None); - if value.get("code").and_then(serde_json::Value::as_str) - == Some("UPSTREAM_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Upstream Service Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/upstream-timeout") - || value.get("code").and_then(serde_json::Value::as_str) - == Some("REQUEST_TIMEOUT") - && value.get("status").and_then(serde_json::Value::as_i64) - == Some(504i64) - && value.get("title").and_then(serde_json::Value::as_str) - == Some("Request Timeout") - && value.get("type").and_then(serde_json::Value::as_str) - == Some("https://photon.codes/docs/problems/request-timeout") - { - (match_count, selected) = select(true); - } - if match_count != 1 { - (match_count, selected) = select(false); + _ => Ok(Self::Unknown2(value)), } - if match_count == 1 { - selected - .map(|(_, value)| value) - .ok_or_else(|| serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse504ApplicationProblemPlusJson", - )) + } + } + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(remote = "Self")] + pub struct WhatsappBusinessAccountRestriction { + #[serde(rename = "observedAt")] + pub observed_at: DateTime, + #[serde(rename = "status")] + pub status: WhatsappRestrictionStatus, + } + impl<'de> serde::Deserialize<'de> for WhatsappBusinessAccountRestriction { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + if super::support::is_strict() { + let value = serde_json::Value::deserialize(deserializer)?; + super::support::check_known_members::< + D::Error, + >(&value, &["observedAt", "status"])?; + WhatsappBusinessAccountRestriction::deserialize(value) + .map_err(serde::de::Error::custom) } else { - Err( - serde::de::Error::custom( - "data must match exactly one typed variant of union UploadAttachmentResponse504ApplicationProblemPlusJson", - ), - ) + WhatsappBusinessAccountRestriction::deserialize(deserializer) } } } - impl serde::Serialize for UploadAttachmentResponse504ApplicationProblemPlusJson { + impl serde::Serialize for WhatsappBusinessAccountRestriction { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { - let value = match self { - UploadAttachmentResponse504ApplicationProblemPlusJson::UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - UploadAttachmentResponse504ApplicationProblemPlusJson::UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1( - inner, - ) => serde_json::to_value(inner).map_err(serde::ser::Error::custom)?, - }; - let count = |strict: bool| -> usize { - let mut match_count = 0_usize; - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - if (|| -> Option< - Box, - > { - let candidate = value.clone(); - if strict { - super::support::strictly(|| serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate)) - .ok() - } else { - serde_json::from_value::< - Box< - UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1, - >, - >(candidate) - .ok() - } - })() - .is_some() - { - match_count += 1; - } - match_count - }; - let mut match_count = count(true); - if match_count == 0 && !super::support::is_strict() { - match_count = count(false).min(1); - } - if match_count == 1 { - value.serialize(serializer) - } else { - Err( - serde::ser::Error::custom( - "serialized value must match exactly one typed variant of union UploadAttachmentResponse504ApplicationProblemPlusJson", - ), - ) - } + WhatsappBusinessAccountRestriction::serialize(self, serializer) } } - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant1 as UploadAttachmentResponse504ApplicationProblemPlusJsonVariant0; - pub use self::AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonVariant0 as UploadAttachmentResponse504ApplicationProblemPlusJsonVariant1; - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] - pub enum Order { - #[serde(rename = "normal")] - Normal, - #[serde(rename = "desc")] - Desc, - #[serde(rename = "asc")] - Asc, + pub enum WhatsappRestrictionStatus { + ///`FLAGGED` + Flagged, + ///`DISABLED` + Disabled, + ///`REINSTATED` + Reinstated, + ///`UNKNOWN` + Unknown, + /// A value this version of the client does not know, kept as received. + Unknown2(String), } - impl std::fmt::Display for Order { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - Order::Normal => "normal", - Order::Desc => "desc", - Order::Asc => "asc", - }, - ) + impl WhatsappRestrictionStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Flagged => "FLAGGED", + Self::Disabled => "DISABLED", + Self::Reinstated => "REINSTATED", + Self::Unknown => "UNKNOWN", + Self::Unknown2(value) => value, + } } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum Order45d49a0f { - #[serde(rename = "asc")] - Asc, - #[serde(rename = "desc")] - Desc, - } - impl std::fmt::Display for Order45d49a0f { + impl std::fmt::Display for WhatsappRestrictionStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - Order45d49a0f::Asc => "asc", - Order45d49a0f::Desc => "desc", - }, - ) + f.write_str(self.as_str()) } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum OrderBy { - #[serde(rename = "created_at")] - CreatedAt, - #[serde(rename = "updated_at")] - UpdatedAt, + impl serde::Serialize for WhatsappRestrictionStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } } - impl std::fmt::Display for OrderBy { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - OrderBy::CreatedAt => "created_at", - OrderBy::UpdatedAt => "updated_at", - }, - ) + impl<'de> serde::Deserialize<'de> for WhatsappRestrictionStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "FLAGGED" => Ok(Self::Flagged), + "DISABLED" => Ok(Self::Disabled), + "REINSTATED" => Ok(Self::Reinstated), + "UNKNOWN" => Ok(Self::Unknown), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `FLAGGED`, `DISABLED`, `REINSTATED`, `UNKNOWN`", + ), + ) + } + _ => Ok(Self::Unknown2(value)), + } } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] - pub enum HeaderRetryAfter { - #[serde(rename = "5")] - N5, + pub enum WhatsappReviewStatus { + ///`PENDING` + Pending, + ///`APPROVED` + Approved, + ///`REJECTED` + Rejected, + ///`UNKNOWN` + Unknown, + /// A value this version of the client does not know, kept as received. + Unknown2(String), } - impl std::fmt::Display for HeaderRetryAfter { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - HeaderRetryAfter::N5 => "5", - }, - ) + impl WhatsappReviewStatus { + /// The value as it appears on the wire. + pub fn as_str(&self) -> &str { + match self { + Self::Pending => "PENDING", + Self::Approved => "APPROVED", + Self::Rejected => "REJECTED", + Self::Unknown => "UNKNOWN", + Self::Unknown2(value) => value, + } } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum Type { - #[serde(rename = "resource.provision")] - ResourceProvision, - #[serde(rename = "resource.release")] - ResourceRelease, - #[serde(rename = "whatsapp.account.disconnect")] - WhatsappAccountDisconnect, - #[serde(rename = "sms.campaign.assign")] - SmsCampaignAssign, - #[serde(rename = "sms.campaign.unassign")] - SmsCampaignUnassign, - } - impl std::fmt::Display for Type { + impl std::fmt::Display for WhatsappReviewStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - Type::ResourceProvision => "resource.provision", - Type::ResourceRelease => "resource.release", - Type::WhatsappAccountDisconnect => "whatsapp.account.disconnect", - Type::SmsCampaignAssign => "sms.campaign.assign", - Type::SmsCampaignUnassign => "sms.campaign.unassign", - }, - ) + f.write_str(self.as_str()) } } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] - #[non_exhaustive] - pub enum Default { - #[serde(rename = "true")] - True, - #[serde(rename = "false")] - False, + impl serde::Serialize for WhatsappReviewStatus { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(self.as_str()) + } } - impl std::fmt::Display for Default { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str( - match self { - Default::True => "true", - Default::False => "false", - }, - ) + impl<'de> serde::Deserialize<'de> for WhatsappReviewStatus { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let value = String::deserialize(deserializer)?; + match value.as_str() { + "PENDING" => Ok(Self::Pending), + "APPROVED" => Ok(Self::Approved), + "REJECTED" => Ok(Self::Rejected), + "UNKNOWN" => Ok(Self::Unknown), + _ if super::support::is_strict() => { + Err( + serde::de::Error::invalid_value( + serde::de::Unexpected::Str(&value), + &"one of `PENDING`, `APPROVED`, `REJECTED`, `UNKNOWN`", + ), + ) + } + _ => Ok(Self::Unknown2(value)), + } } } - pub use self::Default as Force; } #[allow(dead_code)] #[derive(Debug, Clone, Default, serde::Serialize)] @@ -177349,7 +163527,7 @@ pub struct ListAuthorizedApplicationsParams { #[serde(rename = "limit", skip_serializing_if = "Option::is_none")] pub limit: Option, #[serde(rename = "order", skip_serializing_if = "Option::is_none")] - pub order: Option, + pub order: Option, } #[allow(dead_code, clippy::wrong_self_convention)] impl ListAuthorizedApplicationsParams { @@ -177373,7 +163551,7 @@ impl ListAuthorizedApplicationsParams { } ///Set the `order` parameter. #[must_use] - pub fn order(mut self, value: types::Order) -> Self { + pub fn order(mut self, value: types::ListAuthorizedApplicationsOrder) -> Self { self.order = Some(value); self } @@ -177509,11 +163687,11 @@ pub struct ListAttachmentsParams { #[serde(rename = "createdSince", skip_serializing_if = "Option::is_none")] pub created_since: Option, #[serde(rename = "order", skip_serializing_if = "Option::is_none")] - pub order: Option, + pub order: Option, #[serde(rename = "orderBy", skip_serializing_if = "Option::is_none")] - pub order_by: Option, + pub order_by: Option, #[serde(rename = "pageSize", skip_serializing_if = "Option::is_none")] - pub page_size: Option, + pub page_size: Option, #[serde(rename = "pageToken", skip_serializing_if = "Option::is_none")] pub page_token: Option, #[serde(rename = "updatedBefore", skip_serializing_if = "Option::is_none")] @@ -177537,19 +163715,19 @@ impl ListAttachmentsParams { } ///Set the `order` parameter. #[must_use] - pub fn order(mut self, value: types::Order45d49a0f) -> Self { + pub fn order(mut self, value: types::SortOrder) -> Self { self.order = Some(value); self } ///Set the `orderBy` parameter. #[must_use] - pub fn order_by(mut self, value: types::OrderBy) -> Self { + pub fn order_by(mut self, value: types::TimestampOrderBy) -> Self { self.order_by = Some(value); self } ///Set the `pageSize` parameter. #[must_use] - pub fn page_size(mut self, value: String) -> Self { + pub fn page_size(mut self, value: i64) -> Self { self.page_size = Some(value); self } @@ -177615,7 +163793,7 @@ pub struct ListOperationsParams { #[serde(rename = "state", skip_serializing_if = "Option::is_none")] pub state: Option, #[serde(rename = "type", skip_serializing_if = "Option::is_none")] - pub r#type: Option, + pub r#type: Option, } #[allow(dead_code, clippy::wrong_self_convention)] impl ListOperationsParams { @@ -177645,7 +163823,7 @@ impl ListOperationsParams { } ///Set the `type` parameter. #[must_use] - pub fn r#type(mut self, value: types::Type) -> Self { + pub fn r#type(mut self, value: types::OperationType) -> Self { self.r#type = Some(value); self } @@ -177701,7 +163879,7 @@ impl ListResourcesParams { #[derive(Debug, Clone, Default, serde::Serialize)] pub struct ListVoiceProfilesParams { #[serde(rename = "default", skip_serializing_if = "Option::is_none")] - pub default: Option, + pub default: Option, #[serde(rename = "pageSize", skip_serializing_if = "Option::is_none")] pub page_size: Option, #[serde(rename = "pageToken", skip_serializing_if = "Option::is_none")] @@ -177711,7 +163889,7 @@ pub struct ListVoiceProfilesParams { impl ListVoiceProfilesParams { ///Set the `default` parameter. #[must_use] - pub fn default_(mut self, value: types::Default) -> Self { + pub fn default_(mut self, value: types::ListVoiceProfilesDefaultInput) -> Self { self.default = Some(value); self } @@ -177732,13 +163910,13 @@ impl ListVoiceProfilesParams { #[derive(Debug, Clone, Default, serde::Serialize)] pub struct DeleteVoiceProfileParams { #[serde(rename = "force", skip_serializing_if = "Option::is_none")] - pub force: Option, + pub force: Option, } #[allow(dead_code, clippy::wrong_self_convention)] impl DeleteVoiceProfileParams { ///Set the `force` parameter. #[must_use] - pub fn force(mut self, value: types::Force) -> Self { + pub fn force(mut self, value: types::DeleteVoiceProfileForceInput) -> Self { self.force = Some(value); self } @@ -177845,3394 +164023,2326 @@ impl ListWebhookDestinationsParams { #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteAccountError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetAccountError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateAccountError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListAuthorizedApplicationsError { - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RevokeAuthorizedApplicationError { - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConfirmAccountPhoneVerificationError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status413( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum StartAccountPhoneVerificationError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status413( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ResetAccountProfilePictureError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status413( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CommitAccountProfilePictureError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status413( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateAccountProfilePictureUploadError { - Status400( - Box< - types::CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson, - >, - ), - Status410( - Box< - types::CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson, - >, - ), - Status413( - Box< - types::CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListAccountServiceKeysError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateAccountServiceKeyError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RevokeAccountServiceKeyError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeviceAuthorizeError { Status400, - Status502, + Status503(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeviceTokenError { - Status400(Box), + Status400(Box), Status429, Status500, - Status502, + Status503(Box), } #[allow(dead_code)] -pub type StartEnterpriseLoginError = types::StartEnterpriseLoginResponse400ApplicationProblemPlusJson; +pub type StartEnterpriseLoginError = types::InvalidReturnToProblem; #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListOauthScopesError { - Status503(Box), - Status504(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetOrganizationConnectionStatusError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RetryOrganizationConnectionSyncError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetOrganizationSsoConfigurationError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateOrganizationSsoPolicyError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum BeginOrganizationSsoAdmissionError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum BeginOrganizationAuthenticationError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum BeginOrganizationClosureAuthenticationError { - Status400( - Box< - types::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), Status412( - Box< - types::BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson, - >, + Box, ), + Status422(Box), Status500( - Box< - types::BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson, - >, + Box, ), + Status502(Box), + Status503(Box), + Status504(Box), +} +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub enum DisableOrganizationSsoError { + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum BeginInvitationSsoError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status412(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateOrganizationSsoPortalLinkError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RefreshOrganizationSsoConnectionError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status412( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status412(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateAppInstallationRequestError { - Status400( - Box, - ), - Status401( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status409(Box), + Status422(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RedeemAppInstallationDeliveryError { - Status400( - Box, - ), - Status401( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status409(Box), + Status422(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetOrganizationBillingOverviewError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateOrganizationPaymentMethodCheckoutError { - Status400( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), Status422( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson, - >, + Box, ), Status500( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson, - >, + Box, ), + Status502(Box), Status503( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson, - >, + Box, ), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListInvoicesError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetOrganizationPaymentMethodError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CancelSubscriptionError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ChangePlanError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ResumeSubscriptionError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateOrganizationSetupIntentError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListProjectsError { - Status400(Box), - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateProjectError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetProjectClosureStatusError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CountProjectsError { - Status400(Box), - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CheckProjectSlugAvailabilityError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status500(Box), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListAttachmentsError { - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UploadAttachmentError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetAttachmentError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DownloadAttachmentError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListProjectPlatformsError { - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConnectEmailDomainError { - Status400(Box), - Status401(Box), - Status402(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetProjectImessagePlatformError { - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListSharedLineAssignmentsError { - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateSharedLineAssignmentError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseSharedLineAssignmentError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetSharedLineAssignmentError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ProvisionImessageDedicatedLineError { - Status400( - Box, - ), - Status401(Box), - Status402( - Box, - ), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseImessageDedicatedLineError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListOperationsError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetOperationError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CancelOperationError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListResourcesError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseResourceError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetResourceError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UnassignSmsLineCampaignError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetSmsLineCampaignAssignmentError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum AssignSmsLineCampaignError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum PurchaseSmsNumberError { - Status400(Box), - Status401(Box), - Status402(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListNumberAreaCodesError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListNumberCountriesError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConnectTelegramBotError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum BatchUpdateVoiceLineProfileAssignmentsError { - Status401(Box), - Status403( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson, - >, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), Status500( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson, - >, + Box, ), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UnassignVoiceLineProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetVoiceLineProfileAssignmentError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum AssignVoiceLineProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListVoiceProfilesError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateVoiceProfileError { - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetDefaultVoiceProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateDefaultVoiceProfileError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateDefaultVoiceProfileError { - Status401(Box), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteVoiceProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetVoiceProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateVoiceProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteVoiceProfileInboundError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateVoiceProfileInboundError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReplaceVoiceProfileInboundError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteVoiceProfileOutboundError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateVoiceProfileOutboundAuthenticationError { - Status401(Box), - Status403( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson, - >, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), Status500( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson, - >, + Box, ), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConfigureVoiceProfileOutboundError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RotateVoiceProfileOutboundCredentialError { - Status400( - Box< - types::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), Status422( - Box< - types::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson, - >, + Box, ), + Status429(Box), Status500( - Box< - types::RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson, - >, + Box, ), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetProjectWhatsappPlatformError { - Status401(Box), - Status403( - Box, - ), - Status422( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DisconnectWhatsappBusinessAccountError { - Status400( - Box< - types::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWhatsappBusinessAccountError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWhatsappAccountPhoneNumbersError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateWhatsappVoipSenderError { - Status400(Box), - Status401(Box), - Status402(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConnectWhatsappBusinessError { - Status400(Box), - Status401(Box), - Status402(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWhatsappBusinessVerificationCodeError { - Status401(Box), - Status403( - Box< - types::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson, - >, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWhatsappSignupConfigError { - Status401(Box), - Status403(Box), - Status422(Box), - Status429(Box), - Status500(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWhatsappSharedLineAssignmentsError { - Status401(Box), - Status403( - Box< - types::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson, - >, - ), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateWhatsappSharedLineAssignmentError { - Status400( - Box< - types::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson, - >, - ), - Status401(Box), - Status403( - Box< - types::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, - ), - Status409( - Box< - types::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseWhatsappSharedLineAssignmentError { - Status401(Box), - Status403( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, - ), - Status404( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson, - >, - ), - Status422( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, - ), - Status429( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - ), - Status500( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, - >, - ), - Status502( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, - ), - Status503( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, - ), - Status504( - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWhatsappSharedLineAssignmentError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ProvisionWhatsappDedicatedLineError { - Status400( - Box, - ), - Status401(Box), - Status402( - Box, - ), - Status403( - Box, - ), - Status409( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status402(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseWhatsappDedicatedLineError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status422( - Box, - ), - Status429( - Box, - ), - Status500( - Box, - ), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteProjectError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetProjectError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateProjectError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetAgentProfileError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateAgentProfileError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ResetAgentProfileAvatarError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CommitAgentProfileAvatarError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateAgentProfileAvatarUploadError { - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status422( - Box, - ), - Status500(Box), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListProjectApiKeysError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateProjectApiKeyError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RevokeProjectApiKeyError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateProjectApiKeyError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status410(Box), - Status413(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetBillingOverviewError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetBillingOperationError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListBillingPlansError { - Status400(Box), - Status401(Box), - Status403(Box), - Status409(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status409(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetMessageMetricsBackfillError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status500(Box), - Status503( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status500(Box), + Status503(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetMessageMetricsSqlSchemaError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status500(Box), - Status503(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status500(Box), + Status503(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum QueryMessageMetricsError { - Status400(Box), - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status429(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookApiVersionsError { - Status401(Box), - Status403(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookDestinationsError { - Status400(Box), - Status401(Box), - Status403(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateWebhookDestinationError { - Status400(Box), - Status401(Box), - Status403(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DeleteWebhookDestinationError { - Status401(Box), - Status403(Box), - Status404(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWebhookDestinationError { - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UpdateWebhookDestinationError { - Status400(Box), - Status401(Box), - Status403(Box), - Status404(Box), - Status410(Box), - Status422(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum RotateWebhookSigningSecretError { - Status400( - Box, - ), - Status401(Box), - Status403( - Box, - ), - Status404( - Box, - ), - Status410( - Box, - ), - Status422( - Box, - ), - Status500(Box), - Status502( - Box, - ), - Status503( - Box, - ), - Status504( - Box, - ), + Status400(Box), + Status401(Box), + Status403(Box), + Status404(Box), + Status410(Box), + Status413(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookEgressAddressesError { - Status401(Box), - Status403( - Box, - ), - Status500(Box), - Status503(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookEventTypesError { - Status400(Box), - Status401(Box), - Status403(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWebhookEventSchemaError { - Status400(Box), - Status401(Box), - Status403(Box), - Status500(Box), - Status502(Box), - Status503(Box), - Status504(Box), + Status400(Box), + Status401(Box), + Status403(Box), + Status422(Box), + Status500(Box), + Status502(Box), + Status503(Box), + Status504(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ChangePlanResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UploadAttachmentResponse { - Status200(Box), - Status201(Box), + Status200(Box), + Status201(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseImessageDedicatedLineResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseResourceResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum UnassignSmsLineCampaignResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum AssignSmsLineCampaignResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum CreateDefaultVoiceProfileResponse { - Status200(Box), - Status201(Box), + Status200(Box), + Status201(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReplaceVoiceProfileInboundResponse { - Status200(Box), - Status201(Box), + Status200(Box), + Status201(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ConfigureVoiceProfileOutboundResponse { - Status200(Box), - Status201(Box), + Status200(Box), + Status201(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum DisconnectWhatsappBusinessAccountResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ReleaseWhatsappDedicatedLineResponse { - Status200(Box), - Status202(Box), + Status200(Box), + Status202(Box), } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookApiVersionsResponse { - Status200(Box), + Status200(Box), Status304, } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookEgressAddressesResponse { - Status200(Box), + Status200(Box), Status304, } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum ListWebhookEventTypesResponse { - Status200(Box), + Status200(Box), Status304, } #[allow(dead_code)] #[derive(Debug, Clone)] pub enum GetWebhookEventSchemaResponse { - Status200(Box), + Status200(Box), Status304, } ///Documented response headers for `deleteAccount` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteAccountStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteAccountStatus200Headers; ///Documented response headers for `deleteAccount` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteAccountStatus401Headers; ///Documented response headers for `deleteAccount` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteAccountStatus403Headers; ///Documented response headers for `deleteAccount` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteAccountStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteAccountStatus404Headers; ///Documented response headers for `deleteAccount` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteAccountStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteAccountStatus409Headers; ///Documented response headers for `deleteAccount` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteAccountStatus500Headers; ///Documented response headers for `deleteAccount` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteAccountStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteAccountStatus502Headers; ///Documented response headers for `deleteAccount` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteAccountStatus503Headers; ///Documented response headers for `deleteAccount` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteAccountStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteAccountStatus504Headers; ///Documented response headers for `getAccount` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAccountStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAccountStatus200Headers; ///Documented response headers for `getAccount` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetAccountStatus401Headers; ///Documented response headers for `getAccount` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAccountStatus403Headers; ///Documented response headers for `getAccount` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAccountStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAccountStatus404Headers; ///Documented response headers for `getAccount` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAccountStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAccountStatus410Headers; ///Documented response headers for `getAccount` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAccountStatus500Headers; ///Documented response headers for `getAccount` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAccountStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAccountStatus502Headers; ///Documented response headers for `getAccount` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAccountStatus503Headers; ///Documented response headers for `getAccount` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAccountStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAccountStatus504Headers; ///Documented response headers for `updateAccount` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus200Headers; ///Documented response headers for `updateAccount` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus400Headers; ///Documented response headers for `updateAccount` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateAccountStatus401Headers; ///Documented response headers for `updateAccount` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateAccountStatus403Headers; ///Documented response headers for `updateAccount` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus404Headers; ///Documented response headers for `updateAccount` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus410Headers; ///Documented response headers for `updateAccount` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus413Headers; ///Documented response headers for `updateAccount` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus422Headers; ///Documented response headers for `updateAccount` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateAccountStatus500Headers; ///Documented response headers for `updateAccount` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus502Headers; ///Documented response headers for `updateAccount` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateAccountStatus503Headers; ///Documented response headers for `updateAccount` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAccountStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAccountStatus504Headers; ///Documented response headers for `listAuthorizedApplications` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAuthorizedApplicationsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAuthorizedApplicationsStatus200Headers; ///Documented response headers for `listAuthorizedApplications` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListAuthorizedApplicationsStatus401Headers; ///Documented response headers for `listAuthorizedApplications` `Status403`. -pub use self::BeginInvitationSsoStatus403Headers as ListAuthorizedApplicationsStatus403Headers; +pub use self::AssignSmsLineCampaignStatus403Headers as ListAuthorizedApplicationsStatus403Headers; ///Documented response headers for `listAuthorizedApplications` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAuthorizedApplicationsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAuthorizedApplicationsStatus422Headers; ///Documented response headers for `listAuthorizedApplications` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAuthorizedApplicationsStatus500Headers; ///Documented response headers for `listAuthorizedApplications` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAuthorizedApplicationsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAuthorizedApplicationsStatus502Headers; ///Documented response headers for `listAuthorizedApplications` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAuthorizedApplicationsStatus503Headers; ///Documented response headers for `listAuthorizedApplications` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAuthorizedApplicationsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAuthorizedApplicationsStatus504Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status204`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAuthorizedApplicationStatus204Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAuthorizedApplicationStatus204Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RevokeAuthorizedApplicationStatus401Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status403`. -pub use self::BeginInvitationSsoStatus403Headers as RevokeAuthorizedApplicationStatus403Headers; +pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAuthorizedApplicationStatus403Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAuthorizedApplicationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAuthorizedApplicationStatus422Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAuthorizedApplicationStatus500Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAuthorizedApplicationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAuthorizedApplicationStatus502Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAuthorizedApplicationStatus503Headers; ///Documented response headers for `revokeAuthorizedApplication` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAuthorizedApplicationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAuthorizedApplicationStatus504Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus200Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus400Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ConfirmAccountPhoneVerificationStatus401Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfirmAccountPhoneVerificationStatus403Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus404Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus410Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus413Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus422Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus429Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfirmAccountPhoneVerificationStatus500Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus502Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfirmAccountPhoneVerificationStatus503Headers; ///Documented response headers for `confirmAccountPhoneVerification` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfirmAccountPhoneVerificationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfirmAccountPhoneVerificationStatus504Headers; ///Documented response headers for `startAccountPhoneVerification` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus201Headers; ///Documented response headers for `startAccountPhoneVerification` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus400Headers; ///Documented response headers for `startAccountPhoneVerification` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as StartAccountPhoneVerificationStatus401Headers; ///Documented response headers for `startAccountPhoneVerification` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as StartAccountPhoneVerificationStatus403Headers; ///Documented response headers for `startAccountPhoneVerification` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus404Headers; ///Documented response headers for `startAccountPhoneVerification` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus410Headers; ///Documented response headers for `startAccountPhoneVerification` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus413Headers; ///Documented response headers for `startAccountPhoneVerification` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus422Headers; ///Documented response headers for `startAccountPhoneVerification` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus429Headers; ///Documented response headers for `startAccountPhoneVerification` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as StartAccountPhoneVerificationStatus500Headers; ///Documented response headers for `startAccountPhoneVerification` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus502Headers; ///Documented response headers for `startAccountPhoneVerification` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as StartAccountPhoneVerificationStatus503Headers; ///Documented response headers for `startAccountPhoneVerification` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartAccountPhoneVerificationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartAccountPhoneVerificationStatus504Headers; ///Documented response headers for `resetAccountProfilePicture` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus200Headers; ///Documented response headers for `resetAccountProfilePicture` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus400Headers; ///Documented response headers for `resetAccountProfilePicture` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ResetAccountProfilePictureStatus401Headers; ///Documented response headers for `resetAccountProfilePicture` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ResetAccountProfilePictureStatus403Headers; ///Documented response headers for `resetAccountProfilePicture` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus404Headers; ///Documented response headers for `resetAccountProfilePicture` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus410Headers; ///Documented response headers for `resetAccountProfilePicture` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus413Headers; ///Documented response headers for `resetAccountProfilePicture` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus422Headers; ///Documented response headers for `resetAccountProfilePicture` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ResetAccountProfilePictureStatus500Headers; ///Documented response headers for `resetAccountProfilePicture` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus502Headers; ///Documented response headers for `resetAccountProfilePicture` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ResetAccountProfilePictureStatus503Headers; ///Documented response headers for `resetAccountProfilePicture` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAccountProfilePictureStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAccountProfilePictureStatus504Headers; ///Documented response headers for `commitAccountProfilePicture` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus200Headers; ///Documented response headers for `commitAccountProfilePicture` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus400Headers; ///Documented response headers for `commitAccountProfilePicture` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CommitAccountProfilePictureStatus401Headers; ///Documented response headers for `commitAccountProfilePicture` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CommitAccountProfilePictureStatus403Headers; ///Documented response headers for `commitAccountProfilePicture` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus404Headers; ///Documented response headers for `commitAccountProfilePicture` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus410Headers; ///Documented response headers for `commitAccountProfilePicture` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus413Headers; ///Documented response headers for `commitAccountProfilePicture` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus422Headers; ///Documented response headers for `commitAccountProfilePicture` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CommitAccountProfilePictureStatus500Headers; ///Documented response headers for `commitAccountProfilePicture` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus502Headers; ///Documented response headers for `commitAccountProfilePicture` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CommitAccountProfilePictureStatus503Headers; ///Documented response headers for `commitAccountProfilePicture` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAccountProfilePictureStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAccountProfilePictureStatus504Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus201Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus400Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateAccountProfilePictureUploadStatus401Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountProfilePictureUploadStatus403Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus404Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus410Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus413Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus422Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountProfilePictureUploadStatus500Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus502Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountProfilePictureUploadStatus503Headers; ///Documented response headers for `createAccountProfilePictureUpload` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountProfilePictureUploadStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountProfilePictureUploadStatus504Headers; ///Documented response headers for `listAccountServiceKeys` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAccountServiceKeysStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAccountServiceKeysStatus200Headers; ///Documented response headers for `listAccountServiceKeys` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListAccountServiceKeysStatus401Headers; ///Documented response headers for `listAccountServiceKeys` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAccountServiceKeysStatus403Headers; ///Documented response headers for `listAccountServiceKeys` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAccountServiceKeysStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAccountServiceKeysStatus404Headers; ///Documented response headers for `listAccountServiceKeys` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAccountServiceKeysStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAccountServiceKeysStatus410Headers; ///Documented response headers for `listAccountServiceKeys` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAccountServiceKeysStatus500Headers; ///Documented response headers for `listAccountServiceKeys` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAccountServiceKeysStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAccountServiceKeysStatus502Headers; ///Documented response headers for `listAccountServiceKeys` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAccountServiceKeysStatus503Headers; ///Documented response headers for `listAccountServiceKeys` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAccountServiceKeysStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAccountServiceKeysStatus504Headers; ///Documented response headers for `createAccountServiceKey` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus201Headers; ///Documented response headers for `createAccountServiceKey` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus400Headers; ///Documented response headers for `createAccountServiceKey` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateAccountServiceKeyStatus401Headers; ///Documented response headers for `createAccountServiceKey` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountServiceKeyStatus403Headers; ///Documented response headers for `createAccountServiceKey` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus404Headers; ///Documented response headers for `createAccountServiceKey` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus409Headers; ///Documented response headers for `createAccountServiceKey` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus410Headers; ///Documented response headers for `createAccountServiceKey` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus413Headers; ///Documented response headers for `createAccountServiceKey` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus422Headers; ///Documented response headers for `createAccountServiceKey` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountServiceKeyStatus500Headers; ///Documented response headers for `createAccountServiceKey` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus502Headers; ///Documented response headers for `createAccountServiceKey` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAccountServiceKeyStatus503Headers; ///Documented response headers for `createAccountServiceKey` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAccountServiceKeyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAccountServiceKeyStatus504Headers; ///Documented response headers for `revokeAccountServiceKey` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus200Headers; ///Documented response headers for `revokeAccountServiceKey` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus400Headers; ///Documented response headers for `revokeAccountServiceKey` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RevokeAccountServiceKeyStatus401Headers; ///Documented response headers for `revokeAccountServiceKey` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAccountServiceKeyStatus403Headers; ///Documented response headers for `revokeAccountServiceKey` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus404Headers; ///Documented response headers for `revokeAccountServiceKey` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus410Headers; ///Documented response headers for `revokeAccountServiceKey` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus413Headers; ///Documented response headers for `revokeAccountServiceKey` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus422Headers; ///Documented response headers for `revokeAccountServiceKey` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAccountServiceKeyStatus500Headers; ///Documented response headers for `revokeAccountServiceKey` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus502Headers; ///Documented response headers for `revokeAccountServiceKey` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeAccountServiceKeyStatus503Headers; ///Documented response headers for `revokeAccountServiceKey` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeAccountServiceKeyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeAccountServiceKeyStatus504Headers; ///Documented response headers for `deviceAuthorize` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceAuthorizeStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceAuthorizeStatus200Headers; ///Documented response headers for `deviceAuthorize` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceAuthorizeStatus400Headers; -///Documented response headers for `deviceAuthorize` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceAuthorizeStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceAuthorizeStatus400Headers; +///Documented response headers for `deviceAuthorize` `Status503`. +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceAuthorizeStatus503Headers; ///Documented response headers for `deviceToken` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceTokenStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceTokenStatus200Headers; ///Documented response headers for `deviceToken` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceTokenStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceTokenStatus400Headers; ///Documented response headers for `deviceToken` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceTokenStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceTokenStatus429Headers; ///Documented response headers for `deviceToken` `Status500`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceTokenStatus500Headers; -///Documented response headers for `deviceToken` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeviceTokenStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceTokenStatus500Headers; +///Documented response headers for `deviceToken` `Status503`. +pub use self::AssignSmsLineCampaignStatus400Headers as DeviceTokenStatus503Headers; ///Documented response headers for `startEnterpriseLogin` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartEnterpriseLoginStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartEnterpriseLoginStatus200Headers; ///Documented response headers for `startEnterpriseLogin` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as StartEnterpriseLoginStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as StartEnterpriseLoginStatus400Headers; ///Documented response headers for `listOauthScopes` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOauthScopesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOauthScopesStatus200Headers; ///Documented response headers for `listOauthScopes` `Status503`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOauthScopesStatus503Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOauthScopesStatus503Headers; ///Documented response headers for `listOauthScopes` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOauthScopesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOauthScopesStatus504Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus200Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus400Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetOrganizationConnectionStatusStatus401Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as GetOrganizationConnectionStatusStatus403Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus404Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus409Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus422Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationConnectionStatusStatus500Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus502Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationConnectionStatusStatus503Headers; ///Documented response headers for `getOrganizationConnectionStatus` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationConnectionStatusStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationConnectionStatusStatus504Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus200Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus400Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RetryOrganizationConnectionSyncStatus401Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as RetryOrganizationConnectionSyncStatus403Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus404Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus409Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus422Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as RetryOrganizationConnectionSyncStatus500Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus502Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RetryOrganizationConnectionSyncStatus503Headers; ///Documented response headers for `retryOrganizationConnectionSync` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RetryOrganizationConnectionSyncStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RetryOrganizationConnectionSyncStatus504Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus200Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus400Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetOrganizationSsoConfigurationStatus401Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as GetOrganizationSsoConfigurationStatus403Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus404Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus409Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus412Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus422Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationSsoConfigurationStatus500Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus502Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationSsoConfigurationStatus503Headers; ///Documented response headers for `getOrganizationSsoConfiguration` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationSsoConfigurationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationSsoConfigurationStatus504Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus200Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus400Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateOrganizationSsoPolicyStatus401Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as UpdateOrganizationSsoPolicyStatus403Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus404Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus409Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus412Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus422Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateOrganizationSsoPolicyStatus500Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus502Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateOrganizationSsoPolicyStatus503Headers; ///Documented response headers for `updateOrganizationSsoPolicy` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateOrganizationSsoPolicyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateOrganizationSsoPolicyStatus504Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus200Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus400Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as BeginOrganizationSsoAdmissionStatus401Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as BeginOrganizationSsoAdmissionStatus403Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus404Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus409Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus412Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus422Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationSsoAdmissionStatus500Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus502Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationSsoAdmissionStatus503Headers; ///Documented response headers for `beginOrganizationSsoAdmission` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationSsoAdmissionStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationSsoAdmissionStatus504Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus200Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus400Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as BeginOrganizationAuthenticationStatus401Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as BeginOrganizationAuthenticationStatus403Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus404Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus409Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus412Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus422Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationAuthenticationStatus500Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus502Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationAuthenticationStatus503Headers; ///Documented response headers for `beginOrganizationAuthentication` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationAuthenticationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationAuthenticationStatus504Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus200Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus400Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as BeginOrganizationClosureAuthenticationStatus401Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as BeginOrganizationClosureAuthenticationStatus403Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus404Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus409Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus412Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus422Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationClosureAuthenticationStatus500Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus502Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginOrganizationClosureAuthenticationStatus503Headers; ///Documented response headers for `beginOrganizationClosureAuthentication` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginOrganizationClosureAuthenticationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginOrganizationClosureAuthenticationStatus504Headers; +///Documented response headers for `disableOrganizationSso` `Status200`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus200Headers; +///Documented response headers for `disableOrganizationSso` `Status400`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus400Headers; +///Documented response headers for `disableOrganizationSso` `Status401`. +pub use self::AssignSmsLineCampaignStatus401Headers as DisableOrganizationSsoStatus401Headers; +///Documented response headers for `disableOrganizationSso` `Status403`. +pub use self::BeginInvitationSsoStatus403Headers as DisableOrganizationSsoStatus403Headers; +///Documented response headers for `disableOrganizationSso` `Status404`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus404Headers; +///Documented response headers for `disableOrganizationSso` `Status409`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus409Headers; +///Documented response headers for `disableOrganizationSso` `Status412`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus412Headers; +///Documented response headers for `disableOrganizationSso` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus422Headers; +///Documented response headers for `disableOrganizationSso` `Status500`. +pub use self::AssignSmsLineCampaignStatus403Headers as DisableOrganizationSsoStatus500Headers; +///Documented response headers for `disableOrganizationSso` `Status502`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus502Headers; +///Documented response headers for `disableOrganizationSso` `Status503`. +pub use self::AssignSmsLineCampaignStatus403Headers as DisableOrganizationSsoStatus503Headers; +///Documented response headers for `disableOrganizationSso` `Status504`. +pub use self::AssignSmsLineCampaignStatus400Headers as DisableOrganizationSsoStatus504Headers; ///Documented response headers for `beginInvitationSso` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus200Headers; ///Documented response headers for `beginInvitationSso` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus400Headers; ///Documented response headers for `beginInvitationSso` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as BeginInvitationSsoStatus401Headers; ///Documented response headers for `beginInvitationSso` `Status403`. @@ -181306,208 +166416,208 @@ impl BeginInvitationSsoStatus403Headers { } } ///Documented response headers for `beginInvitationSso` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus404Headers; ///Documented response headers for `beginInvitationSso` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus409Headers; ///Documented response headers for `beginInvitationSso` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus412Headers; ///Documented response headers for `beginInvitationSso` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus422Headers; ///Documented response headers for `beginInvitationSso` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginInvitationSsoStatus500Headers; ///Documented response headers for `beginInvitationSso` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus502Headers; ///Documented response headers for `beginInvitationSso` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as BeginInvitationSsoStatus503Headers; ///Documented response headers for `beginInvitationSso` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as BeginInvitationSsoStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BeginInvitationSsoStatus504Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus200Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus400Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateOrganizationSsoPortalLinkStatus401Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as CreateOrganizationSsoPortalLinkStatus403Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus404Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus409Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus412Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus422Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationSsoPortalLinkStatus500Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus502Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationSsoPortalLinkStatus503Headers; ///Documented response headers for `createOrganizationSsoPortalLink` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSsoPortalLinkStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSsoPortalLinkStatus504Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus200Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus400Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RefreshOrganizationSsoConnectionStatus401Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status403`. pub use self::BeginInvitationSsoStatus403Headers as RefreshOrganizationSsoConnectionStatus403Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus404Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus409Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status412`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus412Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus412Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus422Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as RefreshOrganizationSsoConnectionStatus500Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus502Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RefreshOrganizationSsoConnectionStatus503Headers; ///Documented response headers for `refreshOrganizationSsoConnection` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RefreshOrganizationSsoConnectionStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RefreshOrganizationSsoConnectionStatus504Headers; ///Documented response headers for `createAppInstallationRequest` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus201Headers; ///Documented response headers for `createAppInstallationRequest` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus400Headers; ///Documented response headers for `createAppInstallationRequest` `Status401`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus401Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus401Headers; ///Documented response headers for `createAppInstallationRequest` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus409Headers; ///Documented response headers for `createAppInstallationRequest` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus422Headers; ///Documented response headers for `createAppInstallationRequest` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus502Headers; ///Documented response headers for `createAppInstallationRequest` `Status503`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus503Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus503Headers; ///Documented response headers for `createAppInstallationRequest` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAppInstallationRequestStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAppInstallationRequestStatus504Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus200Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus400Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status401`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus401Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus401Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus409Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus422Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus502Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status503`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus503Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus503Headers; ///Documented response headers for `redeemAppInstallationDelivery` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RedeemAppInstallationDeliveryStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RedeemAppInstallationDeliveryStatus504Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus200Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus400Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetOrganizationBillingOverviewStatus401Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationBillingOverviewStatus403Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus409Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus422Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationBillingOverviewStatus500Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus502Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationBillingOverviewStatus503Headers; ///Documented response headers for `getOrganizationBillingOverview` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationBillingOverviewStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationBillingOverviewStatus504Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus200Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus400Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateOrganizationPaymentMethodCheckoutStatus401Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationPaymentMethodCheckoutStatus403Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus409Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus422Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationPaymentMethodCheckoutStatus500Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus502Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationPaymentMethodCheckoutStatus503Headers; ///Documented response headers for `createOrganizationPaymentMethodCheckout` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationPaymentMethodCheckoutStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationPaymentMethodCheckoutStatus504Headers; ///Documented response headers for `listInvoices` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus200Headers; ///Documented response headers for `listInvoices` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus400Headers; ///Documented response headers for `listInvoices` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListInvoicesStatus401Headers; ///Documented response headers for `listInvoices` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListInvoicesStatus403Headers; ///Documented response headers for `listInvoices` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus409Headers; ///Documented response headers for `listInvoices` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus422Headers; ///Documented response headers for `listInvoices` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListInvoicesStatus500Headers; ///Documented response headers for `listInvoices` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus502Headers; ///Documented response headers for `listInvoices` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListInvoicesStatus503Headers; ///Documented response headers for `listInvoices` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListInvoicesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListInvoicesStatus504Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus200Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus400Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetOrganizationPaymentMethodStatus401Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationPaymentMethodStatus403Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus409Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus422Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationPaymentMethodStatus500Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus502Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOrganizationPaymentMethodStatus503Headers; ///Documented response headers for `getOrganizationPaymentMethod` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOrganizationPaymentMethodStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOrganizationPaymentMethodStatus504Headers; ///Documented response headers for `cancelSubscription` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus200Headers; ///Documented response headers for `cancelSubscription` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus400Headers; ///Documented response headers for `cancelSubscription` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CancelSubscriptionStatus401Headers; ///Documented response headers for `cancelSubscription` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelSubscriptionStatus403Headers; ///Documented response headers for `cancelSubscription` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus409Headers; ///Documented response headers for `cancelSubscription` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus422Headers; ///Documented response headers for `cancelSubscription` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelSubscriptionStatus500Headers; ///Documented response headers for `cancelSubscription` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus502Headers; ///Documented response headers for `cancelSubscription` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelSubscriptionStatus503Headers; ///Documented response headers for `cancelSubscription` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelSubscriptionStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelSubscriptionStatus504Headers; ///Documented response headers for `changePlan` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus200Headers; ///Documented response headers for `changePlan` `Status202`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct ChangePlanStatus202Headers { - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -181521,8 +166631,8 @@ pub struct ChangePlanStatus202Headers { pub rate_limit_policy: Option, ///Minimum seconds to wait before polling again. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -181614,184 +166724,184 @@ impl ChangePlanStatus202Headers { } } ///Documented response headers for `changePlan` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus400Headers; ///Documented response headers for `changePlan` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ChangePlanStatus401Headers; ///Documented response headers for `changePlan` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ChangePlanStatus403Headers; ///Documented response headers for `changePlan` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus409Headers; ///Documented response headers for `changePlan` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus413Headers; ///Documented response headers for `changePlan` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus422Headers; ///Documented response headers for `changePlan` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ChangePlanStatus500Headers; ///Documented response headers for `changePlan` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus502Headers; ///Documented response headers for `changePlan` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ChangePlanStatus503Headers; ///Documented response headers for `changePlan` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ChangePlanStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ChangePlanStatus504Headers; ///Documented response headers for `resumeSubscription` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus200Headers; ///Documented response headers for `resumeSubscription` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus400Headers; ///Documented response headers for `resumeSubscription` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ResumeSubscriptionStatus401Headers; ///Documented response headers for `resumeSubscription` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ResumeSubscriptionStatus403Headers; ///Documented response headers for `resumeSubscription` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus409Headers; ///Documented response headers for `resumeSubscription` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus422Headers; ///Documented response headers for `resumeSubscription` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ResumeSubscriptionStatus500Headers; ///Documented response headers for `resumeSubscription` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus502Headers; ///Documented response headers for `resumeSubscription` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ResumeSubscriptionStatus503Headers; ///Documented response headers for `resumeSubscription` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResumeSubscriptionStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResumeSubscriptionStatus504Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus200Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus400Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateOrganizationSetupIntentStatus401Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationSetupIntentStatus403Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus409Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus422Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationSetupIntentStatus500Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus502Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateOrganizationSetupIntentStatus503Headers; ///Documented response headers for `createOrganizationSetupIntent` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateOrganizationSetupIntentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateOrganizationSetupIntentStatus504Headers; ///Documented response headers for `listProjects` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectsStatus200Headers; ///Documented response headers for `listProjects` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectsStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectsStatus400Headers; ///Documented response headers for `listProjects` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListProjectsStatus401Headers; ///Documented response headers for `listProjects` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListProjectsStatus403Headers; ///Documented response headers for `listProjects` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectsStatus422Headers; ///Documented response headers for `listProjects` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListProjectsStatus500Headers; ///Documented response headers for `listProjects` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectsStatus502Headers; ///Documented response headers for `listProjects` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListProjectsStatus503Headers; ///Documented response headers for `listProjects` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectsStatus504Headers; ///Documented response headers for `createProject` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus201Headers; ///Documented response headers for `createProject` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus400Headers; ///Documented response headers for `createProject` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateProjectStatus401Headers; ///Documented response headers for `createProject` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateProjectStatus403Headers; ///Documented response headers for `createProject` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus409Headers; ///Documented response headers for `createProject` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus413Headers; ///Documented response headers for `createProject` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus422Headers; ///Documented response headers for `createProject` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CreateProjectStatus500Headers; ///Documented response headers for `createProject` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus502Headers; ///Documented response headers for `createProject` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateProjectStatus503Headers; ///Documented response headers for `createProject` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectStatus504Headers; ///Documented response headers for `getProjectClosureStatus` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus200Headers; ///Documented response headers for `getProjectClosureStatus` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus400Headers; ///Documented response headers for `getProjectClosureStatus` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetProjectClosureStatusStatus401Headers; ///Documented response headers for `getProjectClosureStatus` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectClosureStatusStatus403Headers; ///Documented response headers for `getProjectClosureStatus` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus404Headers; ///Documented response headers for `getProjectClosureStatus` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus422Headers; ///Documented response headers for `getProjectClosureStatus` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as GetProjectClosureStatusStatus500Headers; ///Documented response headers for `getProjectClosureStatus` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus502Headers; ///Documented response headers for `getProjectClosureStatus` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectClosureStatusStatus503Headers; ///Documented response headers for `getProjectClosureStatus` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectClosureStatusStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectClosureStatusStatus504Headers; ///Documented response headers for `countProjects` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CountProjectsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CountProjectsStatus200Headers; ///Documented response headers for `countProjects` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CountProjectsStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CountProjectsStatus400Headers; ///Documented response headers for `countProjects` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CountProjectsStatus401Headers; ///Documented response headers for `countProjects` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CountProjectsStatus403Headers; ///Documented response headers for `countProjects` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CountProjectsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CountProjectsStatus422Headers; ///Documented response headers for `countProjects` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CountProjectsStatus500Headers; ///Documented response headers for `countProjects` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CountProjectsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CountProjectsStatus502Headers; ///Documented response headers for `countProjects` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CountProjectsStatus503Headers; ///Documented response headers for `countProjects` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CountProjectsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CountProjectsStatus504Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CheckProjectSlugAvailabilityStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CheckProjectSlugAvailabilityStatus200Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CheckProjectSlugAvailabilityStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CheckProjectSlugAvailabilityStatus400Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CheckProjectSlugAvailabilityStatus401Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CheckProjectSlugAvailabilityStatus403Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CheckProjectSlugAvailabilityStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CheckProjectSlugAvailabilityStatus422Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CheckProjectSlugAvailabilityStatus500Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CheckProjectSlugAvailabilityStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CheckProjectSlugAvailabilityStatus502Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CheckProjectSlugAvailabilityStatus503Headers; ///Documented response headers for `checkProjectSlugAvailability` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CheckProjectSlugAvailabilityStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CheckProjectSlugAvailabilityStatus504Headers; ///Documented response headers for `listAttachments` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAttachmentsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAttachmentsStatus200Headers; ///Documented response headers for `listAttachments` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListAttachmentsStatus401Headers; ///Documented response headers for `listAttachments` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAttachmentsStatus403Headers; ///Documented response headers for `listAttachments` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAttachmentsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAttachmentsStatus422Headers; ///Documented response headers for `listAttachments` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAttachmentsStatus500Headers; ///Documented response headers for `listAttachments` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAttachmentsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAttachmentsStatus502Headers; ///Documented response headers for `listAttachments` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListAttachmentsStatus503Headers; ///Documented response headers for `listAttachments` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListAttachmentsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListAttachmentsStatus504Headers; ///Documented response headers for `uploadAttachment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus200Headers; ///Documented response headers for `uploadAttachment` `Status201`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct UploadAttachmentStatus201Headers { - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -181805,8 +166915,8 @@ pub struct UploadAttachmentStatus201Headers { pub rate_limit_policy: Option, ///Delay before retrying, in seconds or as an HTTP date. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -181898,50 +167008,50 @@ impl UploadAttachmentStatus201Headers { } } ///Documented response headers for `uploadAttachment` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus400Headers; ///Documented response headers for `uploadAttachment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UploadAttachmentStatus401Headers; ///Documented response headers for `uploadAttachment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UploadAttachmentStatus403Headers; ///Documented response headers for `uploadAttachment` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus409Headers; ///Documented response headers for `uploadAttachment` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus413Headers; ///Documented response headers for `uploadAttachment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus422Headers; ///Documented response headers for `uploadAttachment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UploadAttachmentStatus500Headers; ///Documented response headers for `uploadAttachment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus502Headers; ///Documented response headers for `uploadAttachment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UploadAttachmentStatus503Headers; ///Documented response headers for `uploadAttachment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UploadAttachmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UploadAttachmentStatus504Headers; ///Documented response headers for `getAttachment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAttachmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAttachmentStatus200Headers; ///Documented response headers for `getAttachment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetAttachmentStatus401Headers; ///Documented response headers for `getAttachment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAttachmentStatus403Headers; ///Documented response headers for `getAttachment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAttachmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAttachmentStatus404Headers; ///Documented response headers for `getAttachment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAttachmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAttachmentStatus422Headers; ///Documented response headers for `getAttachment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAttachmentStatus500Headers; ///Documented response headers for `getAttachment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAttachmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAttachmentStatus502Headers; ///Documented response headers for `getAttachment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAttachmentStatus503Headers; ///Documented response headers for `getAttachment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAttachmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAttachmentStatus504Headers; ///Documented response headers for `downloadAttachment` `Status200`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct DownloadAttachmentStatus200Headers { ///Attachment disposition using the filename declared during upload. pub content_disposition: Option, - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -181953,8 +167063,8 @@ pub struct DownloadAttachmentStatus200Headers { pub rate_limit_policy: Option, ///Delay before retrying, in seconds or as an HTTP date. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -182050,12 +167160,12 @@ pub use self::AssignSmsLineCampaignStatus401Headers as DownloadAttachmentStatus4 ///Documented response headers for `downloadAttachment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DownloadAttachmentStatus403Headers; ///Documented response headers for `downloadAttachment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DownloadAttachmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DownloadAttachmentStatus404Headers; ///Documented response headers for `downloadAttachment` `Status409`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct DownloadAttachmentStatus409Headers { - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -182066,9 +167176,9 @@ pub struct DownloadAttachmentStatus409Headers { ///Rate-limit policy applied by the gateway. pub rate_limit_policy: Option, ///Seconds to wait before retrying the download. - pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + pub retry_after: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -182154,383 +167264,711 @@ impl DownloadAttachmentStatus409Headers { } } ///Documented response headers for `downloadAttachment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DownloadAttachmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DownloadAttachmentStatus422Headers; ///Documented response headers for `downloadAttachment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DownloadAttachmentStatus500Headers; ///Documented response headers for `downloadAttachment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DownloadAttachmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DownloadAttachmentStatus502Headers; ///Documented response headers for `downloadAttachment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DownloadAttachmentStatus503Headers; ///Documented response headers for `downloadAttachment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DownloadAttachmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DownloadAttachmentStatus504Headers; ///Documented response headers for `listProjectPlatforms` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectPlatformsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectPlatformsStatus200Headers; ///Documented response headers for `listProjectPlatforms` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListProjectPlatformsStatus401Headers; ///Documented response headers for `listProjectPlatforms` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListProjectPlatformsStatus403Headers; ///Documented response headers for `listProjectPlatforms` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectPlatformsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectPlatformsStatus422Headers; ///Documented response headers for `listProjectPlatforms` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListProjectPlatformsStatus500Headers; ///Documented response headers for `listProjectPlatforms` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as ListProjectPlatformsStatus503Headers; ///Documented response headers for `listProjectPlatforms` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectPlatformsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectPlatformsStatus504Headers; ///Documented response headers for `connectEmailDomain` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ConnectEmailDomainStatus202Headers; +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub struct ConnectEmailDomainStatus202Headers { + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. + pub deprecation: Option, + ///True when this response was replayed from an earlier attempt. + pub idempotent_replayed: Option, + ///Links related to lifecycle or remediation documentation. + pub link: Option, + ///Canonical URL of the operation. Resolves immediately, including while the work is still running. + pub location: Option, + ///Current rate-limit state. + pub rate_limit: Option, + ///Rate-limit policy applied by the gateway. + pub rate_limit_policy: Option, + ///Minimum number of seconds to wait before reading the operation again. + pub retry_after: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, + ///Identifier for this HTTP attempt. + pub x_request_id: Option, + ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. + pub x_trace_id: Option, +} +#[allow( + dead_code, + deprecated, + clippy::deref_addrof, + clippy::needless_borrow, + clippy::needless_borrows_for_generic_args, + clippy::redundant_closure_call, + clippy::get_first, + clippy::explicit_auto_deref +)] +impl ConnectEmailDomainStatus202Headers { + /// Read the documented headers out of a raw header map. + pub fn from_headers( + headers: &reqwest::header::HeaderMap, + ) -> Result { + Ok(Self { + deprecation: support::parse_header( + headers, + "Deprecation", + support::HeaderShape::Scalar, + false, + )?, + idempotent_replayed: support::parse_header( + headers, + "Idempotent-Replayed", + support::HeaderShape::Scalar, + false, + )?, + link: support::parse_header( + headers, + "Link", + support::HeaderShape::Scalar, + false, + )?, + location: support::parse_header( + headers, + "Location", + support::HeaderShape::Scalar, + false, + )?, + rate_limit: support::parse_header( + headers, + "RateLimit", + support::HeaderShape::Scalar, + false, + )?, + rate_limit_policy: support::parse_header( + headers, + "RateLimit-Policy", + support::HeaderShape::Scalar, + false, + )?, + retry_after: support::parse_header( + headers, + "Retry-After", + support::HeaderShape::Scalar, + false, + )?, + sunset: support::parse_header( + headers, + "Sunset", + support::HeaderShape::Scalar, + false, + )?, + x_request_id: support::parse_header( + headers, + "X-Request-ID", + support::HeaderShape::Scalar, + false, + )?, + x_trace_id: support::parse_header( + headers, + "X-Trace-ID", + support::HeaderShape::Scalar, + false, + )?, + }) + } + /// Read the documented headers out of a returned response value. + pub fn from_response( + response: &support::ResponseValue, + ) -> Result { + Self::from_headers(response.headers()) + } +} ///Documented response headers for `connectEmailDomain` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus400Headers; ///Documented response headers for `connectEmailDomain` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ConnectEmailDomainStatus401Headers; ///Documented response headers for `connectEmailDomain` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus402Headers; ///Documented response headers for `connectEmailDomain` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectEmailDomainStatus403Headers; ///Documented response headers for `connectEmailDomain` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus409Headers; ///Documented response headers for `connectEmailDomain` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus422Headers; ///Documented response headers for `connectEmailDomain` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus429Headers; ///Documented response headers for `connectEmailDomain` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectEmailDomainStatus500Headers; ///Documented response headers for `connectEmailDomain` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus502Headers; ///Documented response headers for `connectEmailDomain` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectEmailDomainStatus503Headers; ///Documented response headers for `connectEmailDomain` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectEmailDomainStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectEmailDomainStatus504Headers; ///Documented response headers for `getProjectImessagePlatform` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectImessagePlatformStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectImessagePlatformStatus200Headers; ///Documented response headers for `getProjectImessagePlatform` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetProjectImessagePlatformStatus401Headers; ///Documented response headers for `getProjectImessagePlatform` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectImessagePlatformStatus403Headers; ///Documented response headers for `getProjectImessagePlatform` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectImessagePlatformStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectImessagePlatformStatus422Headers; ///Documented response headers for `getProjectImessagePlatform` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectImessagePlatformStatus500Headers; ///Documented response headers for `getProjectImessagePlatform` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectImessagePlatformStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectImessagePlatformStatus502Headers; ///Documented response headers for `getProjectImessagePlatform` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectImessagePlatformStatus503Headers; ///Documented response headers for `getProjectImessagePlatform` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectImessagePlatformStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectImessagePlatformStatus504Headers; ///Documented response headers for `listSharedLineAssignments` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListSharedLineAssignmentsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListSharedLineAssignmentsStatus200Headers; ///Documented response headers for `listSharedLineAssignments` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListSharedLineAssignmentsStatus401Headers; ///Documented response headers for `listSharedLineAssignments` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListSharedLineAssignmentsStatus403Headers; ///Documented response headers for `listSharedLineAssignments` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListSharedLineAssignmentsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListSharedLineAssignmentsStatus422Headers; ///Documented response headers for `listSharedLineAssignments` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListSharedLineAssignmentsStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListSharedLineAssignmentsStatus429Headers; ///Documented response headers for `listSharedLineAssignments` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListSharedLineAssignmentsStatus500Headers; ///Documented response headers for `listSharedLineAssignments` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListSharedLineAssignmentsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListSharedLineAssignmentsStatus502Headers; ///Documented response headers for `listSharedLineAssignments` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListSharedLineAssignmentsStatus503Headers; ///Documented response headers for `listSharedLineAssignments` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListSharedLineAssignmentsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListSharedLineAssignmentsStatus504Headers; ///Documented response headers for `createSharedLineAssignment` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus201Headers; ///Documented response headers for `createSharedLineAssignment` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus400Headers; ///Documented response headers for `createSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateSharedLineAssignmentStatus401Headers; ///Documented response headers for `createSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateSharedLineAssignmentStatus403Headers; ///Documented response headers for `createSharedLineAssignment` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus409Headers; ///Documented response headers for `createSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus422Headers; ///Documented response headers for `createSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus429Headers; ///Documented response headers for `createSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateSharedLineAssignmentStatus500Headers; ///Documented response headers for `createSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus502Headers; ///Documented response headers for `createSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateSharedLineAssignmentStatus503Headers; ///Documented response headers for `createSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateSharedLineAssignmentStatus504Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus200Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReleaseSharedLineAssignmentStatus401Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseSharedLineAssignmentStatus403Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus404Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus422Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus429Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseSharedLineAssignmentStatus500Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus502Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseSharedLineAssignmentStatus503Headers; ///Documented response headers for `releaseSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseSharedLineAssignmentStatus504Headers; ///Documented response headers for `getSharedLineAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus200Headers; ///Documented response headers for `getSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetSharedLineAssignmentStatus401Headers; ///Documented response headers for `getSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSharedLineAssignmentStatus403Headers; ///Documented response headers for `getSharedLineAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus404Headers; ///Documented response headers for `getSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus422Headers; ///Documented response headers for `getSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus429Headers; ///Documented response headers for `getSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSharedLineAssignmentStatus500Headers; ///Documented response headers for `getSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus502Headers; ///Documented response headers for `getSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSharedLineAssignmentStatus503Headers; ///Documented response headers for `getSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSharedLineAssignmentStatus504Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ProvisionImessageDedicatedLineStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ProvisionImessageDedicatedLineStatus202Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus400Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ProvisionImessageDedicatedLineStatus401Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus402Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionImessageDedicatedLineStatus403Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus409Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus422Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus429Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionImessageDedicatedLineStatus500Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus502Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionImessageDedicatedLineStatus503Headers; ///Documented response headers for `provisionImessageDedicatedLine` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionImessageDedicatedLineStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionImessageDedicatedLineStatus504Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status200`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseImessageDedicatedLineStatus200Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseImessageDedicatedLineStatus200Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseImessageDedicatedLineStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseImessageDedicatedLineStatus202Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReleaseImessageDedicatedLineStatus401Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseImessageDedicatedLineStatus403Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseImessageDedicatedLineStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseImessageDedicatedLineStatus404Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseImessageDedicatedLineStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseImessageDedicatedLineStatus422Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseImessageDedicatedLineStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseImessageDedicatedLineStatus429Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseImessageDedicatedLineStatus500Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseImessageDedicatedLineStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseImessageDedicatedLineStatus502Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseImessageDedicatedLineStatus503Headers; ///Documented response headers for `releaseImessageDedicatedLine` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseImessageDedicatedLineStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseImessageDedicatedLineStatus504Headers; ///Documented response headers for `listOperations` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOperationsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOperationsStatus200Headers; ///Documented response headers for `listOperations` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListOperationsStatus401Headers; ///Documented response headers for `listOperations` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListOperationsStatus403Headers; ///Documented response headers for `listOperations` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOperationsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOperationsStatus422Headers; ///Documented response headers for `listOperations` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOperationsStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOperationsStatus429Headers; ///Documented response headers for `listOperations` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListOperationsStatus500Headers; ///Documented response headers for `listOperations` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOperationsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOperationsStatus502Headers; ///Documented response headers for `listOperations` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListOperationsStatus503Headers; ///Documented response headers for `listOperations` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListOperationsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListOperationsStatus504Headers; ///Documented response headers for `getOperation` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus200Headers; +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub struct GetOperationStatus200Headers { + ///Assignment and operation responses must not be cached. + pub cache_control: Option, + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. + pub deprecation: Option, + ///True when this response was replayed from an earlier attempt. + pub idempotent_replayed: Option, + ///Links related to lifecycle or remediation documentation. + pub link: Option, + ///Current rate-limit state. + pub rate_limit: Option, + ///Rate-limit policy applied by the gateway. + pub rate_limit_policy: Option, + ///Minimum number of seconds to wait before reading the operation again. + pub retry_after: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, + ///Identifier for this HTTP attempt. + pub x_request_id: Option, + ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. + pub x_trace_id: Option, +} +#[allow( + dead_code, + deprecated, + clippy::deref_addrof, + clippy::needless_borrow, + clippy::needless_borrows_for_generic_args, + clippy::redundant_closure_call, + clippy::get_first, + clippy::explicit_auto_deref +)] +impl GetOperationStatus200Headers { + /// Read the documented headers out of a raw header map. + pub fn from_headers( + headers: &reqwest::header::HeaderMap, + ) -> Result { + Ok(Self { + cache_control: support::parse_header( + headers, + "Cache-Control", + support::HeaderShape::Scalar, + false, + )?, + deprecation: support::parse_header( + headers, + "Deprecation", + support::HeaderShape::Scalar, + false, + )?, + idempotent_replayed: support::parse_header( + headers, + "Idempotent-Replayed", + support::HeaderShape::Scalar, + false, + )?, + link: support::parse_header( + headers, + "Link", + support::HeaderShape::Scalar, + false, + )?, + rate_limit: support::parse_header( + headers, + "RateLimit", + support::HeaderShape::Scalar, + false, + )?, + rate_limit_policy: support::parse_header( + headers, + "RateLimit-Policy", + support::HeaderShape::Scalar, + false, + )?, + retry_after: support::parse_header( + headers, + "Retry-After", + support::HeaderShape::Scalar, + false, + )?, + sunset: support::parse_header( + headers, + "Sunset", + support::HeaderShape::Scalar, + false, + )?, + x_request_id: support::parse_header( + headers, + "X-Request-ID", + support::HeaderShape::Scalar, + false, + )?, + x_trace_id: support::parse_header( + headers, + "X-Trace-ID", + support::HeaderShape::Scalar, + false, + )?, + }) + } + /// Read the documented headers out of a returned response value. + pub fn from_response( + response: &support::ResponseValue, + ) -> Result { + Self::from_headers(response.headers()) + } +} ///Documented response headers for `getOperation` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetOperationStatus401Headers; ///Documented response headers for `getOperation` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOperationStatus403Headers; ///Documented response headers for `getOperation` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOperationStatus404Headers; ///Documented response headers for `getOperation` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOperationStatus422Headers; ///Documented response headers for `getOperation` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOperationStatus429Headers; ///Documented response headers for `getOperation` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOperationStatus500Headers; ///Documented response headers for `getOperation` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOperationStatus502Headers; ///Documented response headers for `getOperation` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetOperationStatus503Headers; ///Documented response headers for `getOperation` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetOperationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetOperationStatus504Headers; ///Documented response headers for `cancelOperation` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus200Headers; ///Documented response headers for `cancelOperation` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CancelOperationStatus401Headers; ///Documented response headers for `cancelOperation` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelOperationStatus403Headers; ///Documented response headers for `cancelOperation` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus404Headers; ///Documented response headers for `cancelOperation` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus409Headers; ///Documented response headers for `cancelOperation` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus422Headers; ///Documented response headers for `cancelOperation` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus429Headers; ///Documented response headers for `cancelOperation` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelOperationStatus500Headers; ///Documented response headers for `cancelOperation` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus502Headers; ///Documented response headers for `cancelOperation` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CancelOperationStatus503Headers; ///Documented response headers for `cancelOperation` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CancelOperationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CancelOperationStatus504Headers; ///Documented response headers for `listResources` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListResourcesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListResourcesStatus200Headers; ///Documented response headers for `listResources` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListResourcesStatus401Headers; ///Documented response headers for `listResources` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListResourcesStatus403Headers; ///Documented response headers for `listResources` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListResourcesStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListResourcesStatus422Headers; ///Documented response headers for `listResources` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListResourcesStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListResourcesStatus429Headers; ///Documented response headers for `listResources` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListResourcesStatus500Headers; ///Documented response headers for `listResources` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListResourcesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListResourcesStatus502Headers; ///Documented response headers for `listResources` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListResourcesStatus503Headers; ///Documented response headers for `listResources` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListResourcesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListResourcesStatus504Headers; ///Documented response headers for `releaseResource` `Status200`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseResourceStatus200Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseResourceStatus200Headers; ///Documented response headers for `releaseResource` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseResourceStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseResourceStatus202Headers; ///Documented response headers for `releaseResource` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReleaseResourceStatus401Headers; ///Documented response headers for `releaseResource` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseResourceStatus403Headers; ///Documented response headers for `releaseResource` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus404Headers; ///Documented response headers for `releaseResource` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus409Headers; ///Documented response headers for `releaseResource` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus422Headers; ///Documented response headers for `releaseResource` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus429Headers; ///Documented response headers for `releaseResource` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseResourceStatus500Headers; ///Documented response headers for `releaseResource` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus502Headers; ///Documented response headers for `releaseResource` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseResourceStatus503Headers; ///Documented response headers for `releaseResource` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseResourceStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseResourceStatus504Headers; ///Documented response headers for `getResource` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus200Headers; ///Documented response headers for `getResource` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetResourceStatus401Headers; ///Documented response headers for `getResource` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetResourceStatus403Headers; ///Documented response headers for `getResource` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus404Headers; ///Documented response headers for `getResource` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus422Headers; ///Documented response headers for `getResource` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus429Headers; ///Documented response headers for `getResource` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetResourceStatus500Headers; ///Documented response headers for `getResource` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus502Headers; ///Documented response headers for `getResource` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetResourceStatus503Headers; ///Documented response headers for `getResource` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetResourceStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetResourceStatus504Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status200`. pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus200Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status202`. pub use self::AssignSmsLineCampaignStatus202Headers as UnassignSmsLineCampaignStatus202Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus400Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UnassignSmsLineCampaignStatus401Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignSmsLineCampaignStatus403Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus404Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus409Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus422Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus429Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignSmsLineCampaignStatus500Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus502Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignSmsLineCampaignStatus503Headers; ///Documented response headers for `unassignSmsLineCampaign` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignSmsLineCampaignStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignSmsLineCampaignStatus504Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus200Headers; +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub struct GetSmsLineCampaignAssignmentStatus200Headers { + ///Assignment and operation responses must not be cached. + pub cache_control: Option, + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. + pub deprecation: Option, + ///True when this response was replayed from an earlier attempt. + pub idempotent_replayed: Option, + ///Links related to lifecycle or remediation documentation. + pub link: Option, + ///Current rate-limit state. + pub rate_limit: Option, + ///Rate-limit policy applied by the gateway. + pub rate_limit_policy: Option, + ///Delay before retrying, in seconds or as an HTTP date. + pub retry_after: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, + ///Identifier for this HTTP attempt. + pub x_request_id: Option, + ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. + pub x_trace_id: Option, +} +#[allow( + dead_code, + deprecated, + clippy::deref_addrof, + clippy::needless_borrow, + clippy::needless_borrows_for_generic_args, + clippy::redundant_closure_call, + clippy::get_first, + clippy::explicit_auto_deref +)] +impl GetSmsLineCampaignAssignmentStatus200Headers { + /// Read the documented headers out of a raw header map. + pub fn from_headers( + headers: &reqwest::header::HeaderMap, + ) -> Result { + Ok(Self { + cache_control: support::parse_header( + headers, + "Cache-Control", + support::HeaderShape::Scalar, + false, + )?, + deprecation: support::parse_header( + headers, + "Deprecation", + support::HeaderShape::Scalar, + false, + )?, + idempotent_replayed: support::parse_header( + headers, + "Idempotent-Replayed", + support::HeaderShape::Scalar, + false, + )?, + link: support::parse_header( + headers, + "Link", + support::HeaderShape::Scalar, + false, + )?, + rate_limit: support::parse_header( + headers, + "RateLimit", + support::HeaderShape::Scalar, + false, + )?, + rate_limit_policy: support::parse_header( + headers, + "RateLimit-Policy", + support::HeaderShape::Scalar, + false, + )?, + retry_after: support::parse_header( + headers, + "Retry-After", + support::HeaderShape::Scalar, + false, + )?, + sunset: support::parse_header( + headers, + "Sunset", + support::HeaderShape::Scalar, + false, + )?, + x_request_id: support::parse_header( + headers, + "X-Request-ID", + support::HeaderShape::Scalar, + false, + )?, + x_trace_id: support::parse_header( + headers, + "X-Trace-ID", + support::HeaderShape::Scalar, + false, + )?, + }) + } + /// Read the documented headers out of a returned response value. + pub fn from_response( + response: &support::ResponseValue, + ) -> Result { + Self::from_headers(response.headers()) + } +} ///Documented response headers for `getSmsLineCampaignAssignment` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus400Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetSmsLineCampaignAssignmentStatus401Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSmsLineCampaignAssignmentStatus403Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus404Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus409Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus429Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSmsLineCampaignAssignmentStatus500Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus502Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetSmsLineCampaignAssignmentStatus503Headers; ///Documented response headers for `getSmsLineCampaignAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetSmsLineCampaignAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetSmsLineCampaignAssignmentStatus504Headers; ///Documented response headers for `assignSmsLineCampaign` `Status200`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct AssignSmsLineCampaignStatus200Headers { - ///Structured date indicating that the operation is deprecated. + ///Assignment and operation responses must not be cached. + pub cache_control: Option, + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, ///Links related to lifecycle or remediation documentation. pub link: Option, + ///Canonical URL of the operation. Resolves immediately, including while the work is still running. + pub location: Option, ///Current rate-limit state. pub rate_limit: Option, ///Rate-limit policy applied by the gateway. pub rate_limit_policy: Option, ///Delay before retrying, in seconds or as an HTTP date. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -182552,6 +167990,12 @@ impl AssignSmsLineCampaignStatus200Headers { headers: &reqwest::header::HeaderMap, ) -> Result { Ok(Self { + cache_control: support::parse_header( + headers, + "Cache-Control", + support::HeaderShape::Scalar, + false, + )?, deprecation: support::parse_header( headers, "Deprecation", @@ -182570,6 +168014,12 @@ impl AssignSmsLineCampaignStatus200Headers { support::HeaderShape::Scalar, false, )?, + location: support::parse_header( + headers, + "Location", + support::HeaderShape::Scalar, + false, + )?, rate_limit: support::parse_header( headers, "RateLimit", @@ -182619,7 +168069,9 @@ impl AssignSmsLineCampaignStatus200Headers { #[allow(dead_code)] #[derive(Debug, Clone)] pub struct AssignSmsLineCampaignStatus202Headers { - ///Structured date indicating that the operation is deprecated. + ///Assignment and operation responses must not be cached. + pub cache_control: Option, + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -182633,8 +168085,8 @@ pub struct AssignSmsLineCampaignStatus202Headers { pub rate_limit_policy: Option, ///Minimum number of seconds to wait before reading the operation again. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -182656,6 +168108,12 @@ impl AssignSmsLineCampaignStatus202Headers { headers: &reqwest::header::HeaderMap, ) -> Result { Ok(Self { + cache_control: support::parse_header( + headers, + "Cache-Control", + support::HeaderShape::Scalar, + false, + )?, deprecation: support::parse_header( headers, "Deprecation", @@ -182726,7 +168184,107 @@ impl AssignSmsLineCampaignStatus202Headers { } } ///Documented response headers for `assignSmsLineCampaign` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus400Headers; +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub struct AssignSmsLineCampaignStatus400Headers { + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. + pub deprecation: Option, + ///True when this response was replayed from an earlier attempt. + pub idempotent_replayed: Option, + ///Links related to lifecycle or remediation documentation. + pub link: Option, + ///Current rate-limit state. + pub rate_limit: Option, + ///Rate-limit policy applied by the gateway. + pub rate_limit_policy: Option, + ///Delay before retrying, in seconds or as an HTTP date. + pub retry_after: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, + ///Identifier for this HTTP attempt. + pub x_request_id: Option, + ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. + pub x_trace_id: Option, +} +#[allow( + dead_code, + deprecated, + clippy::deref_addrof, + clippy::needless_borrow, + clippy::needless_borrows_for_generic_args, + clippy::redundant_closure_call, + clippy::get_first, + clippy::explicit_auto_deref +)] +impl AssignSmsLineCampaignStatus400Headers { + /// Read the documented headers out of a raw header map. + pub fn from_headers( + headers: &reqwest::header::HeaderMap, + ) -> Result { + Ok(Self { + deprecation: support::parse_header( + headers, + "Deprecation", + support::HeaderShape::Scalar, + false, + )?, + idempotent_replayed: support::parse_header( + headers, + "Idempotent-Replayed", + support::HeaderShape::Scalar, + false, + )?, + link: support::parse_header( + headers, + "Link", + support::HeaderShape::Scalar, + false, + )?, + rate_limit: support::parse_header( + headers, + "RateLimit", + support::HeaderShape::Scalar, + false, + )?, + rate_limit_policy: support::parse_header( + headers, + "RateLimit-Policy", + support::HeaderShape::Scalar, + false, + )?, + retry_after: support::parse_header( + headers, + "Retry-After", + support::HeaderShape::Scalar, + false, + )?, + sunset: support::parse_header( + headers, + "Sunset", + support::HeaderShape::Scalar, + false, + )?, + x_request_id: support::parse_header( + headers, + "X-Request-ID", + support::HeaderShape::Scalar, + false, + )?, + x_trace_id: support::parse_header( + headers, + "X-Trace-ID", + support::HeaderShape::Scalar, + false, + )?, + }) + } + /// Read the documented headers out of a returned response value. + pub fn from_response( + response: &support::ResponseValue, + ) -> Result { + Self::from_headers(response.headers()) + } +} ///Documented response headers for `assignSmsLineCampaign` `Status401`. #[allow(dead_code)] #[derive(Debug, Clone)] @@ -182808,7 +168366,7 @@ impl AssignSmsLineCampaignStatus401Headers { #[allow(dead_code)] #[derive(Debug, Clone)] pub struct AssignSmsLineCampaignStatus403Headers { - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -182828,8 +168386,8 @@ Optional rate limit policy.*/ Optional retry delay or HTTP date.*/ pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, /**Identifier for this HTTP attempt. Application request identifier.*/ @@ -182917,52 +168475,52 @@ impl AssignSmsLineCampaignStatus403Headers { } } ///Documented response headers for `assignSmsLineCampaign` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus404Headers; ///Documented response headers for `assignSmsLineCampaign` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus409Headers; ///Documented response headers for `assignSmsLineCampaign` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus422Headers; ///Documented response headers for `assignSmsLineCampaign` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus429Headers; ///Documented response headers for `assignSmsLineCampaign` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as AssignSmsLineCampaignStatus500Headers; ///Documented response headers for `assignSmsLineCampaign` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus502Headers; ///Documented response headers for `assignSmsLineCampaign` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as AssignSmsLineCampaignStatus503Headers; ///Documented response headers for `assignSmsLineCampaign` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignSmsLineCampaignStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignSmsLineCampaignStatus504Headers; ///Documented response headers for `purchaseSmsNumber` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as PurchaseSmsNumberStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as PurchaseSmsNumberStatus202Headers; ///Documented response headers for `purchaseSmsNumber` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus400Headers; ///Documented response headers for `purchaseSmsNumber` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as PurchaseSmsNumberStatus401Headers; ///Documented response headers for `purchaseSmsNumber` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus402Headers; ///Documented response headers for `purchaseSmsNumber` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as PurchaseSmsNumberStatus403Headers; ///Documented response headers for `purchaseSmsNumber` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus409Headers; ///Documented response headers for `purchaseSmsNumber` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus422Headers; ///Documented response headers for `purchaseSmsNumber` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus429Headers; ///Documented response headers for `purchaseSmsNumber` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as PurchaseSmsNumberStatus500Headers; ///Documented response headers for `purchaseSmsNumber` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus502Headers; ///Documented response headers for `purchaseSmsNumber` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as PurchaseSmsNumberStatus503Headers; ///Documented response headers for `purchaseSmsNumber` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as PurchaseSmsNumberStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as PurchaseSmsNumberStatus504Headers; ///Documented response headers for `listNumberAreaCodes` `Status200`. #[allow(dead_code)] #[derive(Debug, Clone)] pub struct ListNumberAreaCodesStatus200Headers { ///Private cache with the remaining five-minute service-cache lifetime. pub cache_control: Option, - ///Structured date indicating that the operation is deprecated. + ///RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`. pub deprecation: Option, ///True when this response was replayed from an earlier attempt. pub idempotent_replayed: Option, @@ -182974,8 +168532,8 @@ pub struct ListNumberAreaCodesStatus200Headers { pub rate_limit_policy: Option, ///Delay before retrying, in seconds or as an HTTP date. pub retry_after: Option, - ///HTTP date after which the operation may become unavailable. - pub sunset: Option, + ///RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`. + pub sunset: Option, ///Identifier for this HTTP attempt. pub x_request_id: Option, ///Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request. @@ -183071,1101 +168629,1103 @@ pub use self::AssignSmsLineCampaignStatus401Headers as ListNumberAreaCodesStatus ///Documented response headers for `listNumberAreaCodes` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberAreaCodesStatus403Headers; ///Documented response headers for `listNumberAreaCodes` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberAreaCodesStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberAreaCodesStatus422Headers; ///Documented response headers for `listNumberAreaCodes` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberAreaCodesStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberAreaCodesStatus429Headers; ///Documented response headers for `listNumberAreaCodes` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberAreaCodesStatus500Headers; ///Documented response headers for `listNumberAreaCodes` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberAreaCodesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberAreaCodesStatus502Headers; ///Documented response headers for `listNumberAreaCodes` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberAreaCodesStatus503Headers; ///Documented response headers for `listNumberAreaCodes` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberAreaCodesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberAreaCodesStatus504Headers; ///Documented response headers for `listNumberCountries` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberCountriesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberCountriesStatus200Headers; ///Documented response headers for `listNumberCountries` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListNumberCountriesStatus401Headers; ///Documented response headers for `listNumberCountries` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberCountriesStatus403Headers; ///Documented response headers for `listNumberCountries` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberCountriesStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberCountriesStatus422Headers; ///Documented response headers for `listNumberCountries` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberCountriesStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberCountriesStatus429Headers; ///Documented response headers for `listNumberCountries` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberCountriesStatus500Headers; ///Documented response headers for `listNumberCountries` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberCountriesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberCountriesStatus502Headers; ///Documented response headers for `listNumberCountries` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListNumberCountriesStatus503Headers; ///Documented response headers for `listNumberCountries` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListNumberCountriesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListNumberCountriesStatus504Headers; ///Documented response headers for `connectTelegramBot` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ConnectTelegramBotStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ConnectTelegramBotStatus202Headers; ///Documented response headers for `connectTelegramBot` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus400Headers; ///Documented response headers for `connectTelegramBot` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ConnectTelegramBotStatus401Headers; ///Documented response headers for `connectTelegramBot` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectTelegramBotStatus403Headers; ///Documented response headers for `connectTelegramBot` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus409Headers; ///Documented response headers for `connectTelegramBot` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus422Headers; ///Documented response headers for `connectTelegramBot` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus429Headers; ///Documented response headers for `connectTelegramBot` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectTelegramBotStatus500Headers; ///Documented response headers for `connectTelegramBot` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus502Headers; ///Documented response headers for `connectTelegramBot` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectTelegramBotStatus503Headers; ///Documented response headers for `connectTelegramBot` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectTelegramBotStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectTelegramBotStatus504Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus200Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as BatchUpdateVoiceLineProfileAssignmentsStatus401Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as BatchUpdateVoiceLineProfileAssignmentsStatus403Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus404Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus409Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus422Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus429Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as BatchUpdateVoiceLineProfileAssignmentsStatus500Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus502Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as BatchUpdateVoiceLineProfileAssignmentsStatus503Headers; ///Documented response headers for `batchUpdateVoiceLineProfileAssignments` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as BatchUpdateVoiceLineProfileAssignmentsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as BatchUpdateVoiceLineProfileAssignmentsStatus504Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status204`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus204Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus204Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UnassignVoiceLineProfileStatus401Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignVoiceLineProfileStatus403Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus404Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus409Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus422Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus429Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignVoiceLineProfileStatus500Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus502Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UnassignVoiceLineProfileStatus503Headers; ///Documented response headers for `unassignVoiceLineProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UnassignVoiceLineProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UnassignVoiceLineProfileStatus504Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus200Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetVoiceLineProfileAssignmentStatus401Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceLineProfileAssignmentStatus403Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus404Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus422Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus429Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceLineProfileAssignmentStatus500Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus502Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceLineProfileAssignmentStatus503Headers; ///Documented response headers for `getVoiceLineProfileAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceLineProfileAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceLineProfileAssignmentStatus504Headers; ///Documented response headers for `assignVoiceLineProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus200Headers; ///Documented response headers for `assignVoiceLineProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as AssignVoiceLineProfileStatus401Headers; ///Documented response headers for `assignVoiceLineProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as AssignVoiceLineProfileStatus403Headers; ///Documented response headers for `assignVoiceLineProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus404Headers; ///Documented response headers for `assignVoiceLineProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus409Headers; ///Documented response headers for `assignVoiceLineProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus422Headers; ///Documented response headers for `assignVoiceLineProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus429Headers; ///Documented response headers for `assignVoiceLineProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as AssignVoiceLineProfileStatus500Headers; ///Documented response headers for `assignVoiceLineProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus502Headers; ///Documented response headers for `assignVoiceLineProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as AssignVoiceLineProfileStatus503Headers; ///Documented response headers for `assignVoiceLineProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as AssignVoiceLineProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as AssignVoiceLineProfileStatus504Headers; ///Documented response headers for `listVoiceProfiles` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListVoiceProfilesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListVoiceProfilesStatus200Headers; ///Documented response headers for `listVoiceProfiles` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListVoiceProfilesStatus401Headers; ///Documented response headers for `listVoiceProfiles` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListVoiceProfilesStatus403Headers; ///Documented response headers for `listVoiceProfiles` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListVoiceProfilesStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListVoiceProfilesStatus422Headers; ///Documented response headers for `listVoiceProfiles` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListVoiceProfilesStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListVoiceProfilesStatus429Headers; ///Documented response headers for `listVoiceProfiles` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListVoiceProfilesStatus500Headers; ///Documented response headers for `listVoiceProfiles` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListVoiceProfilesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListVoiceProfilesStatus502Headers; ///Documented response headers for `listVoiceProfiles` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListVoiceProfilesStatus503Headers; ///Documented response headers for `listVoiceProfiles` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListVoiceProfilesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListVoiceProfilesStatus504Headers; ///Documented response headers for `createVoiceProfile` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus201Headers; ///Documented response headers for `createVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateVoiceProfileStatus401Headers; ///Documented response headers for `createVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateVoiceProfileStatus403Headers; ///Documented response headers for `createVoiceProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus409Headers; ///Documented response headers for `createVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus422Headers; ///Documented response headers for `createVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus429Headers; ///Documented response headers for `createVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateVoiceProfileStatus500Headers; ///Documented response headers for `createVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus502Headers; ///Documented response headers for `createVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateVoiceProfileStatus503Headers; ///Documented response headers for `createVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateVoiceProfileStatus504Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus200Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetDefaultVoiceProfileStatus401Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetDefaultVoiceProfileStatus403Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus404Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus422Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus429Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetDefaultVoiceProfileStatus500Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus502Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetDefaultVoiceProfileStatus503Headers; ///Documented response headers for `getDefaultVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetDefaultVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetDefaultVoiceProfileStatus504Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus200Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateDefaultVoiceProfileStatus401Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateDefaultVoiceProfileStatus403Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus404Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus409Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus422Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus429Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateDefaultVoiceProfileStatus500Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus502Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateDefaultVoiceProfileStatus503Headers; ///Documented response headers for `updateDefaultVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateDefaultVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateDefaultVoiceProfileStatus504Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus200Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus201Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateDefaultVoiceProfileStatus401Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateDefaultVoiceProfileStatus403Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus409Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus422Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus429Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateDefaultVoiceProfileStatus500Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus502Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateDefaultVoiceProfileStatus503Headers; ///Documented response headers for `createDefaultVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateDefaultVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateDefaultVoiceProfileStatus504Headers; ///Documented response headers for `deleteVoiceProfile` `Status204`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus204Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus204Headers; ///Documented response headers for `deleteVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteVoiceProfileStatus401Headers; ///Documented response headers for `deleteVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileStatus403Headers; ///Documented response headers for `deleteVoiceProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus404Headers; ///Documented response headers for `deleteVoiceProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus409Headers; ///Documented response headers for `deleteVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus422Headers; ///Documented response headers for `deleteVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus429Headers; ///Documented response headers for `deleteVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileStatus500Headers; ///Documented response headers for `deleteVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus502Headers; ///Documented response headers for `deleteVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileStatus503Headers; ///Documented response headers for `deleteVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileStatus504Headers; ///Documented response headers for `getVoiceProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus200Headers; ///Documented response headers for `getVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetVoiceProfileStatus401Headers; ///Documented response headers for `getVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceProfileStatus403Headers; ///Documented response headers for `getVoiceProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus404Headers; ///Documented response headers for `getVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus422Headers; ///Documented response headers for `getVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus429Headers; ///Documented response headers for `getVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceProfileStatus500Headers; ///Documented response headers for `getVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus502Headers; ///Documented response headers for `getVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetVoiceProfileStatus503Headers; ///Documented response headers for `getVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetVoiceProfileStatus504Headers; ///Documented response headers for `updateVoiceProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus200Headers; ///Documented response headers for `updateVoiceProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateVoiceProfileStatus401Headers; ///Documented response headers for `updateVoiceProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileStatus403Headers; ///Documented response headers for `updateVoiceProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus404Headers; ///Documented response headers for `updateVoiceProfile` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus409Headers; ///Documented response headers for `updateVoiceProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus422Headers; ///Documented response headers for `updateVoiceProfile` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus429Headers; ///Documented response headers for `updateVoiceProfile` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileStatus500Headers; ///Documented response headers for `updateVoiceProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus502Headers; ///Documented response headers for `updateVoiceProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileStatus503Headers; ///Documented response headers for `updateVoiceProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileStatus504Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus200Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteVoiceProfileInboundStatus401Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileInboundStatus403Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus404Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus409Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus422Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus429Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileInboundStatus500Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus502Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileInboundStatus503Headers; ///Documented response headers for `deleteVoiceProfileInbound` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileInboundStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileInboundStatus504Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus200Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateVoiceProfileInboundStatus401Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileInboundStatus403Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus404Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus409Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus422Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus429Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileInboundStatus500Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus502Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileInboundStatus503Headers; ///Documented response headers for `updateVoiceProfileInbound` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileInboundStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileInboundStatus504Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus200Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus201Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReplaceVoiceProfileInboundStatus401Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReplaceVoiceProfileInboundStatus403Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus404Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus409Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus422Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus429Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReplaceVoiceProfileInboundStatus500Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus502Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReplaceVoiceProfileInboundStatus503Headers; ///Documented response headers for `replaceVoiceProfileInbound` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReplaceVoiceProfileInboundStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReplaceVoiceProfileInboundStatus504Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus200Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteVoiceProfileOutboundStatus401Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileOutboundStatus403Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus404Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus409Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus422Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus429Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileOutboundStatus500Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus502Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteVoiceProfileOutboundStatus503Headers; ///Documented response headers for `deleteVoiceProfileOutbound` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteVoiceProfileOutboundStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteVoiceProfileOutboundStatus504Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus200Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateVoiceProfileOutboundAuthenticationStatus401Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileOutboundAuthenticationStatus403Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus404Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus409Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus422Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus429Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileOutboundAuthenticationStatus500Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus502Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateVoiceProfileOutboundAuthenticationStatus503Headers; ///Documented response headers for `updateVoiceProfileOutboundAuthentication` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateVoiceProfileOutboundAuthenticationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateVoiceProfileOutboundAuthenticationStatus504Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus200Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus201Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus400Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ConfigureVoiceProfileOutboundStatus401Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfigureVoiceProfileOutboundStatus403Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus404Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus409Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus422Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus429Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfigureVoiceProfileOutboundStatus500Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus502Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ConfigureVoiceProfileOutboundStatus503Headers; ///Documented response headers for `configureVoiceProfileOutbound` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConfigureVoiceProfileOutboundStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConfigureVoiceProfileOutboundStatus504Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus200Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus400Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RotateVoiceProfileOutboundCredentialStatus401Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as RotateVoiceProfileOutboundCredentialStatus403Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus404Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus409Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus422Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus429Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as RotateVoiceProfileOutboundCredentialStatus500Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus502Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RotateVoiceProfileOutboundCredentialStatus503Headers; ///Documented response headers for `rotateVoiceProfileOutboundCredential` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateVoiceProfileOutboundCredentialStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateVoiceProfileOutboundCredentialStatus504Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectWhatsappPlatformStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectWhatsappPlatformStatus200Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetProjectWhatsappPlatformStatus401Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectWhatsappPlatformStatus403Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectWhatsappPlatformStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectWhatsappPlatformStatus422Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectWhatsappPlatformStatus500Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectWhatsappPlatformStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectWhatsappPlatformStatus502Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectWhatsappPlatformStatus503Headers; ///Documented response headers for `getProjectWhatsappPlatform` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectWhatsappPlatformStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectWhatsappPlatformStatus504Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus200Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as DisconnectWhatsappBusinessAccountStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as DisconnectWhatsappBusinessAccountStatus202Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus400Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DisconnectWhatsappBusinessAccountStatus401Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DisconnectWhatsappBusinessAccountStatus403Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus404Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus409Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus422Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus429Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as DisconnectWhatsappBusinessAccountStatus500Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus502Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DisconnectWhatsappBusinessAccountStatus503Headers; ///Documented response headers for `disconnectWhatsappBusinessAccount` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DisconnectWhatsappBusinessAccountStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DisconnectWhatsappBusinessAccountStatus504Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus200Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWhatsappBusinessAccountStatus401Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessAccountStatus403Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus404Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus422Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus429Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessAccountStatus500Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus502Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessAccountStatus503Headers; ///Documented response headers for `getWhatsappBusinessAccount` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessAccountStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessAccountStatus504Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus200Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWhatsappAccountPhoneNumbersStatus401Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappAccountPhoneNumbersStatus403Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus404Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus422Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus429Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappAccountPhoneNumbersStatus500Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus502Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappAccountPhoneNumbersStatus503Headers; ///Documented response headers for `listWhatsappAccountPhoneNumbers` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappAccountPhoneNumbersStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappAccountPhoneNumbersStatus504Headers; ///Documented response headers for `createWhatsappVoipSender` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as CreateWhatsappVoipSenderStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as CreateWhatsappVoipSenderStatus202Headers; ///Documented response headers for `createWhatsappVoipSender` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus400Headers; ///Documented response headers for `createWhatsappVoipSender` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateWhatsappVoipSenderStatus401Headers; ///Documented response headers for `createWhatsappVoipSender` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus402Headers; ///Documented response headers for `createWhatsappVoipSender` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappVoipSenderStatus403Headers; ///Documented response headers for `createWhatsappVoipSender` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus404Headers; ///Documented response headers for `createWhatsappVoipSender` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus409Headers; ///Documented response headers for `createWhatsappVoipSender` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus422Headers; ///Documented response headers for `createWhatsappVoipSender` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus429Headers; ///Documented response headers for `createWhatsappVoipSender` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappVoipSenderStatus500Headers; ///Documented response headers for `createWhatsappVoipSender` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus502Headers; ///Documented response headers for `createWhatsappVoipSender` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappVoipSenderStatus503Headers; ///Documented response headers for `createWhatsappVoipSender` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappVoipSenderStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappVoipSenderStatus504Headers; ///Documented response headers for `connectWhatsappBusiness` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ConnectWhatsappBusinessStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ConnectWhatsappBusinessStatus202Headers; ///Documented response headers for `connectWhatsappBusiness` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus400Headers; ///Documented response headers for `connectWhatsappBusiness` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ConnectWhatsappBusinessStatus401Headers; ///Documented response headers for `connectWhatsappBusiness` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus402Headers; ///Documented response headers for `connectWhatsappBusiness` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectWhatsappBusinessStatus403Headers; ///Documented response headers for `connectWhatsappBusiness` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus409Headers; ///Documented response headers for `connectWhatsappBusiness` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus422Headers; ///Documented response headers for `connectWhatsappBusiness` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus429Headers; ///Documented response headers for `connectWhatsappBusiness` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectWhatsappBusinessStatus500Headers; ///Documented response headers for `connectWhatsappBusiness` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus502Headers; ///Documented response headers for `connectWhatsappBusiness` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ConnectWhatsappBusinessStatus503Headers; ///Documented response headers for `connectWhatsappBusiness` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ConnectWhatsappBusinessStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ConnectWhatsappBusinessStatus504Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus200Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWhatsappBusinessVerificationCodeStatus401Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessVerificationCodeStatus403Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus404Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus422Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus429Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessVerificationCodeStatus500Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus502Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappBusinessVerificationCodeStatus503Headers; ///Documented response headers for `getWhatsappBusinessVerificationCode` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappBusinessVerificationCodeStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappBusinessVerificationCodeStatus504Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSignupConfigStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSignupConfigStatus200Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWhatsappSignupConfigStatus401Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappSignupConfigStatus403Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSignupConfigStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSignupConfigStatus422Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSignupConfigStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSignupConfigStatus429Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappSignupConfigStatus500Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as GetWhatsappSignupConfigStatus503Headers; ///Documented response headers for `getWhatsappSignupConfig` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSignupConfigStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSignupConfigStatus504Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappSharedLineAssignmentsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappSharedLineAssignmentsStatus200Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWhatsappSharedLineAssignmentsStatus401Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappSharedLineAssignmentsStatus403Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappSharedLineAssignmentsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappSharedLineAssignmentsStatus422Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappSharedLineAssignmentsStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappSharedLineAssignmentsStatus429Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappSharedLineAssignmentsStatus500Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappSharedLineAssignmentsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappSharedLineAssignmentsStatus502Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWhatsappSharedLineAssignmentsStatus503Headers; ///Documented response headers for `listWhatsappSharedLineAssignments` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWhatsappSharedLineAssignmentsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWhatsappSharedLineAssignmentsStatus504Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus201Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus400Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateWhatsappSharedLineAssignmentStatus401Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappSharedLineAssignmentStatus403Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus409Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus422Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus429Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappSharedLineAssignmentStatus500Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus502Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWhatsappSharedLineAssignmentStatus503Headers; ///Documented response headers for `createWhatsappSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWhatsappSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWhatsappSharedLineAssignmentStatus504Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus200Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReleaseWhatsappSharedLineAssignmentStatus401Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappSharedLineAssignmentStatus403Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus404Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus422Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus429Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappSharedLineAssignmentStatus500Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus502Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappSharedLineAssignmentStatus503Headers; ///Documented response headers for `releaseWhatsappSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappSharedLineAssignmentStatus504Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus200Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWhatsappSharedLineAssignmentStatus401Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappSharedLineAssignmentStatus403Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus404Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus422Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus429Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappSharedLineAssignmentStatus500Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus502Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWhatsappSharedLineAssignmentStatus503Headers; ///Documented response headers for `getWhatsappSharedLineAssignment` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWhatsappSharedLineAssignmentStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWhatsappSharedLineAssignmentStatus504Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ProvisionWhatsappDedicatedLineStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ProvisionWhatsappDedicatedLineStatus202Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus400Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ProvisionWhatsappDedicatedLineStatus401Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status402`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus402Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus402Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionWhatsappDedicatedLineStatus403Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus409Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus422Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus429Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionWhatsappDedicatedLineStatus500Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus502Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ProvisionWhatsappDedicatedLineStatus503Headers; ///Documented response headers for `provisionWhatsappDedicatedLine` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ProvisionWhatsappDedicatedLineStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ProvisionWhatsappDedicatedLineStatus504Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status200`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseWhatsappDedicatedLineStatus200Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseWhatsappDedicatedLineStatus200Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status202`. -pub use self::AssignSmsLineCampaignStatus202Headers as ReleaseWhatsappDedicatedLineStatus202Headers; +pub use self::ConnectEmailDomainStatus202Headers as ReleaseWhatsappDedicatedLineStatus202Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ReleaseWhatsappDedicatedLineStatus401Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappDedicatedLineStatus403Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappDedicatedLineStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappDedicatedLineStatus404Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappDedicatedLineStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappDedicatedLineStatus422Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status429`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappDedicatedLineStatus429Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappDedicatedLineStatus429Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappDedicatedLineStatus500Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappDedicatedLineStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappDedicatedLineStatus502Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ReleaseWhatsappDedicatedLineStatus503Headers; ///Documented response headers for `releaseWhatsappDedicatedLine` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ReleaseWhatsappDedicatedLineStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ReleaseWhatsappDedicatedLineStatus504Headers; ///Documented response headers for `deleteProject` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus200Headers; ///Documented response headers for `deleteProject` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus400Headers; ///Documented response headers for `deleteProject` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteProjectStatus401Headers; ///Documented response headers for `deleteProject` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteProjectStatus403Headers; ///Documented response headers for `deleteProject` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus404Headers; ///Documented response headers for `deleteProject` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus413Headers; ///Documented response headers for `deleteProject` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus422Headers; ///Documented response headers for `deleteProject` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as DeleteProjectStatus500Headers; ///Documented response headers for `deleteProject` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus502Headers; ///Documented response headers for `deleteProject` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteProjectStatus503Headers; ///Documented response headers for `deleteProject` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteProjectStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteProjectStatus504Headers; ///Documented response headers for `getProject` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus200Headers; ///Documented response headers for `getProject` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetProjectStatus401Headers; ///Documented response headers for `getProject` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectStatus403Headers; ///Documented response headers for `getProject` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus404Headers; ///Documented response headers for `getProject` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus410Headers; ///Documented response headers for `getProject` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus422Headers; ///Documented response headers for `getProject` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as GetProjectStatus500Headers; ///Documented response headers for `getProject` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus502Headers; ///Documented response headers for `getProject` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetProjectStatus503Headers; ///Documented response headers for `getProject` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetProjectStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetProjectStatus504Headers; ///Documented response headers for `updateProject` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus200Headers; ///Documented response headers for `updateProject` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus400Headers; ///Documented response headers for `updateProject` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateProjectStatus401Headers; ///Documented response headers for `updateProject` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateProjectStatus403Headers; ///Documented response headers for `updateProject` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus404Headers; ///Documented response headers for `updateProject` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus410Headers; ///Documented response headers for `updateProject` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus413Headers; ///Documented response headers for `updateProject` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus422Headers; ///Documented response headers for `updateProject` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as UpdateProjectStatus500Headers; ///Documented response headers for `updateProject` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus502Headers; ///Documented response headers for `updateProject` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateProjectStatus503Headers; ///Documented response headers for `updateProject` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectStatus504Headers; ///Documented response headers for `getAgentProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus200Headers; ///Documented response headers for `getAgentProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetAgentProfileStatus401Headers; ///Documented response headers for `getAgentProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAgentProfileStatus403Headers; ///Documented response headers for `getAgentProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus404Headers; ///Documented response headers for `getAgentProfile` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus410Headers; ///Documented response headers for `getAgentProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus422Headers; ///Documented response headers for `getAgentProfile` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as GetAgentProfileStatus500Headers; ///Documented response headers for `getAgentProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus502Headers; ///Documented response headers for `getAgentProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetAgentProfileStatus503Headers; ///Documented response headers for `getAgentProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetAgentProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetAgentProfileStatus504Headers; ///Documented response headers for `updateAgentProfile` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus200Headers; ///Documented response headers for `updateAgentProfile` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus400Headers; ///Documented response headers for `updateAgentProfile` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateAgentProfileStatus401Headers; ///Documented response headers for `updateAgentProfile` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateAgentProfileStatus403Headers; ///Documented response headers for `updateAgentProfile` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus404Headers; ///Documented response headers for `updateAgentProfile` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus410Headers; ///Documented response headers for `updateAgentProfile` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus413Headers; ///Documented response headers for `updateAgentProfile` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus422Headers; ///Documented response headers for `updateAgentProfile` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as UpdateAgentProfileStatus500Headers; ///Documented response headers for `updateAgentProfile` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus502Headers; ///Documented response headers for `updateAgentProfile` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateAgentProfileStatus503Headers; ///Documented response headers for `updateAgentProfile` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateAgentProfileStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateAgentProfileStatus504Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus200Headers; +///Documented response headers for `resetAgentProfileAvatar` `Status400`. +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus400Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ResetAgentProfileAvatarStatus401Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ResetAgentProfileAvatarStatus403Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus404Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus410Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus422Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ResetAgentProfileAvatarStatus500Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus502Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ResetAgentProfileAvatarStatus503Headers; ///Documented response headers for `resetAgentProfileAvatar` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ResetAgentProfileAvatarStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ResetAgentProfileAvatarStatus504Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus200Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus400Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CommitAgentProfileAvatarStatus401Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CommitAgentProfileAvatarStatus403Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus404Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus410Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus413Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus422Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CommitAgentProfileAvatarStatus500Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus502Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CommitAgentProfileAvatarStatus503Headers; ///Documented response headers for `commitAgentProfileAvatar` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CommitAgentProfileAvatarStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CommitAgentProfileAvatarStatus504Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus201Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateAgentProfileAvatarUploadStatus401Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAgentProfileAvatarUploadStatus403Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus404Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus410Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus422Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CreateAgentProfileAvatarUploadStatus500Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus502Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateAgentProfileAvatarUploadStatus503Headers; ///Documented response headers for `createAgentProfileAvatarUpload` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateAgentProfileAvatarUploadStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateAgentProfileAvatarUploadStatus504Headers; ///Documented response headers for `listProjectApiKeys` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus200Headers; ///Documented response headers for `listProjectApiKeys` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus400Headers; ///Documented response headers for `listProjectApiKeys` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListProjectApiKeysStatus401Headers; ///Documented response headers for `listProjectApiKeys` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListProjectApiKeysStatus403Headers; ///Documented response headers for `listProjectApiKeys` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus404Headers; ///Documented response headers for `listProjectApiKeys` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus410Headers; ///Documented response headers for `listProjectApiKeys` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus422Headers; ///Documented response headers for `listProjectApiKeys` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListProjectApiKeysStatus500Headers; ///Documented response headers for `listProjectApiKeys` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus502Headers; ///Documented response headers for `listProjectApiKeys` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as ListProjectApiKeysStatus503Headers; ///Documented response headers for `listProjectApiKeys` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListProjectApiKeysStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListProjectApiKeysStatus504Headers; ///Documented response headers for `createProjectApiKey` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus201Headers; ///Documented response headers for `createProjectApiKey` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus400Headers; ///Documented response headers for `createProjectApiKey` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateProjectApiKeyStatus401Headers; ///Documented response headers for `createProjectApiKey` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateProjectApiKeyStatus403Headers; ///Documented response headers for `createProjectApiKey` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus404Headers; ///Documented response headers for `createProjectApiKey` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus409Headers; ///Documented response headers for `createProjectApiKey` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus410Headers; ///Documented response headers for `createProjectApiKey` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus413Headers; ///Documented response headers for `createProjectApiKey` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus422Headers; ///Documented response headers for `createProjectApiKey` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CreateProjectApiKeyStatus500Headers; ///Documented response headers for `createProjectApiKey` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus502Headers; ///Documented response headers for `createProjectApiKey` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as CreateProjectApiKeyStatus503Headers; ///Documented response headers for `createProjectApiKey` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateProjectApiKeyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateProjectApiKeyStatus504Headers; ///Documented response headers for `revokeProjectApiKey` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus200Headers; ///Documented response headers for `revokeProjectApiKey` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus400Headers; ///Documented response headers for `revokeProjectApiKey` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RevokeProjectApiKeyStatus401Headers; ///Documented response headers for `revokeProjectApiKey` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as RevokeProjectApiKeyStatus403Headers; ///Documented response headers for `revokeProjectApiKey` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus404Headers; ///Documented response headers for `revokeProjectApiKey` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus410Headers; ///Documented response headers for `revokeProjectApiKey` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus422Headers; ///Documented response headers for `revokeProjectApiKey` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as RevokeProjectApiKeyStatus500Headers; ///Documented response headers for `revokeProjectApiKey` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus502Headers; ///Documented response headers for `revokeProjectApiKey` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as RevokeProjectApiKeyStatus503Headers; ///Documented response headers for `revokeProjectApiKey` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RevokeProjectApiKeyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RevokeProjectApiKeyStatus504Headers; ///Documented response headers for `updateProjectApiKey` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus200Headers; ///Documented response headers for `updateProjectApiKey` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus400Headers; ///Documented response headers for `updateProjectApiKey` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateProjectApiKeyStatus401Headers; ///Documented response headers for `updateProjectApiKey` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateProjectApiKeyStatus403Headers; ///Documented response headers for `updateProjectApiKey` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus404Headers; ///Documented response headers for `updateProjectApiKey` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus409Headers; ///Documented response headers for `updateProjectApiKey` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus410Headers; ///Documented response headers for `updateProjectApiKey` `Status413`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus413Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus413Headers; ///Documented response headers for `updateProjectApiKey` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus422Headers; ///Documented response headers for `updateProjectApiKey` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as UpdateProjectApiKeyStatus500Headers; ///Documented response headers for `updateProjectApiKey` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus502Headers; ///Documented response headers for `updateProjectApiKey` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as UpdateProjectApiKeyStatus503Headers; ///Documented response headers for `updateProjectApiKey` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateProjectApiKeyStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateProjectApiKeyStatus504Headers; ///Documented response headers for `getBillingOverview` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus200Headers; ///Documented response headers for `getBillingOverview` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus400Headers; ///Documented response headers for `getBillingOverview` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetBillingOverviewStatus401Headers; ///Documented response headers for `getBillingOverview` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOverviewStatus403Headers; ///Documented response headers for `getBillingOverview` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus409Headers; ///Documented response headers for `getBillingOverview` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus422Headers; ///Documented response headers for `getBillingOverview` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOverviewStatus500Headers; ///Documented response headers for `getBillingOverview` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus502Headers; ///Documented response headers for `getBillingOverview` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOverviewStatus503Headers; ///Documented response headers for `getBillingOverview` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOverviewStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOverviewStatus504Headers; ///Documented response headers for `getBillingOperation` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus200Headers; ///Documented response headers for `getBillingOperation` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus400Headers; ///Documented response headers for `getBillingOperation` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetBillingOperationStatus401Headers; ///Documented response headers for `getBillingOperation` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOperationStatus403Headers; ///Documented response headers for `getBillingOperation` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus404Headers; ///Documented response headers for `getBillingOperation` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus409Headers; ///Documented response headers for `getBillingOperation` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus422Headers; ///Documented response headers for `getBillingOperation` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOperationStatus500Headers; ///Documented response headers for `getBillingOperation` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus502Headers; ///Documented response headers for `getBillingOperation` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetBillingOperationStatus503Headers; ///Documented response headers for `getBillingOperation` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetBillingOperationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetBillingOperationStatus504Headers; ///Documented response headers for `listBillingPlans` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus200Headers; ///Documented response headers for `listBillingPlans` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus400Headers; ///Documented response headers for `listBillingPlans` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListBillingPlansStatus401Headers; ///Documented response headers for `listBillingPlans` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListBillingPlansStatus403Headers; ///Documented response headers for `listBillingPlans` `Status409`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus409Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus409Headers; ///Documented response headers for `listBillingPlans` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus422Headers; ///Documented response headers for `listBillingPlans` `Status500`. pub use self::AssignSmsLineCampaignStatus403Headers as ListBillingPlansStatus500Headers; ///Documented response headers for `listBillingPlans` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus502Headers; ///Documented response headers for `listBillingPlans` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListBillingPlansStatus503Headers; ///Documented response headers for `listBillingPlans` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListBillingPlansStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListBillingPlansStatus504Headers; ///Documented response headers for `getMessageMetricsBackfill` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetMessageMetricsBackfillStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetMessageMetricsBackfillStatus200Headers; ///Documented response headers for `getMessageMetricsBackfill` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetMessageMetricsBackfillStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetMessageMetricsBackfillStatus400Headers; ///Documented response headers for `getMessageMetricsBackfill` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetMessageMetricsBackfillStatus401Headers; ///Documented response headers for `getMessageMetricsBackfill` `Status403`. @@ -184175,9 +169735,9 @@ pub use self::BeginInvitationSsoStatus403Headers as GetMessageMetricsBackfillSta ///Documented response headers for `getMessageMetricsBackfill` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetMessageMetricsBackfillStatus503Headers; ///Documented response headers for `getMessageMetricsSqlSchema` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetMessageMetricsSqlSchemaStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetMessageMetricsSqlSchemaStatus200Headers; ///Documented response headers for `getMessageMetricsSqlSchema` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetMessageMetricsSqlSchemaStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetMessageMetricsSqlSchemaStatus400Headers; ///Documented response headers for `getMessageMetricsSqlSchema` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetMessageMetricsSqlSchemaStatus401Headers; ///Documented response headers for `getMessageMetricsSqlSchema` `Status403`. @@ -184187,199 +169747,223 @@ pub use self::BeginInvitationSsoStatus403Headers as GetMessageMetricsSqlSchemaSt ///Documented response headers for `getMessageMetricsSqlSchema` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as GetMessageMetricsSqlSchemaStatus503Headers; ///Documented response headers for `queryMessageMetrics` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as QueryMessageMetricsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus200Headers; ///Documented response headers for `queryMessageMetrics` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as QueryMessageMetricsStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus400Headers; ///Documented response headers for `queryMessageMetrics` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as QueryMessageMetricsStatus401Headers; ///Documented response headers for `queryMessageMetrics` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as QueryMessageMetricsStatus403Headers; ///Documented response headers for `queryMessageMetrics` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as QueryMessageMetricsStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus422Headers; +///Documented response headers for `queryMessageMetrics` `Status429`. +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus429Headers; ///Documented response headers for `queryMessageMetrics` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as QueryMessageMetricsStatus500Headers; ///Documented response headers for `queryMessageMetrics` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as QueryMessageMetricsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus502Headers; ///Documented response headers for `queryMessageMetrics` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as QueryMessageMetricsStatus503Headers; ///Documented response headers for `queryMessageMetrics` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as QueryMessageMetricsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as QueryMessageMetricsStatus504Headers; ///Documented response headers for `listWebhookApiVersions` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookApiVersionsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookApiVersionsStatus200Headers; ///Documented response headers for `listWebhookApiVersions` `Status304`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookApiVersionsStatus304Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookApiVersionsStatus304Headers; ///Documented response headers for `listWebhookApiVersions` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWebhookApiVersionsStatus401Headers; ///Documented response headers for `listWebhookApiVersions` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookApiVersionsStatus403Headers; +///Documented response headers for `listWebhookApiVersions` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookApiVersionsStatus422Headers; ///Documented response headers for `listWebhookApiVersions` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListWebhookApiVersionsStatus500Headers; ///Documented response headers for `listWebhookApiVersions` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookApiVersionsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookApiVersionsStatus502Headers; ///Documented response headers for `listWebhookApiVersions` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookApiVersionsStatus503Headers; ///Documented response headers for `listWebhookApiVersions` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookApiVersionsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookApiVersionsStatus504Headers; ///Documented response headers for `listWebhookDestinations` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookDestinationsStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookDestinationsStatus200Headers; ///Documented response headers for `listWebhookDestinations` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookDestinationsStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookDestinationsStatus400Headers; ///Documented response headers for `listWebhookDestinations` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWebhookDestinationsStatus401Headers; ///Documented response headers for `listWebhookDestinations` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookDestinationsStatus403Headers; +///Documented response headers for `listWebhookDestinations` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookDestinationsStatus422Headers; ///Documented response headers for `listWebhookDestinations` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListWebhookDestinationsStatus500Headers; ///Documented response headers for `listWebhookDestinations` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookDestinationsStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookDestinationsStatus502Headers; ///Documented response headers for `listWebhookDestinations` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookDestinationsStatus503Headers; ///Documented response headers for `listWebhookDestinations` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookDestinationsStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookDestinationsStatus504Headers; ///Documented response headers for `createWebhookDestination` `Status201`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWebhookDestinationStatus201Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus201Headers; ///Documented response headers for `createWebhookDestination` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWebhookDestinationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus400Headers; ///Documented response headers for `createWebhookDestination` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as CreateWebhookDestinationStatus401Headers; ///Documented response headers for `createWebhookDestination` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWebhookDestinationStatus403Headers; +///Documented response headers for `createWebhookDestination` `Status413`. +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus413Headers; ///Documented response headers for `createWebhookDestination` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWebhookDestinationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus422Headers; ///Documented response headers for `createWebhookDestination` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as CreateWebhookDestinationStatus500Headers; ///Documented response headers for `createWebhookDestination` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWebhookDestinationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus502Headers; ///Documented response headers for `createWebhookDestination` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as CreateWebhookDestinationStatus503Headers; ///Documented response headers for `createWebhookDestination` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as CreateWebhookDestinationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as CreateWebhookDestinationStatus504Headers; ///Documented response headers for `deleteWebhookDestination` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteWebhookDestinationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteWebhookDestinationStatus200Headers; ///Documented response headers for `deleteWebhookDestination` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as DeleteWebhookDestinationStatus401Headers; ///Documented response headers for `deleteWebhookDestination` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteWebhookDestinationStatus403Headers; ///Documented response headers for `deleteWebhookDestination` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteWebhookDestinationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteWebhookDestinationStatus404Headers; +///Documented response headers for `deleteWebhookDestination` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteWebhookDestinationStatus422Headers; ///Documented response headers for `deleteWebhookDestination` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as DeleteWebhookDestinationStatus500Headers; ///Documented response headers for `deleteWebhookDestination` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteWebhookDestinationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteWebhookDestinationStatus502Headers; ///Documented response headers for `deleteWebhookDestination` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as DeleteWebhookDestinationStatus503Headers; ///Documented response headers for `deleteWebhookDestination` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as DeleteWebhookDestinationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as DeleteWebhookDestinationStatus504Headers; ///Documented response headers for `getWebhookDestination` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookDestinationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus200Headers; ///Documented response headers for `getWebhookDestination` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWebhookDestinationStatus401Headers; ///Documented response headers for `getWebhookDestination` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWebhookDestinationStatus403Headers; ///Documented response headers for `getWebhookDestination` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookDestinationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus404Headers; ///Documented response headers for `getWebhookDestination` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookDestinationStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus410Headers; +///Documented response headers for `getWebhookDestination` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus422Headers; ///Documented response headers for `getWebhookDestination` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as GetWebhookDestinationStatus500Headers; ///Documented response headers for `getWebhookDestination` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookDestinationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus502Headers; ///Documented response headers for `getWebhookDestination` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWebhookDestinationStatus503Headers; ///Documented response headers for `getWebhookDestination` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookDestinationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookDestinationStatus504Headers; ///Documented response headers for `updateWebhookDestination` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus200Headers; ///Documented response headers for `updateWebhookDestination` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus400Headers; ///Documented response headers for `updateWebhookDestination` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as UpdateWebhookDestinationStatus401Headers; ///Documented response headers for `updateWebhookDestination` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateWebhookDestinationStatus403Headers; ///Documented response headers for `updateWebhookDestination` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus404Headers; ///Documented response headers for `updateWebhookDestination` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus410Headers; +///Documented response headers for `updateWebhookDestination` `Status413`. +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus413Headers; ///Documented response headers for `updateWebhookDestination` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus422Headers; ///Documented response headers for `updateWebhookDestination` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as UpdateWebhookDestinationStatus500Headers; ///Documented response headers for `updateWebhookDestination` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus502Headers; ///Documented response headers for `updateWebhookDestination` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as UpdateWebhookDestinationStatus503Headers; ///Documented response headers for `updateWebhookDestination` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as UpdateWebhookDestinationStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as UpdateWebhookDestinationStatus504Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus200Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus400Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as RotateWebhookSigningSecretStatus401Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as RotateWebhookSigningSecretStatus403Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status404`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus404Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus404Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status410`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus410Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus410Headers; +///Documented response headers for `rotateWebhookSigningSecret` `Status413`. +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus413Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status422`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus422Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus422Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as RotateWebhookSigningSecretStatus500Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus502Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as RotateWebhookSigningSecretStatus503Headers; ///Documented response headers for `rotateWebhookSigningSecret` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as RotateWebhookSigningSecretStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as RotateWebhookSigningSecretStatus504Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEgressAddressesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEgressAddressesStatus200Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status304`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEgressAddressesStatus304Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEgressAddressesStatus304Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWebhookEgressAddressesStatus401Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookEgressAddressesStatus403Headers; +///Documented response headers for `listWebhookEgressAddresses` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEgressAddressesStatus422Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListWebhookEgressAddressesStatus500Headers; ///Documented response headers for `listWebhookEgressAddresses` `Status503`. pub use self::BeginInvitationSsoStatus403Headers as ListWebhookEgressAddressesStatus503Headers; +///Documented response headers for `listWebhookEgressAddresses` `Status504`. +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEgressAddressesStatus504Headers; ///Documented response headers for `listWebhookEventTypes` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEventTypesStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus200Headers; ///Documented response headers for `listWebhookEventTypes` `Status304`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEventTypesStatus304Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus304Headers; ///Documented response headers for `listWebhookEventTypes` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEventTypesStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus400Headers; ///Documented response headers for `listWebhookEventTypes` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as ListWebhookEventTypesStatus401Headers; ///Documented response headers for `listWebhookEventTypes` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookEventTypesStatus403Headers; +///Documented response headers for `listWebhookEventTypes` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus422Headers; ///Documented response headers for `listWebhookEventTypes` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as ListWebhookEventTypesStatus500Headers; ///Documented response headers for `listWebhookEventTypes` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEventTypesStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus502Headers; ///Documented response headers for `listWebhookEventTypes` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as ListWebhookEventTypesStatus503Headers; ///Documented response headers for `listWebhookEventTypes` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as ListWebhookEventTypesStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as ListWebhookEventTypesStatus504Headers; ///Documented response headers for `getWebhookEventSchema` `Status200`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookEventSchemaStatus200Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus200Headers; ///Documented response headers for `getWebhookEventSchema` `Status304`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookEventSchemaStatus304Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus304Headers; ///Documented response headers for `getWebhookEventSchema` `Status400`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookEventSchemaStatus400Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus400Headers; ///Documented response headers for `getWebhookEventSchema` `Status401`. pub use self::AssignSmsLineCampaignStatus401Headers as GetWebhookEventSchemaStatus401Headers; ///Documented response headers for `getWebhookEventSchema` `Status403`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWebhookEventSchemaStatus403Headers; +///Documented response headers for `getWebhookEventSchema` `Status422`. +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus422Headers; ///Documented response headers for `getWebhookEventSchema` `Status500`. pub use self::BeginInvitationSsoStatus403Headers as GetWebhookEventSchemaStatus500Headers; ///Documented response headers for `getWebhookEventSchema` `Status502`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookEventSchemaStatus502Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus502Headers; ///Documented response headers for `getWebhookEventSchema` `Status503`. pub use self::AssignSmsLineCampaignStatus403Headers as GetWebhookEventSchemaStatus503Headers; ///Documented response headers for `getWebhookEventSchema` `Status504`. -pub use self::AssignSmsLineCampaignStatus200Headers as GetWebhookEventSchemaStatus504Headers; +pub use self::AssignSmsLineCampaignStatus400Headers as GetWebhookEventSchemaStatus504Headers; /// Base URLs declared by the API description. #[allow(dead_code)] pub mod servers { @@ -184452,7 +170036,7 @@ impl Client { ///# Declared schemes /// ///- `accountServiceKey` — `http` (`bearer`). - /// - Account Service Key, `pho_ask_` prefixed, sent as `Authorization: Bearer `. Acts as the account, so it reaches every route the account can. A WorkOS access token from a dashboard session or an OAuth grant is accepted on the same header. + /// - Account Service Key, prefixed with `pho_ask_`, sent as `Authorization: Bearer `. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted. ///- `oauth2` — `oauth2`. /// - OAuth grant issued by the Photon authorization server. The token is a bearer JWT whose consented scope is intersected with the permissions the route grants; an empty intersection is `403 insufficient_scope`. /// - Flow `authorizationCode`: @@ -184500,7 +170084,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -184519,7 +170103,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn delete_account( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account".to_owned(); @@ -184537,12 +170121,6 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req kind: support::AuthKind::Bearer, }, ][..], - &[ - support::AuthScheme { - name: "oauth2", - kind: support::AuthKind::Bearer, - }, - ][..], ], ) .await @@ -184552,9 +170130,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::DeleteAccountResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -184569,7 +170145,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184597,7 +170173,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184625,7 +170201,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184653,7 +170229,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184681,7 +170257,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184709,7 +170285,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184737,7 +170313,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184765,7 +170341,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184809,7 +170385,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -184828,7 +170404,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn get_account( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account".to_owned(); @@ -184861,9 +170437,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetAccountResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -184878,7 +170452,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184906,7 +170480,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184934,7 +170508,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184962,7 +170536,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -184990,7 +170564,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185018,7 +170592,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185046,7 +170620,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185074,7 +170648,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185120,7 +170694,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -185143,9 +170717,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn update_account( &self, idempotency_key: String, - body: &types::UpdateAccountRequestApplicationJson, + body: &types::UpdateAccountRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account".to_owned(); @@ -185189,9 +170763,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateAccountResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -185206,7 +170778,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185234,7 +170806,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185262,7 +170834,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185290,7 +170862,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185318,7 +170890,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185346,7 +170918,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185374,7 +170946,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185402,7 +170974,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185430,7 +171002,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185458,7 +171030,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185486,7 +171058,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185528,7 +171100,9 @@ Response `200`: OAuth applications authorized by the authenticated user. Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden + +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -185546,9 +171120,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, params: Option, ) -> Result< - support::ResponseValue< - types::ListAuthorizedApplicationsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/oauth/authorized-applications".to_owned(); @@ -185624,7 +171196,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListAuthorizedApplicationsResponse200ApplicationJson, + types::ListAuthorizedApplicationsResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -185640,7 +171212,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185668,9 +171240,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185698,9 +171268,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185728,9 +171296,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185758,9 +171324,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185788,9 +171352,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185818,9 +171380,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185862,7 +171422,9 @@ Response `204`: OAuth application grant revoked. Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden + +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -185933,7 +171495,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185961,9 +171523,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -185991,9 +171551,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186021,9 +171579,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186051,9 +171607,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186081,9 +171635,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186111,9 +171663,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186159,7 +171709,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -186183,11 +171733,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub async fn confirm_account_phone_verification( &self, - body: &types::ConfirmAccountPhoneVerificationRequestApplicationJson, + body: &types::ConfirmAccountPhoneVerificationRequest, ) -> Result< - support::ResponseValue< - types::ConfirmAccountPhoneVerificationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/phone".to_owned(); @@ -186221,9 +171769,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ConfirmAccountPhoneVerificationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -186238,9 +171784,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186268,7 +171812,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186296,9 +171840,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186326,9 +171868,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186356,9 +171896,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186386,9 +171924,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186416,9 +171952,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186445,11 +171979,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -186477,7 +172007,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson, + types::ConfirmAccountPhoneVerificationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -186506,9 +172036,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186536,9 +172064,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186566,9 +172092,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186614,7 +172138,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -186638,11 +172162,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub async fn start_account_phone_verification( &self, - body: &types::StartAccountPhoneVerificationRequestApplicationJson, + body: &types::StartAccountPhoneVerificationRequest, ) -> Result< - support::ResponseValue< - types::StartAccountPhoneVerificationResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/phone/verifications".to_owned(); @@ -186677,7 +172199,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::StartAccountPhoneVerificationResponse201ApplicationJson, + types::StartAccountPhoneVerificationResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -186693,9 +172215,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186723,7 +172243,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186751,9 +172271,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186781,9 +172299,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186811,9 +172327,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186841,9 +172355,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186871,9 +172383,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186900,11 +172410,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -186932,7 +172438,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson, + types::StartAccountPhoneVerificationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -186961,9 +172467,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -186991,9 +172495,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187021,9 +172523,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187069,7 +172569,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -187093,9 +172593,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, ) -> Result< - support::ResponseValue< - types::ResetAccountProfilePictureResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/profile-picture".to_owned(); @@ -187138,9 +172636,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ResetAccountProfilePictureResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -187155,9 +172651,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187185,7 +172679,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187213,9 +172707,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187243,9 +172735,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187273,9 +172763,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187303,9 +172791,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187333,9 +172819,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187363,9 +172847,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187393,9 +172875,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187423,9 +172903,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187453,9 +172931,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAccountProfilePictureResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187501,7 +172977,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -187524,11 +173000,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn commit_account_profile_picture( &self, idempotency_key: String, - body: &types::CommitAccountProfilePictureRequestApplicationJson, + body: &types::CommitAccountProfilePictureRequest, ) -> Result< - support::ResponseValue< - types::CommitAccountProfilePictureResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/profile-picture".to_owned(); @@ -187572,9 +173046,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CommitAccountProfilePictureResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -187589,9 +173061,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187619,7 +173089,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187647,9 +173117,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187677,9 +173145,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187707,9 +173173,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187737,9 +173201,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187767,9 +173229,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187797,9 +173257,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187827,9 +173285,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187857,9 +173313,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187887,9 +173341,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAccountProfilePictureResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -187935,7 +173387,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -187957,11 +173409,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub async fn create_account_profile_picture_upload( &self, - body: &types::CreateAccountProfilePictureUploadRequestApplicationJson, + body: &types::ProfilePictureUploadRequest, ) -> Result< - support::ResponseValue< - types::CreateAccountProfilePictureUploadResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/profile-picture/uploads".to_owned(); @@ -187995,9 +173445,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateAccountProfilePictureUploadResponse201ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -188012,9 +173460,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188042,7 +173488,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188070,9 +173516,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188100,9 +173544,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188130,9 +173572,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188160,9 +173600,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188190,9 +173628,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188221,7 +173657,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson, + types::CreateAccountProfilePictureUploadInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -188250,9 +173686,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188280,9 +173714,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188311,7 +173743,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson, + types::CreateAccountProfilePictureUploadGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -188350,13 +173782,13 @@ Returns metadata for the authenticated account's unrevoked service keys, includi Tags: Account Service Keys. -Response `200`: Active Account Service Key metadata, newest first. +Response `200`: Unrevoked Account Service Key metadata, including expired keys, newest first. Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -188375,7 +173807,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn list_account_service_keys( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/service-keys".to_owned(); @@ -188393,12 +173825,6 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req kind: support::AuthKind::Bearer, }, ][..], - &[ - support::AuthScheme { - name: "oauth2", - kind: support::AuthKind::Bearer, - }, - ][..], ], ) .await @@ -188409,7 +173835,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListAccountServiceKeysResponse200ApplicationJson, + types::ListAccountServiceKeysResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -188425,7 +173851,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188453,9 +173879,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188483,9 +173907,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188513,9 +173935,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188543,9 +173963,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188573,9 +173991,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188603,9 +174019,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188633,9 +174047,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListAccountServiceKeysResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188681,7 +174093,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -188706,9 +174118,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn create_account_service_key( &self, idempotency_key: String, - body: &types::CreateAccountServiceKeyRequestApplicationJson, + body: &types::CreateAccountServiceKeyRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/service-keys".to_owned(); @@ -188737,12 +174149,6 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req kind: support::AuthKind::Bearer, }, ][..], - &[ - support::AuthScheme { - name: "oauth2", - kind: support::AuthKind::Bearer, - }, - ][..], ], ) .await @@ -188753,7 +174159,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateAccountServiceKeyResponse201ApplicationJson, + types::CreateAccountServiceKeyResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -188769,9 +174175,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188799,7 +174203,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188827,9 +174231,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188857,9 +174259,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188887,9 +174287,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188917,9 +174315,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188947,9 +174343,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -188977,9 +174371,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189007,9 +174399,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189037,9 +174427,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189067,9 +174455,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189097,9 +174483,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAccountServiceKeyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189145,7 +174529,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found @@ -189170,7 +174554,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, service_key_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/account/service-keys/{serviceKeyId}".to_owned(); @@ -189208,12 +174592,6 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req kind: support::AuthKind::Bearer, }, ][..], - &[ - support::AuthScheme { - name: "oauth2", - kind: support::AuthKind::Bearer, - }, - ][..], ], ) .await @@ -189224,7 +174602,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RevokeAccountServiceKeyResponse200ApplicationJson, + types::RevokeAccountServiceKeyResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -189240,9 +174618,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189270,7 +174646,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189298,9 +174674,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189328,9 +174702,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189358,9 +174730,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189388,9 +174758,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189418,9 +174786,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189448,9 +174814,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189478,9 +174842,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189508,9 +174870,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189538,9 +174898,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189578,16 +174936,16 @@ Starts the device authorization flow for a CLI or another device without a brows Tags: Device Authorization. -Response `200`: Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side. +Response `200`: Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server. -Response `400`: WorkOS rejected the request. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling. +Response `400`: The authorization request was rejected. OAuth errors use error and error_description fields. -Response `502`: WorkOS could not be reached (problem+json).*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ #[inline] pub async fn device_authorize( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/device/code".to_owned(); @@ -189601,7 +174959,7 @@ Response `502`: WorkOS could not be reached (problem+json).*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::DeviceAuthorizeResponse200ApplicationJson, + types::DeviceAuthorizeResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -189625,15 +174983,32 @@ Response `502`: WorkOS could not be reached (problem+json).*/ ), ); } - if support::StatusSpec::Exact(502u16).matches(status) { + if support::StatusSpec::Exact(503u16).matches(status) { return Err( - support::Error::Api( - support::ResponseValue::new( - status, - headers, - DeviceAuthorizeError::Status502, - ), - ), + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + DeviceAuthorizeError::Status503(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, ); } Err(support::Error::UnexpectedStatus { @@ -189659,13 +175034,13 @@ Response `429`: Relayed slow_down; back off the polling interval. Response `500`: server_error: the login could not be completed; retry the login from the start. -Response `502`: WorkOS could not be reached (problem+json).*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ #[inline] pub async fn device_token( &self, - body: &types::DeviceTokenRequestApplicationJson, + body: &types::DeviceTokenRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/device/token".to_owned(); @@ -189679,9 +175054,7 @@ Response `502`: WorkOS could not be reached (problem+json).*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::DeviceTokenResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -189696,7 +175069,7 @@ Response `502`: WorkOS could not be reached (problem+json).*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189743,15 +175116,32 @@ Response `502`: WorkOS could not be reached (problem+json).*/ ), ); } - if support::StatusSpec::Exact(502u16).matches(status) { + if support::StatusSpec::Exact(503u16).matches(status) { return Err( - support::Error::Api( - support::ResponseValue::new( - status, - headers, - DeviceTokenError::Status502, - ), - ), + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + DeviceTokenError::Status503(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, ); } Err(support::Error::UnexpectedStatus { @@ -189773,9 +175163,9 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To*/ #[inline] pub async fn start_enterprise_login( &self, - body: &types::StartEnterpriseLoginRequestApplicationJson, + body: &types::StartEnterpriseLoginRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/login/enrollment".to_owned(); @@ -189790,7 +175180,7 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::StartEnterpriseLoginResponse200ApplicationJson, + types::StartEnterpriseLoginResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -189818,7 +175208,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn list_oauth_scopes( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/oauth/scopes".to_owned(); @@ -189832,7 +175222,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListOauthScopesResponse200ApplicationJson, + types::ListOauthScopesResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -189848,7 +175238,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189876,7 +175266,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -189920,7 +175310,7 @@ Response `400`: INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found @@ -189942,9 +175332,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationConnectionStatusResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/connection-status".to_owned(); @@ -189982,7 +175370,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetOrganizationConnectionStatusResponse200ApplicationJson, + types::OrganizationConnectionStatus, >(&self.core, response) .await .map_err(support::Error::widen) @@ -189998,9 +175386,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190028,7 +175414,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190056,9 +175442,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190086,9 +175470,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190116,9 +175498,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190146,9 +175526,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190177,7 +175555,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson, + types::GetOrganizationConnectionStatusInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -190206,9 +175584,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190236,9 +175612,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190266,9 +175640,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190312,7 +175684,7 @@ Response `400`: INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found @@ -190334,9 +175706,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::RetryOrganizationConnectionSyncResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/connection-sync/retry".to_owned(); @@ -190374,7 +175744,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RetryOrganizationConnectionSyncResponse200ApplicationJson, + types::OrganizationConnectionStatus, >(&self.core, response) .await .map_err(support::Error::widen) @@ -190390,9 +175760,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190420,7 +175788,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190448,9 +175816,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190478,9 +175844,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190508,9 +175872,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190536,10 +175898,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req ); } if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + RetryOrganizationConnectionSyncError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< Box< - types::RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson, + types::RetryOrganizationConnectionSyncInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -190549,7 +175939,383 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - RetryOrganizationConnectionSyncError::Status422(value), + RetryOrganizationConnectionSyncError::Status500(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(502u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + RetryOrganizationConnectionSyncError::Status502(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(503u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + RetryOrganizationConnectionSyncError::Status503(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(504u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + RetryOrganizationConnectionSyncError::Status504(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + Err(support::Error::UnexpectedStatus { + status, + headers, + body, + }) + } + } + /**Read organization SSO configuration + +Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings. + +Tags: Organization SSO. + +Response `200`: Current connection and independent local policy state. + +Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument + +Response `401`: NOT_AUTHENTICATED: Not Authenticated + +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found + +Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict + +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed + +Response `500`: INVALID_AUTH_CONTEXT: Invalid Authentication Context + +INTERNAL_ERROR: Internal Server Error + +Response `502`: UPSTREAM_FAILURE: Upstream Service Failure + +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable + +Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ + #[inline] + pub async fn get_organization_sso_configuration( + &self, + org_id: String, + ) -> Result< + support::ResponseValue, + support::Error, + > { + let mut path = "/v1/auth/organizations/{orgId}/sso".to_owned(); + path = path + .replace( + "{orgId}", + &support::serialize_simple( + &org_id, + false, + support::PercentEncoding::Unreserved, + ) + .map_err(support::Error::request_construction)?, + ); + let mut query: Vec = Vec::new(); + let url = support::build_url_on(&self.core, None, &path, &query) + .map_err(support::Error::widen)?; + let mut request = self.core.http().request(reqwest::Method::GET, url); + request = support::attach_auth( + &self.core, + request, + &[ + &[ + support::AuthScheme { + name: "accountServiceKey", + kind: support::AuthKind::Bearer, + }, + ][..], + ], + ) + .await + .map_err(support::Error::widen)?; + let request = request.build().map_err(support::Error::request_construction)?; + let response = support::send(&self.core, request) + .await + .map_err(support::Error::widen)?; + if response.status().is_success() { + support::decode_success::< + types::OrganizationSsoConfiguration, + >(&self.core, response) + .await + .map_err(support::Error::widen) + } else { + let (status, headers, body, truncated) = match support::read_error_body::< + GetOrganizationSsoConfigurationError, + >(&self.core, response) + .await + { + Ok(parts) => parts, + Err(error) => return Err(error), + }; + if support::StatusSpec::Exact(400u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status400(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(401u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status401(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(403u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status403(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(404u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status404(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(409u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status409(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(412u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box< + types::GetOrganizationSsoConfigurationPreconditionFailedProblem, + >, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status412(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetOrganizationSsoConfigurationError::Status422(value), ), ) } @@ -190569,7 +176335,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson, + types::GetOrganizationSsoConfigurationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -190579,7 +176345,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - RetryOrganizationConnectionSyncError::Status500(value), + GetOrganizationSsoConfigurationError::Status500(value), ), ) } @@ -190598,9 +176364,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190609,7 +176373,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - RetryOrganizationConnectionSyncError::Status502(value), + GetOrganizationSsoConfigurationError::Status502(value), ), ) } @@ -190628,9 +176392,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190639,7 +176401,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - RetryOrganizationConnectionSyncError::Status503(value), + GetOrganizationSsoConfigurationError::Status503(value), ), ) } @@ -190658,9 +176420,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190669,7 +176429,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - RetryOrganizationConnectionSyncError::Status504(value), + GetOrganizationSsoConfigurationError::Status504(value), ), ) } @@ -190692,9 +176452,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }) } } - /**Read organization SSO configuration + /**Update organization SSO policy -Returns the selected organization’s SSO connection state, configuration version, and desired and effective policy settings. Read policySyncStatus alongside the enforcement fields to distinguish requested settings from synchronized settings. +Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing. Tags: Organization SSO. @@ -190704,13 +176464,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -190724,14 +176484,13 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ #[inline] - pub async fn get_organization_sso_configuration( + pub async fn update_organization_sso_policy( &self, org_id: String, + body: &types::UpdateOrganizationSsoPolicyRequest, ) -> Result< - support::ResponseValue< - types::GetOrganizationSsoConfigurationResponse200ApplicationJson, - >, - support::Error, + support::ResponseValue, + support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/sso".to_owned(); path = path @@ -190747,7 +176506,8 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req let mut query: Vec = Vec::new(); let url = support::build_url_on(&self.core, None, &path, &query) .map_err(support::Error::widen)?; - let mut request = self.core.http().request(reqwest::Method::GET, url); + let mut request = self.core.http().request(reqwest::Method::PATCH, url); + request = request.json(body); request = support::attach_auth( &self.core, request, @@ -190768,13 +176528,13 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetOrganizationSsoConfigurationResponse200ApplicationJson, + types::OrganizationSsoConfiguration, >(&self.core, response) .await .map_err(support::Error::widen) } else { let (status, headers, body, truncated) = match support::read_error_body::< - GetOrganizationSsoConfigurationError, + UpdateOrganizationSsoPolicyError, >(&self.core, response) .await { @@ -190784,9 +176544,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190795,7 +176553,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status400(value), + UpdateOrganizationSsoPolicyError::Status400(value), ), ) } @@ -190814,7 +176572,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190823,7 +176581,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status401(value), + UpdateOrganizationSsoPolicyError::Status401(value), ), ) } @@ -190842,9 +176600,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190853,7 +176609,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status403(value), + UpdateOrganizationSsoPolicyError::Status403(value), ), ) } @@ -190872,9 +176628,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190883,7 +176637,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status404(value), + UpdateOrganizationSsoPolicyError::Status404(value), ), ) } @@ -190902,9 +176656,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190913,7 +176665,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status409(value), + UpdateOrganizationSsoPolicyError::Status409(value), ), ) } @@ -190932,9 +176684,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(412u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190943,7 +176693,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status412(value), + UpdateOrganizationSsoPolicyError::Status412(value), ), ) } @@ -190962,9 +176712,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -190973,7 +176721,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status422(value), + UpdateOrganizationSsoPolicyError::Status422(value), ), ) } @@ -190992,9 +176740,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191003,7 +176749,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status500(value), + UpdateOrganizationSsoPolicyError::Status500(value), ), ) } @@ -191022,9 +176768,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191033,7 +176777,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status502(value), + UpdateOrganizationSsoPolicyError::Status502(value), ), ) } @@ -191052,9 +176796,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191063,7 +176805,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status503(value), + UpdateOrganizationSsoPolicyError::Status503(value), ), ) } @@ -191082,9 +176824,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191093,7 +176833,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - GetOrganizationSsoConfigurationError::Status504(value), + UpdateOrganizationSsoPolicyError::Status504(value), ), ) } @@ -191116,25 +176856,25 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }) } } - /**Update organization SSO policy + /**Begin organization SSO admission for an existing Account -Updates whether SSO can admit new members automatically using ssoJitEnabled and the current expectedVersion. Returns the organization’s SSO configuration and policy synchronization status; a successful response does not mean every desired policy setting has finished synchronizing. +Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership. Tags: Organization SSO. -Response `200`: Current connection and independent local policy state. +Response `200`: Targeted SSO authorization URL. Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -191148,17 +176888,15 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ #[inline] - pub async fn update_organization_sso_policy( + pub async fn begin_organization_sso_admission( &self, org_id: String, - body: &types::UpdateOrganizationSsoPolicyRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::UpdateOrganizationSsoPolicyResponse200ApplicationJson, - >, - support::Error, + support::ResponseValue, + support::Error, > { - let mut path = "/v1/auth/organizations/{orgId}/sso".to_owned(); + let mut path = "/v1/auth/organizations/{orgId}/sso/admission".to_owned(); path = path .replace( "{orgId}", @@ -191172,7 +176910,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req let mut query: Vec = Vec::new(); let url = support::build_url_on(&self.core, None, &path, &query) .map_err(support::Error::widen)?; - let mut request = self.core.http().request(reqwest::Method::PATCH, url); + let mut request = self.core.http().request(reqwest::Method::POST, url); request = request.json(body); request = support::attach_auth( &self.core, @@ -191194,13 +176932,13 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::UpdateOrganizationSsoPolicyResponse200ApplicationJson, + types::OrganizationAuthenticationRedirect, >(&self.core, response) .await .map_err(support::Error::widen) } else { let (status, headers, body, truncated) = match support::read_error_body::< - UpdateOrganizationSsoPolicyError, + BeginOrganizationSsoAdmissionError, >(&self.core, response) .await { @@ -191210,9 +176948,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191221,7 +176957,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status400(value), + BeginOrganizationSsoAdmissionError::Status400(value), ), ) } @@ -191240,7 +176976,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191249,7 +176985,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status401(value), + BeginOrganizationSsoAdmissionError::Status401(value), ), ) } @@ -191268,9 +177004,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191279,7 +177013,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status403(value), + BeginOrganizationSsoAdmissionError::Status403(value), ), ) } @@ -191298,9 +177032,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191309,7 +177041,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status404(value), + BeginOrganizationSsoAdmissionError::Status404(value), ), ) } @@ -191328,9 +177060,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191339,7 +177069,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status409(value), + BeginOrganizationSsoAdmissionError::Status409(value), ), ) } @@ -191359,7 +177089,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson, + types::BeginOrganizationSsoAdmissionPreconditionFailedProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -191369,7 +177099,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status412(value), + BeginOrganizationSsoAdmissionError::Status412(value), ), ) } @@ -191388,9 +177118,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191399,7 +177127,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status422(value), + BeginOrganizationSsoAdmissionError::Status422(value), ), ) } @@ -191419,7 +177147,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson, + types::BeginOrganizationSsoAdmissionInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -191429,7 +177157,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status500(value), + BeginOrganizationSsoAdmissionError::Status500(value), ), ) } @@ -191448,9 +177176,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191459,7 +177185,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status502(value), + BeginOrganizationSsoAdmissionError::Status502(value), ), ) } @@ -191478,9 +177204,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191489,7 +177213,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status503(value), + BeginOrganizationSsoAdmissionError::Status503(value), ), ) } @@ -191508,9 +177232,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191519,7 +177241,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - UpdateOrganizationSsoPolicyError::Status504(value), + BeginOrganizationSsoAdmissionError::Status504(value), ), ) } @@ -191542,9 +177264,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }) } } - /**Begin organization SSO admission for an existing Account + /**Authenticate to the current organization SSO connection -Returns an SSO admission URL for an existing account and the selected organization. Supply returnTo for the continuation URL. Admission requires completing the returned authentication flow; creating the URL does not itself grant membership. +Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session. Tags: Organization SSO. @@ -191554,13 +177276,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -191574,17 +177296,15 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ #[inline] - pub async fn begin_organization_sso_admission( + pub async fn begin_organization_authentication( &self, org_id: String, - body: &types::BeginOrganizationSsoAdmissionRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationSsoAdmissionResponse200ApplicationJson, - >, - support::Error, + support::ResponseValue, + support::Error, > { - let mut path = "/v1/auth/organizations/{orgId}/sso/admission".to_owned(); + let mut path = "/v1/auth/organizations/{orgId}/sso/authenticate".to_owned(); path = path .replace( "{orgId}", @@ -191620,13 +177340,13 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::BeginOrganizationSsoAdmissionResponse200ApplicationJson, + types::OrganizationAuthenticationRedirect, >(&self.core, response) .await .map_err(support::Error::widen) } else { let (status, headers, body, truncated) = match support::read_error_body::< - BeginOrganizationSsoAdmissionError, + BeginOrganizationAuthenticationError, >(&self.core, response) .await { @@ -191636,9 +177356,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191647,7 +177365,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status400(value), + BeginOrganizationAuthenticationError::Status400(value), ), ) } @@ -191666,7 +177384,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191675,7 +177393,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status401(value), + BeginOrganizationAuthenticationError::Status401(value), ), ) } @@ -191694,9 +177412,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191705,7 +177421,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status403(value), + BeginOrganizationAuthenticationError::Status403(value), ), ) } @@ -191724,9 +177440,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191735,7 +177449,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status404(value), + BeginOrganizationAuthenticationError::Status404(value), ), ) } @@ -191754,9 +177468,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191765,7 +177477,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status409(value), + BeginOrganizationAuthenticationError::Status409(value), ), ) } @@ -191785,7 +177497,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson, + types::BeginOrganizationAuthenticationPreconditionFailedProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -191795,7 +177507,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status412(value), + BeginOrganizationAuthenticationError::Status412(value), ), ) } @@ -191814,9 +177526,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191825,7 +177535,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status422(value), + BeginOrganizationAuthenticationError::Status422(value), ), ) } @@ -191845,7 +177555,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson, + types::BeginOrganizationAuthenticationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -191855,7 +177565,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status500(value), + BeginOrganizationAuthenticationError::Status500(value), ), ) } @@ -191874,9 +177584,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191885,7 +177593,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status502(value), + BeginOrganizationAuthenticationError::Status502(value), ), ) } @@ -191904,9 +177612,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191915,7 +177621,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status503(value), + BeginOrganizationAuthenticationError::Status503(value), ), ) } @@ -191934,9 +177640,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -191945,7 +177649,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationSsoAdmissionError::Status504(value), + BeginOrganizationAuthenticationError::Status504(value), ), ) } @@ -191968,9 +177672,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }) } } - /**Authenticate to the current organization SSO connection + /**Authenticate the current Owner to inspect organization closure -Returns a URL to authenticate through the selected organization’s current SSO connection. Supply returnTo and open the returned URL to continue the flow. Receiving the URL does not establish an authenticated session. +Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization. Tags: Organization SSO. @@ -191980,13 +177684,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -192000,17 +177704,16 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ #[inline] - pub async fn begin_organization_authentication( + pub async fn begin_organization_closure_authentication( &self, org_id: String, - body: &types::BeginOrganizationAuthenticationRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationAuthenticationResponse200ApplicationJson, - >, - support::Error, + support::ResponseValue, + support::Error, > { - let mut path = "/v1/auth/organizations/{orgId}/sso/authenticate".to_owned(); + let mut path = "/v1/auth/organizations/{orgId}/sso/closure-authenticate" + .to_owned(); path = path .replace( "{orgId}", @@ -192046,13 +177749,13 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::BeginOrganizationAuthenticationResponse200ApplicationJson, + types::OrganizationAuthenticationRedirect, >(&self.core, response) .await .map_err(support::Error::widen) } else { let (status, headers, body, truncated) = match support::read_error_body::< - BeginOrganizationAuthenticationError, + BeginOrganizationClosureAuthenticationError, >(&self.core, response) .await { @@ -192063,7 +177766,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson, + types::BeginOrganizationClosureAuthenticationBadRequestProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -192073,7 +177776,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status400(value), + BeginOrganizationClosureAuthenticationError::Status400( + value, + ), ), ) } @@ -192092,7 +177797,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192101,7 +177806,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status401(value), + BeginOrganizationClosureAuthenticationError::Status401( + value, + ), ), ) } @@ -192121,7 +177828,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson, + types::BeginOrganizationClosureAuthenticationForbiddenProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -192131,7 +177838,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status403(value), + BeginOrganizationClosureAuthenticationError::Status403( + value, + ), ), ) } @@ -192150,9 +177859,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192161,7 +177868,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status404(value), + BeginOrganizationClosureAuthenticationError::Status404( + value, + ), ), ) } @@ -192180,9 +177889,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192191,7 +177898,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status409(value), + BeginOrganizationClosureAuthenticationError::Status409( + value, + ), ), ) } @@ -192211,7 +177920,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson, + types::BeginOrganizationClosureAuthenticationPreconditionFailedProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -192221,7 +177930,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status412(value), + BeginOrganizationClosureAuthenticationError::Status412( + value, + ), ), ) } @@ -192240,9 +177951,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192251,7 +177960,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status422(value), + BeginOrganizationClosureAuthenticationError::Status422( + value, + ), ), ) } @@ -192271,7 +177982,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson, + types::BeginOrganizationClosureAuthenticationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -192281,7 +177992,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status500(value), + BeginOrganizationClosureAuthenticationError::Status500( + value, + ), ), ) } @@ -192300,9 +178013,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192311,7 +178022,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status502(value), + BeginOrganizationClosureAuthenticationError::Status502( + value, + ), ), ) } @@ -192330,9 +178043,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192341,7 +178052,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status503(value), + BeginOrganizationClosureAuthenticationError::Status503( + value, + ), ), ) } @@ -192361,7 +178074,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson, + types::BeginOrganizationClosureAuthenticationGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -192371,7 +178084,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationAuthenticationError::Status504(value), + BeginOrganizationClosureAuthenticationError::Status504( + value, + ), ), ) } @@ -192394,27 +178109,27 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }) } } - /**Authenticate the current Owner to inspect organization closure + /**Turn organization SSO off -Returns an authentication URL for the current organization owner to inspect organization closure. Supply returnTo and complete the returned flow. This operation initiates authentication and does not close the organization. +Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run. Tags: Organization SSO. -Response `200`: Targeted SSO authorization URL. +Response `200`: Current connection and independent local policy state. -Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument +Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required -Response `422`: VALIDATION_FAILED: Request Validation Failed +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INVALID_AUTH_CONTEXT: Invalid Authentication Context @@ -192426,18 +178141,16 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ #[inline] - pub async fn begin_organization_closure_authentication( + pub async fn disable_organization_sso( &self, + idempotency_key: String, org_id: String, - body: &types::BeginOrganizationClosureAuthenticationRequestApplicationJson, + body: &types::DisableOrganizationSsoRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationClosureAuthenticationResponse200ApplicationJson, - >, - support::Error, + support::ResponseValue, + support::Error, > { - let mut path = "/v1/auth/organizations/{orgId}/sso/closure-authenticate" - .to_owned(); + let mut path = "/v1/auth/organizations/{orgId}/sso/disable".to_owned(); path = path .replace( "{orgId}", @@ -192452,6 +178165,16 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req let url = support::build_url_on(&self.core, None, &path, &query) .map_err(support::Error::widen)?; let mut request = self.core.http().request(reqwest::Method::POST, url); + request = request + .header( + "Idempotency-Key", + support::serialize_simple( + &idempotency_key, + false, + support::PercentEncoding::Passthrough, + ) + .map_err(support::Error::request_construction)?, + ); request = request.json(body); request = support::attach_auth( &self.core, @@ -192473,13 +178196,13 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::BeginOrganizationClosureAuthenticationResponse200ApplicationJson, + types::OrganizationSsoConfiguration, >(&self.core, response) .await .map_err(support::Error::widen) } else { let (status, headers, body, truncated) = match support::read_error_body::< - BeginOrganizationClosureAuthenticationError, + DisableOrganizationSsoError, >(&self.core, response) .await { @@ -192489,9 +178212,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192500,9 +178221,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status400( - value, - ), + DisableOrganizationSsoError::Status400(value), ), ) } @@ -192521,7 +178240,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192530,9 +178249,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status401( - value, - ), + DisableOrganizationSsoError::Status401(value), ), ) } @@ -192551,9 +178268,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192562,9 +178277,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status403( - value, - ), + DisableOrganizationSsoError::Status403(value), ), ) } @@ -192583,9 +178296,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192594,9 +178305,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status404( - value, - ), + DisableOrganizationSsoError::Status404(value), ), ) } @@ -192615,9 +178324,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192626,9 +178333,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status409( - value, - ), + DisableOrganizationSsoError::Status409(value), ), ) } @@ -192647,9 +178352,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(412u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192658,9 +178361,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status412( - value, - ), + DisableOrganizationSsoError::Status412(value), ), ) } @@ -192679,9 +178380,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192690,9 +178389,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status422( - value, - ), + DisableOrganizationSsoError::Status422(value), ), ) } @@ -192711,9 +178408,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192722,9 +178417,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status500( - value, - ), + DisableOrganizationSsoError::Status500(value), ), ) } @@ -192743,9 +178436,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192754,9 +178445,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status502( - value, - ), + DisableOrganizationSsoError::Status502(value), ), ) } @@ -192775,9 +178464,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192786,9 +178473,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status503( - value, - ), + DisableOrganizationSsoError::Status503(value), ), ) } @@ -192807,9 +178492,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192818,9 +178501,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req support::ResponseValue::new( status, headers, - BeginOrganizationClosureAuthenticationError::Status504( - value, - ), + DisableOrganizationSsoError::Status504(value), ), ) } @@ -192855,13 +178536,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -192878,9 +178559,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn begin_invitation_sso( &self, org_id: String, - body: &types::BeginInvitationSsoRequestApplicationJson, + body: &types::BeginInvitationSsoRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/sso/invitation".to_owned(); @@ -192919,7 +178600,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::BeginInvitationSsoResponse200ApplicationJson, + types::OrganizationAuthenticationRedirect, >(&self.core, response) .await .map_err(support::Error::widen) @@ -192935,9 +178616,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192965,7 +178644,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -192993,9 +178672,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193023,9 +178700,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193053,9 +178728,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193083,9 +178756,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(412u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse412ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193113,9 +178784,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193143,9 +178812,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193173,9 +178840,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193203,9 +178868,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193233,9 +178896,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BeginInvitationSsoResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193279,13 +178940,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -193302,11 +178963,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn create_organization_sso_portal_link( &self, org_id: String, - body: &types::CreateOrganizationSsoPortalLinkRequestApplicationJson, + body: &types::CreateOrganizationSsoPortalLinkRequest, ) -> Result< - support::ResponseValue< - types::CreateOrganizationSsoPortalLinkResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/sso/portal".to_owned(); @@ -193345,7 +179004,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateOrganizationSsoPortalLinkResponse200ApplicationJson, + types::CreateOrganizationSsoPortalLinkResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -193361,9 +179020,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193391,7 +179048,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193419,9 +179076,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193449,9 +179104,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193479,9 +179132,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193510,7 +179161,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson, + types::CreateOrganizationSsoPortalLinkPreconditionFailedProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -193539,9 +179190,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193570,7 +179219,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson, + types::CreateOrganizationSsoPortalLinkInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -193599,9 +179248,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193629,9 +179276,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193659,9 +179304,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193705,13 +179348,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -193729,9 +179372,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::RefreshOrganizationSsoConnectionResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/auth/organizations/{orgId}/sso/refresh".to_owned(); @@ -193769,7 +179410,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RefreshOrganizationSsoConnectionResponse200ApplicationJson, + types::OrganizationSsoConfiguration, >(&self.core, response) .await .map_err(support::Error::widen) @@ -193785,9 +179426,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193815,7 +179454,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193843,9 +179482,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193873,9 +179510,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193903,9 +179538,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193934,7 +179567,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson, + types::RefreshOrganizationSsoConnectionPreconditionFailedProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -193963,9 +179596,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -193994,7 +179625,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req return Err( match serde_json::from_slice::< Box< - types::RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson, + types::RefreshOrganizationSsoConnectionInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -194023,9 +179654,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194053,9 +179682,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194083,9 +179710,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194141,11 +179766,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub async fn create_app_installation_request( &self, - body: &types::CreateAppInstallationRequestRequestApplicationJson, + body: &types::CreateAppInstallationRequestRequest, ) -> Result< - support::ResponseValue< - types::CreateAppInstallationRequestResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/installation-requests".to_owned(); @@ -194160,7 +179783,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateAppInstallationRequestResponse201ApplicationJson, + types::CreateAppInstallationRequestResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -194176,9 +179799,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194206,9 +179827,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse401ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194236,9 +179855,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194266,9 +179883,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194296,9 +179911,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194326,9 +179939,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194356,9 +179967,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAppInstallationRequestResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194414,11 +180023,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub async fn redeem_app_installation_delivery( &self, - body: &types::RedeemAppInstallationDeliveryRequestApplicationJson, + body: &types::RedeemAppInstallationDeliveryRequest, ) -> Result< - support::ResponseValue< - types::RedeemAppInstallationDeliveryResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/installation-requests/redeem".to_owned(); @@ -194433,7 +180040,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RedeemAppInstallationDeliveryResponse200ApplicationJson, + types::RedeemAppInstallationDeliveryResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -194449,9 +180056,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194479,9 +180084,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194509,9 +180112,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194539,9 +180140,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194569,9 +180168,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194599,9 +180196,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194629,9 +180224,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194677,7 +180270,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -194697,9 +180290,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationBillingOverviewResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing".to_owned(); @@ -194749,7 +180340,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetOrganizationBillingOverviewResponse200ApplicationJson, + types::GetOrganizationBillingOverviewResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -194765,9 +180356,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194795,7 +180384,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194823,9 +180412,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194853,9 +180440,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194883,9 +180468,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194914,7 +180497,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson, + types::GetOrganizationBillingOverviewInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -194943,9 +180526,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -194973,9 +180554,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195003,9 +180582,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195051,7 +180628,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -195074,9 +180651,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser organization_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/checkout".to_owned(); @@ -195129,7 +180704,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson, + types::CreateOrganizationPaymentMethodCheckoutResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -195146,7 +180721,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutBadRequestProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195177,7 +180752,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195208,7 +180783,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutForbiddenProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195239,9 +180814,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195272,7 +180845,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195304,7 +180877,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195335,9 +180908,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195368,7 +180939,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195400,7 +180971,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson, + types::CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -195441,7 +181012,7 @@ Returns a single page of the selected organization's invoices; invoices with a z Tags: Organization Billing. -Response `200`: The organization's invoices, newest first. +Response `200`: A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order. Response `400`: INVALID_ARGUMENT: Invalid Argument @@ -195449,7 +181020,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -195469,7 +181040,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/invoices".to_owned(); @@ -195518,9 +181089,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListInvoicesResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -195535,7 +181104,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195563,7 +181132,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195591,7 +181160,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195619,7 +181188,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195647,7 +181216,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195675,7 +181244,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195703,7 +181272,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195731,7 +181300,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195759,7 +181328,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195805,7 +181374,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -195825,9 +181394,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationPaymentMethodResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/payment-method" @@ -195878,7 +181445,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetOrganizationPaymentMethodResponse200ApplicationJson, + types::GetOrganizationPaymentMethodResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -195894,9 +181461,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195924,7 +181489,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195952,9 +181517,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -195982,9 +181545,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196012,9 +181573,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196043,7 +181602,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson, + types::GetOrganizationPaymentMethodInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -196072,9 +181631,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196102,9 +181659,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196132,9 +181687,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196172,7 +181725,7 @@ Schedules cancellation of the specified project's billing category at the end of Tags: Project Billing. -Response `200`: The category remains active through cancelsAt, then stops renewing. +Response `200`: The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription. Response `400`: INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid @@ -196180,7 +181733,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -196203,9 +181756,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser organization_id: String, project_id: String, params: Option, - body: &types::CancelSubscriptionRequestApplicationJson, + body: &types::CancelSubscriptionRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/projects/{projectId}/cancel" @@ -196270,7 +181823,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CancelSubscriptionResponse200ApplicationJson, + types::CancelSubscriptionResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -196286,9 +181839,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196316,7 +181867,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196344,9 +181895,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196374,9 +181923,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196404,9 +181951,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196434,9 +181979,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196464,9 +182007,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196494,9 +182035,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196524,9 +182063,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CancelSubscriptionResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196574,7 +182111,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -196599,7 +182136,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, organization_id: String, project_id: String, - body: &types::ChangePlanRequestApplicationJson, + body: &types::ChangePlanRequest, ) -> Result< support::ResponseValue, support::Error, @@ -196665,7 +182202,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { @@ -196685,7 +182222,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(202u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { @@ -196720,7 +182257,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196748,7 +182285,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196776,7 +182313,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196804,7 +182341,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196832,7 +182369,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196860,7 +182397,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196888,7 +182425,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196916,7 +182453,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196944,7 +182481,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -196972,7 +182509,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197018,7 +182555,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -197041,9 +182578,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser organization_id: String, project_id: String, params: Option, - body: &types::ResumeSubscriptionRequestApplicationJson, + body: &types::ResumeSubscriptionRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/projects/{projectId}/resume" @@ -197108,7 +182645,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ResumeSubscriptionResponse200ApplicationJson, + types::ResumeSubscriptionResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -197124,9 +182661,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197154,7 +182689,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197182,9 +182717,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197212,9 +182745,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197242,9 +182773,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197272,9 +182801,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197302,9 +182829,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197332,9 +182857,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197362,9 +182885,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResumeSubscriptionResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197402,7 +182923,7 @@ Creates payment-provider configuration for collecting a card for the selected or Tags: Organization Billing. -Response `200`: Stripe Elements configuration for capturing the organization's card. +Response `200`: Payment-provider client configuration (client secret and publishable key) for capturing the organization's card. Response `400`: INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid @@ -197410,7 +182931,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -197431,9 +182952,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, organization_id: String, ) -> Result< - support::ResponseValue< - types::CreateOrganizationSetupIntentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/billing/setup-intent" @@ -197482,7 +183001,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateOrganizationSetupIntentResponse200ApplicationJson, + types::CreateOrganizationSetupIntentResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -197498,9 +183017,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197528,7 +183045,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197556,9 +183073,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197586,9 +183101,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197617,7 +183130,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson, + types::CreateOrganizationSetupIntentUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -197647,7 +183160,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson, + types::CreateOrganizationSetupIntentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -197676,9 +183189,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197706,9 +183217,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197736,9 +183245,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197784,7 +183291,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -197801,7 +183308,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/projects".to_owned(); @@ -197914,9 +183421,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListProjectsResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -197931,7 +183436,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197959,7 +183464,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -197987,7 +183492,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198015,7 +183520,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198043,7 +183548,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198071,7 +183576,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198099,7 +183604,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198127,7 +183632,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198173,7 +183678,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: SLUG_TAKEN: Slug Already Taken @@ -198193,9 +183698,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, organization_id: String, - body: &types::CreateProjectRequestApplicationJson, + body: &types::CreateProjectRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/projects".to_owned(); @@ -198249,9 +183754,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateProjectResponse201ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -198266,7 +183769,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198294,7 +183797,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198322,7 +183825,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198349,9 +183852,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req } if support::StatusSpec::Exact(409u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -198378,7 +183879,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198406,7 +183907,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198434,7 +183935,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198462,7 +183963,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198490,7 +183991,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198518,7 +184019,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198564,7 +184065,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -198583,7 +184084,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/projects/closure-status" @@ -198638,7 +184139,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetProjectClosureStatusResponse200ApplicationJson, + types::GetProjectClosureStatusResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -198654,9 +184155,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198684,7 +184183,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198712,9 +184211,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198742,9 +184239,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198772,9 +184267,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198802,7 +184295,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198830,9 +184323,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198860,9 +184351,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198890,9 +184379,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectClosureStatusResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -198938,7 +184425,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -198955,7 +184442,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/projects/count".to_owned(); @@ -199040,9 +184527,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CountProjectsResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -199057,7 +184542,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199085,7 +184570,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199113,7 +184598,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199141,7 +184626,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199169,7 +184654,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199197,7 +184682,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199225,7 +184710,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199253,7 +184738,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199299,7 +184784,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -199316,9 +184801,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, slug: String, ) -> Result< - support::ResponseValue< - types::CheckProjectSlugAvailabilityResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/organizations/{organizationId}/projects/slug-availability" @@ -199373,7 +184856,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CheckProjectSlugAvailabilityResponse200ApplicationJson, + types::CheckProjectSlugAvailabilityResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -199389,9 +184872,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199419,7 +184900,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199447,9 +184928,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199477,9 +184956,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199507,7 +184984,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199535,9 +185012,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199565,9 +185040,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199595,9 +185068,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199641,7 +185112,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -199660,7 +185131,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/attachments".to_owned(); @@ -199816,9 +185287,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListAttachmentsResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -199833,7 +185302,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199861,7 +185330,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199889,7 +185358,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199917,7 +185386,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199945,7 +185414,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -199973,7 +185442,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200001,7 +185470,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200049,7 +185518,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready @@ -200073,7 +185542,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req content_length: String, content_type: String, idempotency_key: String, - body: &types::UploadAttachmentRequestMultipartRelated, + body: &bytes::Bytes, ) -> Result< support::ResponseValue, support::Error, @@ -200153,9 +185622,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { status, @@ -200173,9 +185640,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req ); } if support::StatusSpec::Exact(201u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { status, @@ -200209,7 +185674,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200237,7 +185702,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200265,7 +185730,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200293,7 +185758,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200321,7 +185786,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200349,7 +185814,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200377,7 +185842,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200405,7 +185870,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200433,7 +185898,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200461,7 +185926,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200505,7 +185970,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ATTACHMENT_NOT_FOUND: Attachment Not Found @@ -200526,7 +185991,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req attachment_id: String, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/attachments/{attachmentId}".to_owned(); @@ -200579,9 +186044,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetAttachmentResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -200596,7 +186059,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200624,7 +186087,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200652,7 +186115,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200680,7 +186143,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200708,7 +186171,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200736,7 +186199,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200764,7 +186227,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200792,7 +186255,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200836,7 +186299,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ATTACHMENT_NOT_FOUND: Attachment Not Found @@ -200927,7 +186390,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200955,9 +186418,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -200985,9 +186446,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201015,9 +186474,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201045,9 +186502,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201075,9 +186530,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201105,9 +186558,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201135,9 +186586,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201165,9 +186614,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DownloadAttachmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201211,7 +186658,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -201227,7 +186674,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms".to_owned(); @@ -201271,7 +186718,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListProjectPlatformsResponse200ApplicationJson, + types::ListProjectPlatformsResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -201287,7 +186734,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201315,9 +186762,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectPlatformsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201345,9 +186790,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectPlatformsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201375,9 +186818,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectPlatformsResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201405,7 +186846,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201433,9 +186874,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectPlatformsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201483,7 +186922,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded @@ -201507,9 +186946,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectEmailDomainRequestApplicationJson, + body: &types::ConnectEmailDomainRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/email/domains".to_owned(); @@ -201563,9 +187002,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ConnectEmailDomainResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -201580,9 +187017,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201610,7 +187045,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201638,9 +187073,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201668,9 +187101,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201698,9 +187129,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201728,9 +187157,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201757,11 +187184,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -201788,9 +187211,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201818,9 +187239,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201848,9 +187267,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201878,9 +187295,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectEmailDomainResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -201924,7 +187339,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -201944,9 +187359,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetProjectImessagePlatformResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage".to_owned(); @@ -201990,7 +187403,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetProjectImessagePlatformResponse200ApplicationJson, + types::ProjectPlatformSettings, >(&self.core, response) .await .map_err(support::Error::widen) @@ -202006,7 +187419,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202034,9 +187447,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202064,9 +187475,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202094,9 +187503,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202124,9 +187531,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202154,9 +187559,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202184,9 +187587,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectImessagePlatformResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202230,7 +187631,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -202251,9 +187652,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue< - types::ListSharedLineAssignmentsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage/assignments".to_owned(); @@ -202340,7 +187739,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListSharedLineAssignmentsResponse200ApplicationJson, + types::SharedLineAssignmentPage, >(&self.core, response) .await .map_err(support::Error::widen) @@ -202356,7 +187755,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202384,9 +187783,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202414,9 +187811,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202443,11 +187838,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -202474,9 +187865,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202504,9 +187893,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202534,9 +187921,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202564,9 +187949,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202612,7 +187995,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists @@ -202636,11 +188019,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateSharedLineAssignmentRequestApplicationJson, + body: &types::CreateSharedLineAssignmentRequest, ) -> Result< - support::ResponseValue< - types::CreateSharedLineAssignmentResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage/assignments".to_owned(); @@ -202694,9 +188075,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateSharedLineAssignmentResponse201ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -202711,9 +188090,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202741,7 +188118,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202769,9 +188146,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202799,9 +188174,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202829,9 +188202,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202858,11 +188229,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -202889,9 +188256,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202919,9 +188284,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202949,9 +188312,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -202979,9 +188340,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203025,7 +188384,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -203048,9 +188407,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::ReleaseSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}" @@ -203104,9 +188461,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ReleaseSharedLineAssignmentResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -203121,7 +188476,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203149,9 +188504,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203179,9 +188532,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203209,9 +188560,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203238,11 +188587,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -203269,9 +188614,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203299,9 +188642,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203329,9 +188670,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203359,9 +188698,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203405,7 +188742,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -203428,7 +188765,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage/assignments/{assignmentId}" @@ -203482,9 +188819,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetSharedLineAssignmentResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -203499,7 +188834,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203527,9 +188862,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203557,9 +188890,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203587,9 +188918,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203616,11 +188945,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -203647,9 +188972,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203677,9 +189000,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203707,9 +189028,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203737,9 +189056,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203773,7 +189090,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Provision dedicated iMessage line -Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. +Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. Tags: Dedicated iMessage lines. @@ -203787,7 +189104,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -203812,9 +189129,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, ) -> Result< - support::ResponseValue< - types::ProvisionImessageDedicatedLineResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/imessage/dedicated".to_owned(); @@ -203867,9 +189182,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ProvisionImessageDedicatedLineResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -203884,9 +189197,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203914,7 +189225,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203942,9 +189253,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -203972,9 +189281,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204002,9 +189309,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204033,7 +189338,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson, + types::ProvisionImessageDedicatedLineUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -204061,11 +189366,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -204093,7 +189394,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson, + types::ProvisionImessageDedicatedLineInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -204122,9 +189423,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204153,7 +189452,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson, + types::ProvisionImessageDedicatedLineServiceUnavailableProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -204182,9 +189481,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204218,7 +189515,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Release dedicated iMessage line -Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. +Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. Tags: Dedicated iMessage lines. @@ -204230,7 +189527,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -204311,9 +189608,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< ReleaseImessageDedicatedLineError, @@ -204333,9 +189628,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< ReleaseImessageDedicatedLineError, @@ -204371,7 +189664,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204399,9 +189692,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204429,9 +189720,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204459,9 +189748,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204488,11 +189775,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -204520,7 +189803,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson, + types::ReleaseImessageDedicatedLineInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -204549,9 +189832,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204579,9 +189860,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204609,9 +189888,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204645,7 +189922,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**List operations -Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. +Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. Tags: Operations. @@ -204655,7 +189932,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -204676,7 +189953,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/operations".to_owned(); @@ -204786,9 +190063,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListOperationsResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -204803,7 +190078,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204831,7 +190106,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204859,7 +190134,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204886,9 +190161,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -204915,7 +190188,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204943,7 +190216,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204971,7 +190244,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -204999,7 +190272,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205033,17 +190306,17 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Get operation -Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. +Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. Tags: Operations. -Response `200`: The operation, and the resource it produced once one exists. +Response `200`: The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal. Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -205066,7 +190339,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/operations/{operationId}".to_owned(); @@ -205119,9 +190392,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetOperationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -205136,7 +190407,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205164,7 +190435,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205192,7 +190463,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205220,7 +190491,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205247,9 +190518,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -205276,7 +190545,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205304,7 +190573,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205332,7 +190601,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205360,7 +190629,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205394,7 +190663,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Cancel operation -Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. +Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. Tags: Operations. @@ -205404,7 +190673,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -205429,7 +190698,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/operations/{operationId}/cancel" @@ -205483,9 +190752,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CancelOperationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -205500,7 +190767,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205528,7 +190795,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205556,7 +190823,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205584,7 +190851,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205612,7 +190879,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205639,9 +190906,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -205668,7 +190933,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205696,7 +190961,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205724,7 +190989,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205752,7 +191017,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205796,7 +191061,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -205817,7 +191082,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/resources".to_owned(); @@ -205924,9 +191189,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListResourcesResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -205941,7 +191204,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205969,7 +191232,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -205997,7 +191260,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206024,9 +191287,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -206053,7 +191314,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206081,7 +191342,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206109,7 +191370,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206137,7 +191398,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206183,7 +191444,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -206265,9 +191526,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { status, @@ -206285,9 +191544,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::::Decode { status, @@ -206321,7 +191578,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206349,7 +191606,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206377,7 +191634,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206405,7 +191662,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206433,7 +191690,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206460,9 +191717,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -206489,7 +191744,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206517,7 +191772,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206545,7 +191800,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206573,7 +191828,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206617,7 +191872,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -206640,7 +191895,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/resources/{resourceId}".to_owned(); @@ -206693,9 +191948,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetResourceResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -206710,7 +191963,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206738,7 +191991,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206766,7 +192019,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206794,7 +192047,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206821,9 +192074,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -206850,7 +192101,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206878,7 +192129,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206906,7 +192157,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206934,7 +192185,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -206972,7 +192223,7 @@ Any project writer, including a scoped API key, may detach the campaign. The num Tags: SMS campaigns. -Response `200`: The original terminal operation on an authorized replay. +Response `200`: The original terminal operation on an authorized replay. No Retry-After is emitted. Response `202`: Assignment accepted. Poll the operation Location until terminal. @@ -206982,11 +192233,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused @@ -207089,9 +192340,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< UnassignSmsLineCampaignError, @@ -207111,9 +192360,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< UnassignSmsLineCampaignError, @@ -207149,9 +192396,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207179,7 +192424,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207207,9 +192452,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207237,9 +192480,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207267,9 +192508,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207297,9 +192536,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207326,11 +192563,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -207357,9 +192590,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207387,9 +192618,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207417,9 +192646,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207447,9 +192674,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207483,7 +192708,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Read SMS line campaign assignment -Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. +Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. Tags: SMS campaigns. @@ -207495,11 +192720,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `429`: RATE_LIMITED: Too Many Requests @@ -207520,9 +192745,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue< - types::GetSmsLineCampaignAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/sms/lines/{resourceId}/campaign" @@ -207577,7 +192800,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetSmsLineCampaignAssignmentResponse200ApplicationJson, + types::GetSmsLineCampaignAssignmentResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -207593,9 +192816,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207623,7 +192844,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207651,9 +192872,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207681,9 +192900,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207711,9 +192928,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207740,11 +192955,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -207772,7 +192983,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson, + types::GetSmsLineCampaignAssignmentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -207801,9 +193012,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207831,9 +193040,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207861,9 +193068,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -207901,7 +193106,7 @@ Attach a ready campaign from this project’s organization to its line. Requires Tags: SMS campaigns. -Response `200`: The original terminal operation on an authorized replay. +Response `200`: The original terminal operation on an authorized replay. No Retry-After is emitted. Response `202`: Assignment accepted. Poll the operation Location until terminal. @@ -207911,11 +193116,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused @@ -207938,7 +193143,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, resource_id: String, - body: &types::AssignSmsLineCampaignRequestApplicationJson, + body: &types::AssignSmsLineCampaignRequest, ) -> Result< support::ResponseValue, support::Error, @@ -208009,9 +193214,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< AssignSmsLineCampaignError, @@ -208031,9 +193234,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< AssignSmsLineCampaignError, @@ -208069,9 +193270,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208099,7 +193298,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208127,9 +193326,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208157,9 +193354,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208187,9 +193382,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208217,9 +193410,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208246,11 +193437,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -208277,9 +193464,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208307,9 +193492,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208337,9 +193520,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208367,9 +193548,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignSmsLineCampaignResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208417,7 +193596,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -208441,9 +193620,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::PurchaseSmsNumberRequestApplicationJson, + body: &types::PurchaseSmsNumberRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/sms/numbers".to_owned(); @@ -208497,9 +193676,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::PurchaseSmsNumberResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -208514,9 +193691,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208544,7 +193719,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208572,9 +193747,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208602,9 +193775,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208632,9 +193803,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208662,9 +193831,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208691,11 +193858,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -208722,9 +193885,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208752,9 +193913,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208782,9 +193941,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208812,9 +193969,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::PurchaseSmsNumberResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208858,7 +194013,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -208879,7 +194034,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, country_code: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { if country_code != "US" { @@ -208940,7 +194095,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListNumberAreaCodesResponse200ApplicationJson, + types::ListNumberAreaCodesResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -208956,7 +194111,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -208984,9 +194139,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209014,9 +194167,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209043,11 +194194,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -209074,9 +194221,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209104,9 +194249,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209134,9 +194277,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209164,9 +194305,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberAreaCodesResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209210,7 +194349,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -209230,7 +194369,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/sms/numbers/countries".to_owned(); @@ -209274,7 +194413,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListNumberCountriesResponse200ApplicationJson, + types::ListNumberCountriesResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -209290,7 +194429,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209318,9 +194457,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209348,9 +194485,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209377,11 +194512,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -209408,9 +194539,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209438,9 +194567,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209468,9 +194595,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209498,9 +194623,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListNumberCountriesResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209534,7 +194657,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Connect Telegram bot -Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. +Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. Tags: Telegram. @@ -209546,7 +194669,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress @@ -209568,9 +194691,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectTelegramBotRequestApplicationJson, + body: &types::ConnectTelegramBotRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/telegram/bots".to_owned(); @@ -209624,9 +194747,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ConnectTelegramBotResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -209641,9 +194762,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209671,7 +194790,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209699,9 +194818,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209729,9 +194846,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209759,9 +194874,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209788,11 +194901,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -209819,9 +194928,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209849,9 +194956,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209879,9 +194984,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209909,9 +195012,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectTelegramBotResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -209955,7 +195056,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -209978,11 +195079,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub async fn batch_update_voice_line_profile_assignments( &self, id: String, - body: &types::BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson, + body: &types::BatchUpdateVoiceLineProfileAssignmentsRequest, ) -> Result< - support::ResponseValue< - types::BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/lines/profile-assignments/batch" @@ -210028,7 +195127,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson, + types::BatchUpdateVoiceLineProfileAssignmentsResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -210044,7 +195143,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210075,7 +195174,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson, + types::BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -210106,9 +195205,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210138,9 +195235,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210170,9 +195265,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210201,11 +195294,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -210235,7 +195324,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson, + types::BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -210266,9 +195355,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210298,9 +195385,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210331,7 +195416,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson, + types::BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -210378,7 +195463,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -210483,7 +195568,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210511,9 +195596,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210541,9 +195624,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210571,9 +195652,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210601,9 +195680,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210630,11 +195707,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -210661,9 +195734,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210691,9 +195762,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210721,9 +195790,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210751,9 +195818,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210797,7 +195862,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -210820,9 +195885,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue< - types::GetVoiceLineProfileAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile" @@ -210877,7 +195940,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetVoiceLineProfileAssignmentResponse200ApplicationJson, + types::VoiceLineProfileAssignment, >(&self.core, response) .await .map_err(support::Error::widen) @@ -210893,7 +195956,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210921,9 +195984,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210951,9 +196012,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -210981,9 +196040,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211010,11 +196067,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -211042,7 +196095,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson, + types::GetVoiceLineProfileAssignmentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -211071,9 +196124,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211101,9 +196152,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211131,9 +196180,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211177,7 +196224,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -211201,9 +196248,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, resource_id: String, - body: &types::AssignVoiceLineProfileRequestApplicationJson, + body: &types::AssignVoiceLineProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/lines/{resourceId}/profile" @@ -211259,7 +196306,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::AssignVoiceLineProfileResponse200ApplicationJson, + types::VoiceLineProfileAssignment, >(&self.core, response) .await .map_err(support::Error::widen) @@ -211275,7 +196322,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211303,9 +196350,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211333,9 +196378,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211363,9 +196406,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211393,9 +196434,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211422,11 +196461,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -211453,9 +196488,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211483,9 +196516,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211513,9 +196544,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211543,9 +196572,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::AssignVoiceLineProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211589,7 +196616,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -211610,7 +196637,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles".to_owned(); @@ -211693,9 +196720,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ListVoiceProfilesResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -211710,7 +196735,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211738,9 +196763,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211768,9 +196791,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211797,11 +196818,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -211828,9 +196845,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211858,9 +196873,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211888,9 +196901,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211918,9 +196929,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListVoiceProfilesResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -211964,7 +196973,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required @@ -211985,9 +196994,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub async fn create_voice_profile( &self, id: String, - body: &types::CreateVoiceProfileRequestApplicationJson, + body: &types::CreateVoiceProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles".to_owned(); @@ -212031,9 +197040,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateVoiceProfileResponse201ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -212048,7 +197055,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212076,9 +197083,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212106,9 +197111,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212136,9 +197139,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212165,11 +197166,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -212196,9 +197193,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212226,9 +197221,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212256,9 +197249,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212286,9 +197277,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212332,7 +197321,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -212354,7 +197343,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/default".to_owned(); @@ -212397,9 +197386,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetDefaultVoiceProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -212414,7 +197401,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212442,9 +197429,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212472,9 +197457,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212502,9 +197485,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212531,11 +197512,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -212562,9 +197539,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212592,9 +197567,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212622,9 +197595,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212652,9 +197623,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212698,7 +197667,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -212721,11 +197690,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub async fn update_default_voice_profile( &self, id: String, - body: &types::UpdateDefaultVoiceProfileRequestApplicationJson, + body: &types::UpdateDefaultVoiceProfileRequest, ) -> Result< - support::ResponseValue< - types::UpdateDefaultVoiceProfileResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/default".to_owned(); @@ -212769,9 +197736,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateDefaultVoiceProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -212786,7 +197751,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212814,9 +197779,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212844,9 +197807,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212874,9 +197835,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212904,9 +197863,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212933,11 +197890,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -212964,9 +197917,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -212994,9 +197945,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213024,9 +197973,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213054,9 +198001,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213102,7 +198047,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists @@ -213123,7 +198068,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub async fn create_default_voice_profile( &self, id: String, - body: &types::CreateDefaultVoiceProfileRequestApplicationJson, + body: &types::CreateDefaultVoiceProfileRequest, ) -> Result< support::ResponseValue, support::Error, @@ -213173,9 +198118,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< CreateDefaultVoiceProfileError, @@ -213195,9 +198138,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(201u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< CreateDefaultVoiceProfileError, @@ -213233,7 +198174,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213261,9 +198202,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213291,9 +198230,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213321,9 +198258,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213350,11 +198285,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -213381,9 +198312,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213411,9 +198340,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213441,9 +198368,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213471,9 +198396,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213517,11 +198440,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found -Response `409`: VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict +Response `409`: VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN: Voice Default Profile Deletion Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -213632,7 +198555,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213660,9 +198583,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213690,9 +198611,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213720,9 +198639,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213750,9 +198667,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213779,11 +198694,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -213810,9 +198721,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213840,9 +198749,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213870,9 +198777,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213900,9 +198805,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -213946,7 +198849,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -213969,7 +198872,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, profile_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}" @@ -214023,9 +198926,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetVoiceProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -214040,7 +198941,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214068,7 +198969,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214096,7 +198997,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214124,7 +199025,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214151,9 +199052,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -214180,7 +199079,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214208,7 +199107,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214236,7 +199135,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214264,7 +199163,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214308,7 +199207,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -214332,9 +199231,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileRequestApplicationJson, + body: &types::UpdateVoiceProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}" @@ -214389,9 +199288,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateVoiceProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -214406,7 +199303,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214434,9 +199331,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214464,9 +199359,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214494,9 +199387,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214524,9 +199415,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214553,11 +199442,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -214584,9 +199469,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214614,9 +199497,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214644,9 +199525,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214674,9 +199553,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214720,7 +199597,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -214746,9 +199623,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser profile_id: String, expected_version: i64, ) -> Result< - support::ResponseValue< - types::DeleteVoiceProfileInboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound" @@ -214813,7 +199688,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::DeleteVoiceProfileInboundResponse200ApplicationJson, + types::VoiceProfileInboundConfiguration, >(&self.core, response) .await .map_err(support::Error::widen) @@ -214829,7 +199704,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214857,9 +199732,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214887,9 +199760,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214917,9 +199788,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214947,9 +199816,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -214976,11 +199843,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -215007,9 +199870,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215037,9 +199898,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215067,9 +199926,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215097,9 +199954,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215143,7 +199998,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -215167,11 +200022,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileInboundRequestApplicationJson, + body: &types::UpdateVoiceProfileInboundRequest, ) -> Result< - support::ResponseValue< - types::UpdateVoiceProfileInboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}/inbound" @@ -215227,7 +200080,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::UpdateVoiceProfileInboundResponse200ApplicationJson, + types::VoiceProfileInboundConfiguration, >(&self.core, response) .await .map_err(support::Error::widen) @@ -215243,7 +200096,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215271,9 +200124,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215301,9 +200152,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215331,9 +200180,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215361,9 +200208,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215390,11 +200235,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -215421,9 +200262,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215451,9 +200290,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215481,9 +200318,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215511,9 +200346,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215559,7 +200392,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -215583,7 +200416,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::ReplaceVoiceProfileInboundRequestApplicationJson, + body: &types::ReplaceVoiceProfileInboundRequest, ) -> Result< support::ResponseValue, support::Error, @@ -215645,7 +200478,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -215667,7 +200500,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(201u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -215704,7 +200537,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215732,9 +200565,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215762,9 +200593,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215792,9 +200621,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215822,9 +200649,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215851,11 +200676,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -215882,9 +200703,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215912,9 +200731,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215942,9 +200759,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -215972,9 +200787,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216018,7 +200831,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -216044,9 +200857,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser profile_id: String, expected_version: i64, ) -> Result< - support::ResponseValue< - types::DeleteVoiceProfileOutboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound" @@ -216111,7 +200922,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::DeleteVoiceProfileOutboundResponse200ApplicationJson, + types::DeleteVoiceProfileOutboundResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -216127,7 +200938,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216155,9 +200966,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216185,9 +200994,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216215,9 +201022,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216245,9 +201050,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216274,11 +201077,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -216305,9 +201104,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216335,9 +201132,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216365,9 +201160,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216395,9 +201188,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216441,7 +201232,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -216465,11 +201256,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson, + body: &types::UpdateVoiceProfileOutboundAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound" @@ -216525,7 +201314,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson, + types::UpdateVoiceProfileOutboundAuthenticationResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -216541,7 +201330,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216572,7 +201361,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson, + types::UpdateVoiceProfileOutboundAuthenticationForbiddenProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -216603,9 +201392,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216636,7 +201423,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson, + types::UpdateVoiceProfileOutboundAuthenticationConflictProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -216667,9 +201454,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216698,11 +201483,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -216732,7 +201513,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson, + types::UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -216763,9 +201544,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216795,9 +201574,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -216828,7 +201605,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson, + types::UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -216879,7 +201656,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -216904,7 +201681,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, profile_id: String, - body: &types::ConfigureVoiceProfileOutboundRequestApplicationJson, + body: &types::ConfigureVoiceProfileOutboundRequest, ) -> Result< support::ResponseValue, support::Error, @@ -216976,7 +201753,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -216998,7 +201775,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(201u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -217035,9 +201812,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217065,7 +201840,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217093,9 +201868,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217123,9 +201896,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217153,9 +201924,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217184,7 +201953,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson, + types::ConfigureVoiceProfileOutboundUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -217212,11 +201981,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -217244,7 +202009,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson, + types::ConfigureVoiceProfileOutboundInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -217273,9 +202038,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217303,9 +202066,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217333,9 +202094,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217381,7 +202140,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -217406,11 +202165,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, profile_id: String, - body: &types::RotateVoiceProfileOutboundCredentialRequestApplicationJson, + body: &types::RotateVoiceProfileOutboundCredentialRequest, ) -> Result< - support::ResponseValue< - types::RotateVoiceProfileOutboundCredentialResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/voice/profiles/{profileId}/outbound/rotate" @@ -217476,7 +202233,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RotateVoiceProfileOutboundCredentialResponse200ApplicationJson, + types::RotateVoiceProfileOutboundCredentialResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -217492,9 +202249,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217522,7 +202277,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217550,9 +202305,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217580,9 +202333,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217610,9 +202361,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217641,7 +202390,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson, + types::RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -217669,11 +202418,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -217701,7 +202446,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson, + types::RotateVoiceProfileOutboundCredentialInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -217730,9 +202475,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217760,9 +202503,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217791,7 +202532,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson, + types::RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -217836,7 +202577,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -217856,9 +202597,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetProjectWhatsappPlatformResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp".to_owned(); @@ -217902,7 +202641,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetProjectWhatsappPlatformResponse200ApplicationJson, + types::ProjectPlatformSettings, >(&self.core, response) .await .map_err(support::Error::widen) @@ -217918,7 +202657,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217946,9 +202685,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -217976,9 +202713,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218006,9 +202741,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218036,9 +202769,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218066,9 +202797,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218096,9 +202825,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218146,7 +202873,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -218229,11 +202956,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse200ApplicationJson, - >, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< DisconnectWhatsappBusinessAccountError, @@ -218253,11 +202976,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse202ApplicationJson, - >, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< DisconnectWhatsappBusinessAccountError, @@ -218295,9 +203014,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218325,7 +203042,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218353,9 +203070,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218383,9 +203098,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218413,9 +203126,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218444,7 +203155,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, + types::DisconnectWhatsappBusinessAccountUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -218472,11 +203183,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -218504,7 +203211,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, + types::DisconnectWhatsappBusinessAccountInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -218533,9 +203240,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218563,9 +203268,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218594,7 +203297,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, + types::DisconnectWhatsappBusinessAccountGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -218639,7 +203342,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -218661,9 +203364,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetWhatsappBusinessAccountResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/account" @@ -218708,7 +203409,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetWhatsappBusinessAccountResponse200ApplicationJson, + types::WhatsappBusinessAccount, >(&self.core, response) .await .map_err(support::Error::widen) @@ -218724,7 +203425,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218752,9 +203453,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218782,9 +203481,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218812,9 +203509,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218841,11 +203536,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -218872,9 +203563,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218902,9 +203591,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218932,9 +203619,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -218962,9 +203647,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219008,7 +203691,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -219030,9 +203713,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::ListWhatsappAccountPhoneNumbersResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/account/phone-numbers" @@ -219077,7 +203758,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListWhatsappAccountPhoneNumbersResponse200ApplicationJson, + types::ListWhatsappAccountPhoneNumbersResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -219093,7 +203774,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219121,9 +203802,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219151,9 +203830,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219181,9 +203858,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219210,11 +203885,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -219242,7 +203913,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson, + types::ListWhatsappAccountPhoneNumbersInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -219271,9 +203942,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219301,9 +203970,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219331,9 +203998,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219381,7 +204046,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible @@ -219407,11 +204072,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateWhatsappVoipSenderRequestApplicationJson, + body: &types::CreateWhatsappVoipSenderRequest, ) -> Result< - support::ResponseValue< - types::CreateWhatsappVoipSenderResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/account/senders" @@ -219466,9 +204129,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateWhatsappVoipSenderResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -219483,9 +204144,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219513,7 +204172,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219541,9 +204200,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219571,9 +204228,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219601,9 +204256,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219631,9 +204284,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219661,9 +204312,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219690,11 +204339,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -219721,9 +204366,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219751,9 +204394,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219781,9 +204422,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219811,9 +204450,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219861,7 +204498,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -219885,9 +204522,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectWhatsappBusinessRequestApplicationJson, + body: &types::ConnectWhatsappBusinessRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/numbers" @@ -219942,9 +204579,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ConnectWhatsappBusinessResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -219959,9 +204594,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -219989,7 +204622,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220017,9 +204650,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220047,9 +204678,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220077,9 +204706,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220107,9 +204734,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220136,11 +204761,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -220167,9 +204788,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220197,9 +204816,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220227,9 +204844,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220257,9 +204872,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220303,7 +204916,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found @@ -220327,9 +204940,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser resource_id: String, received_after: DateTime, ) -> Result< - support::ResponseValue< - types::GetWhatsappBusinessVerificationCodeResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/numbers/{resourceId}/verification-code" @@ -220394,7 +205005,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetWhatsappBusinessVerificationCodeResponse200ApplicationJson, + types::GetWhatsappBusinessVerificationCodeResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -220410,7 +205021,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220438,9 +205049,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220468,9 +205077,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220499,7 +205106,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson, + types::GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -220527,11 +205134,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -220559,7 +205162,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson, + types::GetWhatsappBusinessVerificationCodeInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -220588,9 +205191,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220618,9 +205219,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220649,7 +205248,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson, + types::GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -220694,7 +205293,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -220712,7 +205311,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp-business/signup-config" @@ -220757,7 +205356,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetWhatsappSignupConfigResponse200ApplicationJson, + types::GetWhatsappSignupConfigResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -220773,7 +205372,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220801,9 +205400,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220831,9 +205428,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220860,11 +205455,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -220891,9 +205482,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220921,7 +205510,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220949,9 +205538,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -220995,7 +205582,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -221016,9 +205603,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue< - types::ListWhatsappSharedLineAssignmentsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp/assignments".to_owned(); @@ -221105,7 +205690,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListWhatsappSharedLineAssignmentsResponse200ApplicationJson, + types::SharedLineAssignmentPage, >(&self.core, response) .await .map_err(support::Error::widen) @@ -221121,7 +205706,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221149,9 +205734,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221179,9 +205762,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221208,11 +205789,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -221240,7 +205817,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson, + types::ListWhatsappSharedLineAssignmentsInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221269,9 +205846,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221299,9 +205874,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221330,7 +205903,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson, + types::ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221377,7 +205950,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists @@ -221401,11 +205974,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateWhatsappSharedLineAssignmentRequestApplicationJson, + body: &types::CreateWhatsappSharedLineAssignmentRequest, ) -> Result< - support::ResponseValue< - types::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp/assignments".to_owned(); @@ -221459,9 +206030,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -221476,9 +206045,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221506,7 +206073,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221534,9 +206101,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221564,9 +206129,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221595,7 +206158,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, + types::CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221623,11 +206186,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -221655,7 +206214,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, + types::CreateWhatsappSharedLineAssignmentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221684,9 +206243,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221715,7 +206272,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, + types::CreateWhatsappSharedLineAssignmentServiceUnavailableProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221745,7 +206302,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, + types::CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -221790,7 +206347,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -221813,9 +206370,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp/assignments/{assignmentId}" @@ -221869,9 +206424,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -221886,7 +206439,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221914,9 +206467,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221944,9 +206495,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -221974,9 +206523,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222003,11 +206550,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -222035,7 +206578,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, + types::ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222064,9 +206607,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222094,9 +206635,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222125,7 +206664,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, + types::ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222170,7 +206709,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -222193,9 +206732,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::GetWhatsappSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp/assignments/{assignmentId}" @@ -222249,9 +206786,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetWhatsappSharedLineAssignmentResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -222266,7 +206801,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222294,9 +206829,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222324,9 +206857,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222354,9 +206885,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222383,11 +206912,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -222415,7 +206940,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, + types::GetWhatsappSharedLineAssignmentInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222444,9 +206969,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222474,9 +206997,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222504,9 +207025,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222540,7 +207059,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Provision dedicated WhatsApp line -Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. +Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. Tags: Dedicated WhatsApp lines. @@ -222554,7 +207073,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -222579,9 +207098,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, ) -> Result< - support::ResponseValue< - types::ProvisionWhatsappDedicatedLineResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{id}/platforms/whatsapp/dedicated".to_owned(); @@ -222634,9 +207151,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ProvisionWhatsappDedicatedLineResponse202ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -222651,9 +207166,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222681,7 +207194,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222709,9 +207222,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(402u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222739,9 +207250,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222769,9 +207278,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222800,7 +207307,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson, + types::ProvisionWhatsappDedicatedLineUnprocessableEntityProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222828,11 +207335,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -222860,7 +207363,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, + types::ProvisionWhatsappDedicatedLineInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222889,9 +207392,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222920,7 +207421,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson, + types::ProvisionWhatsappDedicatedLineServiceUnavailableProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -222949,9 +207450,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -222985,7 +207484,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Release dedicated WhatsApp line -Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. +Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. Tags: Dedicated WhatsApp lines. @@ -222997,7 +207496,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -223078,9 +207577,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< ReleaseWhatsappDedicatedLineError, @@ -223100,9 +207597,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser ); } if support::StatusSpec::Exact(202u16).matches(status) { - let value = serde_json::from_slice::< - Box, - >(&body) + let value = serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< ReleaseWhatsappDedicatedLineError, @@ -223138,7 +207633,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223166,9 +207661,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223196,9 +207689,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223226,9 +207717,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223255,11 +207744,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } if support::StatusSpec::Exact(429u16).matches(status) { return Err( - match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson, - >, - >(&body) + match serde_json::from_slice::>(&body) .map_err(|error| error.to_string()) { Ok(value) => { @@ -223287,7 +207772,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser return Err( match serde_json::from_slice::< Box< - types::ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, + types::ReleaseWhatsappDedicatedLineInternalServerErrorProblem, >, >(&body) .map_err(|error| error.to_string()) @@ -223316,9 +207801,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223346,9 +207829,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223376,9 +207857,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223424,7 +207903,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -223445,7 +207924,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}".to_owned(); @@ -223498,9 +207977,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::DeleteProjectResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -223515,7 +207992,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223543,7 +208020,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223571,7 +208048,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223599,7 +208076,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223627,7 +208104,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223655,7 +208132,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223683,7 +208160,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223711,7 +208188,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223739,7 +208216,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223767,7 +208244,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223811,7 +208288,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -223831,7 +208308,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}".to_owned(); @@ -223874,9 +208351,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetProjectResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -223891,7 +208366,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223919,7 +208394,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223947,7 +208422,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -223975,7 +208450,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224003,7 +208478,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224031,7 +208506,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224059,7 +208534,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224087,7 +208562,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224115,7 +208590,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224161,7 +208636,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -224183,9 +208658,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::UpdateProjectRequestApplicationJson, + body: &types::UpdateProjectRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}".to_owned(); @@ -224239,9 +208714,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateProjectResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -224256,7 +208729,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224284,7 +208757,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224312,7 +208785,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224340,7 +208813,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224368,7 +208841,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224396,7 +208869,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224424,7 +208897,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224452,7 +208925,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224480,7 +208953,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224508,7 +208981,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224536,7 +209009,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224580,7 +209053,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -224600,7 +209073,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/agent-profile".to_owned(); @@ -224643,9 +209116,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetAgentProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -224660,7 +209131,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224688,7 +209159,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224716,7 +209187,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224744,7 +209215,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224772,7 +209243,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224800,7 +209271,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224828,7 +209299,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224856,7 +209327,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224884,7 +209355,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -224930,7 +209401,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -224952,9 +209423,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::UpdateAgentProfileRequestApplicationJson, + body: &types::UpdateAgentProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/agent-profile".to_owned(); @@ -225008,9 +209479,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateAgentProfileResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -225025,9 +209494,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225055,7 +209522,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225083,9 +209550,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225113,9 +209578,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225143,9 +209606,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225173,9 +209634,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225203,9 +209662,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225233,7 +209690,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225261,9 +209718,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225291,9 +209746,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225321,9 +209774,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateAgentProfileResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225361,19 +209812,21 @@ Replaces the selected project's agent avatar with the project's default avatar, Tags: Agent Profile. -Response `200`: The agent profile reset to the default avatar. +Response `200`: The agent profile with the project's default avatar. + +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found Response `410`: PROJECT_DELETED: Project Deleted -Response `422`: VALIDATION_FAILED: Request Validation Failed +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -225388,7 +209841,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/agent-profile/avatar".to_owned(); @@ -225441,9 +209894,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::ResetAgentProfileAvatarResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -225455,10 +209906,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req Ok(parts) => parts, Err(error) => return Err(error), }; + if support::StatusSpec::Exact(400u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ResetAgentProfileAvatarError::Status400(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225486,9 +209965,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225516,9 +209993,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225546,9 +210021,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225576,9 +210049,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225606,7 +210077,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225634,9 +210105,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225664,9 +210133,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225694,9 +210161,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225742,7 +210207,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -225764,11 +210229,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::CommitAgentProfileAvatarRequestApplicationJson, + body: &types::CommitAgentProfileAvatarRequest, ) -> Result< - support::ResponseValue< - types::CommitAgentProfileAvatarResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/agent-profile/avatar".to_owned(); @@ -225822,9 +210285,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::CommitAgentProfileAvatarResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -225839,9 +210300,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225869,7 +210328,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225897,9 +210356,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225927,9 +210384,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225957,9 +210412,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -225987,9 +210440,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226017,9 +210468,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226047,7 +210496,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226075,9 +210524,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226105,9 +210552,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226135,9 +210580,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226181,7 +210624,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -226200,11 +210643,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub async fn create_agent_profile_avatar_upload( &self, project_id: String, - body: &types::CreateAgentProfileAvatarUploadRequestApplicationJson, + body: &types::CreateAgentProfileAvatarUploadRequest, ) -> Result< - support::ResponseValue< - types::CreateAgentProfileAvatarUploadResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/agent-profile/avatar/uploads" @@ -226250,7 +210691,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateAgentProfileAvatarUploadResponse201ApplicationJson, + types::AgentProfileAvatarUpload, >(&self.core, response) .await .map_err(support::Error::widen) @@ -226266,7 +210707,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226294,9 +210735,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226324,9 +210763,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226354,9 +210791,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226384,9 +210819,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226414,7 +210847,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226442,9 +210875,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226472,9 +210903,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226502,9 +210931,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226538,9 +210965,11 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req } /**List project API keys +Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation. + Tags: API keys. -Response `200`: Every live key on the project, newest first. Never includes secrets. +Response `200`: The project's keys that have not been revoked, newest first. Never includes secrets. Response `400`: INVALID_ARGUMENT: Invalid Argument @@ -226548,7 +210977,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -226568,7 +210997,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/api-keys".to_owned(); @@ -226606,7 +211035,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListProjectApiKeysResponse200ApplicationJson, + types::ListProjectApiKeysResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -226622,9 +211051,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226652,7 +211079,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226680,9 +211107,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226710,9 +211135,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226740,9 +211163,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226770,9 +211191,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226800,7 +211219,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226828,9 +211247,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226858,7 +211275,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226886,9 +211303,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListProjectApiKeysResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -226926,7 +211341,7 @@ Creates a key bound to the selected project using the supplied name, permissions Tags: API keys. -Response `201`: The created key, with its secret. The secret is shown only here and cannot be recovered afterwards. +Response `201`: The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation. Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument @@ -226934,7 +211349,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -226958,9 +211373,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, idempotency_key: String, project_id: String, - body: &types::CreateProjectApiKeyRequestApplicationJson, + body: &types::CreateProjectApiKeyRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/api-keys".to_owned(); @@ -227009,7 +211424,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateProjectApiKeyResponse201ApplicationJson, + types::CreateProjectApiKeyResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -227025,9 +211440,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227055,7 +211468,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227083,9 +211496,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227113,9 +211524,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227143,9 +211552,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227173,9 +211580,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227203,9 +211608,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227233,9 +211636,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227263,7 +211664,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227291,9 +211692,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227321,7 +211720,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227349,9 +211748,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateProjectApiKeyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227391,19 +211788,19 @@ Tags: API keys. Response `200`: The revoked key. Repeating the delete returns the same revokedAt. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found Response `410`: PROJECT_DELETED: Project Deleted -Response `422`: VALIDATION_FAILED: Request Validation Failed +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -227419,7 +211816,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ api_key_id: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/api-keys/{apiKeyId}".to_owned(); @@ -227476,9 +211873,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::RevokeProjectApiKeyResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -227493,9 +211888,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227523,7 +211916,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227551,9 +211944,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227581,9 +211972,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227611,9 +212000,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227641,9 +212028,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227671,7 +212056,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227699,9 +212084,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227729,7 +212112,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227757,9 +212140,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RevokeProjectApiKeyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227805,7 +212186,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found @@ -227830,9 +212211,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ idempotency_key: String, api_key_id: String, project_id: String, - body: &types::UpdateProjectApiKeyRequestApplicationJson, + body: &types::UpdateProjectApiKeyRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/api-keys/{apiKeyId}".to_owned(); @@ -227890,9 +212271,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateProjectApiKeyResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -227907,9 +212286,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227937,7 +212314,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227965,9 +212342,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -227995,9 +212370,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228025,9 +212398,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228055,9 +212426,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228085,9 +212454,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(413u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse413ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228115,9 +212482,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228145,7 +212510,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228173,9 +212538,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228203,7 +212566,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228231,9 +212594,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateProjectApiKeyResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228279,7 +212640,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -228299,7 +212660,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/billing".to_owned(); @@ -228349,7 +212710,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetBillingOverviewResponse200ApplicationJson, + types::GetBillingOverviewResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -228365,9 +212726,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228395,7 +212754,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228423,9 +212782,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228453,9 +212810,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228483,9 +212838,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228513,9 +212866,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228543,9 +212894,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228573,9 +212922,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228603,9 +212950,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOverviewResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228651,7 +212996,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -228674,7 +213019,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser project_id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/billing/operations/{operationId}" @@ -228734,9 +213079,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetBillingOperationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -228751,9 +213094,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228781,7 +213122,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228809,9 +213150,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228839,9 +213178,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228869,9 +213206,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse409ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228899,9 +213234,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228929,9 +213262,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse500ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228959,9 +213290,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -228989,9 +213318,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229019,9 +213346,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetBillingOperationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229053,7 +213378,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser }) } } - /**List billing plans available to a project + /**List available billing plans Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan. @@ -229067,7 +213392,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -229087,7 +213412,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/billing/plans".to_owned(); @@ -229137,7 +213462,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListBillingPlansResponse200ApplicationJson, + types::ListBillingPlansResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -229153,7 +213478,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229181,7 +213506,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229209,7 +213534,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229237,7 +213562,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(409u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229265,7 +213590,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229293,7 +213618,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229321,7 +213646,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229349,7 +213674,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229377,7 +213702,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229423,7 +213748,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `500`: INTERNAL_ERROR: Internal Server Error @@ -229434,9 +213759,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ project_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::GetMessageMetricsBackfillResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/metrics/backfill".to_owned(); @@ -229501,7 +213824,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetMessageMetricsBackfillResponse200ApplicationJson, + types::GetMessageMetricsBackfillResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -229517,9 +213840,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229547,7 +213868,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229575,9 +213896,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229605,7 +213924,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229633,9 +213952,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229681,7 +213998,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `500`: INTERNAL_ERROR: Internal Server Error @@ -229692,9 +214009,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ project_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::GetMessageMetricsSqlSchemaResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/metrics/query".to_owned(); @@ -229759,7 +214074,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::GetMessageMetricsSqlSchemaResponse200ApplicationJson, + types::GetMessageMetricsSqlSchemaResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -229775,9 +214090,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229805,7 +214118,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229833,9 +214146,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229863,7 +214174,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229891,7 +214202,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -229937,10 +214248,12 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed +Response `429`: QUERY_CONCURRENCY_LIMIT: Query Concurrency Limit + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure @@ -229955,7 +214268,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req params: Option, body: &types::ClickHouseSqlQueryRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/metrics/query".to_owned(); @@ -230021,7 +214334,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::QueryMessageMetricsResponse200ApplicationJson, + types::QueryMessageMetricsResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -230037,9 +214350,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230067,7 +214378,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230095,9 +214406,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230125,9 +214434,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230152,10 +214459,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req }, ); } + if support::StatusSpec::Exact(429u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + QueryMessageMetricsError::Status429(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230183,9 +214518,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230213,9 +214546,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230243,9 +214574,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::QueryMessageMetricsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230291,7 +214620,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -230299,7 +214630,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn list_webhook_api_versions( &self, @@ -230355,7 +214686,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -230401,7 +214732,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230429,9 +214760,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookApiVersionsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230456,10 +214785,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ListWebhookApiVersionsError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230487,9 +214844,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookApiVersionsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230517,9 +214872,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookApiVersionsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230547,9 +214900,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookApiVersionsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230595,7 +214946,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -230603,14 +214956,14 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn list_webhook_destinations( &self, project_id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations".to_owned(); @@ -230682,7 +215035,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::ListWebhookDestinationsResponse200ApplicationJson, + types::WebhookDestinationPage, >(&self.core, response) .await .map_err(support::Error::widen) @@ -230698,9 +215051,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookDestinationsResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230728,7 +215079,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230756,9 +215107,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookDestinationsResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230783,10 +215132,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ListWebhookDestinationsError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230814,9 +215191,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookDestinationsResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230844,9 +215219,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookDestinationsResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230874,9 +215247,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookDestinationsResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -230914,17 +215285,19 @@ Creates a webhook destination for the selected project using its URL, payload AP Tags: Webhook Destinations. -Response `201`: The created destination and its one-time signing secret. +Response `201`: The created destination and its signing secret. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -230932,17 +215305,15 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn create_webhook_destination( &self, idempotency_key: String, project_id: String, - body: &types::CreateWebhookDestinationRequestApplicationJson, + body: &types::CreateWebhookDestinationRequest, ) -> Result< - support::ResponseValue< - types::CreateWebhookDestinationResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations".to_owned(); @@ -230997,7 +215368,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::CreateWebhookDestinationResponse201ApplicationJson, + types::CreateWebhookDestinationResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -231013,9 +215384,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231043,7 +215412,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231071,9 +215440,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231098,12 +215465,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(413u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + CreateWebhookDestinationError::Status413(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231131,7 +215524,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231159,9 +215552,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231189,9 +215580,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231219,9 +215608,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::CreateWebhookDestinationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231265,26 +215652,26 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found +Response `422`: VALIDATION_FAILED: Request Validation Failed + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn delete_webhook_destination( &self, destination_id: String, project_id: String, ) -> Result< - support::ResponseValue< - types::DeleteWebhookDestinationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations/{destinationId}" @@ -231338,9 +215725,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::DeleteWebhookDestinationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -231355,7 +215740,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231383,9 +215768,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteWebhookDestinationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231413,9 +215796,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteWebhookDestinationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231440,10 +215821,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + DeleteWebhookDestinationError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231471,9 +215880,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteWebhookDestinationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231501,9 +215908,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteWebhookDestinationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231531,9 +215936,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::DeleteWebhookDestinationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231577,26 +215980,28 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted +Response `422`: VALIDATION_FAILED: Request Validation Failed + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn get_webhook_destination( &self, destination_id: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations/{destinationId}" @@ -231650,9 +216055,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::GetWebhookDestinationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -231667,7 +216070,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231695,9 +216098,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231725,9 +216126,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231755,9 +216154,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231782,10 +216179,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetWebhookDestinationError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231813,9 +216238,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231843,9 +216266,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231873,9 +216294,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookDestinationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -231915,19 +216334,21 @@ Tags: Webhook Destinations. Response `200`: The updated webhook destination. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -231935,18 +216356,16 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn update_webhook_destination( &self, idempotency_key: String, destination_id: String, project_id: String, - body: &types::UpdateWebhookDestinationRequestApplicationJson, + body: &types::UpdateWebhookDestinationRequest, ) -> Result< - support::ResponseValue< - types::UpdateWebhookDestinationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations/{destinationId}" @@ -232011,9 +216430,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .await .map_err(support::Error::widen)?; if response.status().is_success() { - support::decode_success::< - types::UpdateWebhookDestinationResponse200ApplicationJson, - >(&self.core, response) + support::decode_success::(&self.core, response) .await .map_err(support::Error::widen) } else { @@ -232028,9 +216445,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232058,7 +216473,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232086,9 +216501,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232116,9 +216529,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232146,9 +216557,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232173,12 +216582,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(413u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + UpdateWebhookDestinationError::Status413(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232206,7 +216641,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232234,9 +216669,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232264,9 +216697,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232294,9 +216725,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::UpdateWebhookDestinationResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232334,21 +216763,23 @@ Rotates the signing secret for the selected project's webhook destination and re Tags: Webhook Destinations. -Response `200`: A new one-time signing secret. +Response `200`: The new signing secret. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -232356,18 +216787,16 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn rotate_webhook_signing_secret( &self, idempotency_key: String, destination_id: String, project_id: String, - body: &types::RotateWebhookSigningSecretRequestApplicationJson, + body: &types::RotateWebhookSigningSecretRequest, ) -> Result< - support::ResponseValue< - types::RotateWebhookSigningSecretResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { let mut path = "/v1/projects/{projectId}/webhooks/destinations/{destinationId}/secret-rotations" @@ -232433,7 +216862,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if response.status().is_success() { support::decode_success::< - types::RotateWebhookSigningSecretResponse200ApplicationJson, + types::RotateWebhookSigningSecretResponse, >(&self.core, response) .await .map_err(support::Error::widen) @@ -232449,9 +216878,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232479,7 +216906,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232507,9 +216934,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232537,9 +216962,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(404u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232567,9 +216990,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(410u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232594,12 +217015,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(413u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + RotateWebhookSigningSecretError::Status413(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(422u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232627,7 +217074,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232655,9 +217102,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232685,9 +217130,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232715,9 +217158,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232763,11 +217204,15 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error -Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable + +Response `504`: REQUEST_TIMEOUT: Request Timeout*/ #[inline] pub async fn list_webhook_egress_addresses( &self, @@ -232829,7 +217274,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -232875,7 +217320,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232903,9 +217348,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232930,10 +217373,38 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ListWebhookEgressAddressesError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232961,7 +217432,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -232986,6 +217457,34 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ }, ); } + if support::StatusSpec::Exact(504u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ListWebhookEgressAddressesError::Status504(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } Err(support::Error::UnexpectedStatus { status, headers, @@ -233009,7 +217508,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -233017,7 +217518,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn list_webhook_event_types( &self, @@ -233084,7 +217585,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -233130,9 +217631,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEventTypesResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233160,7 +217659,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233188,9 +217687,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEventTypesResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233215,10 +217712,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + ListWebhookEventTypesError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233246,9 +217771,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEventTypesResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233276,9 +217799,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEventTypesResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233306,9 +217827,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::ListWebhookEventTypesResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233356,7 +217875,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -233364,7 +217885,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[inline] pub async fn get_webhook_event_schema( &self, @@ -233443,7 +217964,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ .map_err(support::Error::widen)?; if support::StatusSpec::Exact(200u16).matches(status) { let value = serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) .map_err(|path| support::Error::< @@ -233489,9 +218010,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(400u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookEventSchemaResponse400ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233519,7 +218038,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(401u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233547,9 +218066,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(403u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookEventSchemaResponse403ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233574,10 +218091,38 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ }, ); } + if support::StatusSpec::Exact(422u16).matches(status) { + return Err( + match serde_json::from_slice::< + Box, + >(&body) + .map_err(|error| error.to_string()) + { + Ok(value) => { + support::Error::Api( + support::ResponseValue::new( + status, + headers, + GetWebhookEventSchemaError::Status422(value), + ), + ) + } + Err(path) => { + support::Error::Decode { + status, + headers, + path, + body, + truncated, + } + } + }, + ); + } if support::StatusSpec::Exact(500u16).matches(status) { return Err( match serde_json::from_slice::< - Box, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233605,9 +218150,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(502u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookEventSchemaResponse502ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233635,9 +218178,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(503u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookEventSchemaResponse503ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233665,9 +218206,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ if support::StatusSpec::Exact(504u16).matches(status) { return Err( match serde_json::from_slice::< - Box< - types::GetWebhookEventSchemaResponse504ApplicationProblemPlusJson, - >, + Box, >(&body) .map_err(|error| error.to_string()) { @@ -233786,7 +218325,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -233806,7 +218345,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn delete_account( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.delete_account()) @@ -233823,7 +218362,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -233843,7 +218382,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn get_account( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_account()) @@ -233862,7 +218401,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -233886,9 +218425,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn update_account( &self, idempotency_key: String, - body: &types::UpdateAccountRequestApplicationJson, + body: &types::UpdateAccountRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.update_account(idempotency_key, body)) @@ -233903,7 +218442,9 @@ Response `200`: OAuth applications authorized by the authenticated user. Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden + +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -233922,9 +218463,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, params: Option, ) -> Result< - support::ResponseValue< - types::ListAuthorizedApplicationsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_authorized_applications(params)) @@ -233939,7 +218478,9 @@ Response `204`: OAuth application grant revoked. Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden + +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -233978,7 +218519,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234003,11 +218544,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub fn confirm_account_phone_verification( &self, - body: &types::ConfirmAccountPhoneVerificationRequestApplicationJson, + body: &types::ConfirmAccountPhoneVerificationRequest, ) -> Result< - support::ResponseValue< - types::ConfirmAccountPhoneVerificationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.confirm_account_phone_verification(body)) @@ -234026,7 +218565,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234051,11 +218590,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub fn start_account_phone_verification( &self, - body: &types::StartAccountPhoneVerificationRequestApplicationJson, + body: &types::StartAccountPhoneVerificationRequest, ) -> Result< - support::ResponseValue< - types::StartAccountPhoneVerificationResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.start_account_phone_verification(body)) @@ -234074,7 +218611,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234099,9 +218636,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, ) -> Result< - support::ResponseValue< - types::ResetAccountProfilePictureResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234121,7 +218656,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234145,11 +218680,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn commit_account_profile_picture( &self, idempotency_key: String, - body: &types::CommitAccountProfilePictureRequestApplicationJson, + body: &types::CommitAccountProfilePictureRequest, ) -> Result< - support::ResponseValue< - types::CommitAccountProfilePictureResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234171,7 +218704,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234194,11 +218727,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub fn create_account_profile_picture_upload( &self, - body: &types::CreateAccountProfilePictureUploadRequestApplicationJson, + body: &types::ProfilePictureUploadRequest, ) -> Result< - support::ResponseValue< - types::CreateAccountProfilePictureUploadResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.create_account_profile_picture_upload(body)) @@ -234209,13 +218740,13 @@ Returns metadata for the authenticated account's unrevoked service keys, includi Tags: Account Service Keys. -Response `200`: Active Account Service Key metadata, newest first. +Response `200`: Unrevoked Account Service Key metadata, including expired keys, newest first. Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234235,9 +218766,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn list_account_service_keys( &self, ) -> Result< - support::ResponseValue< - types::ListAccountServiceKeysResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_account_service_keys()) @@ -234256,7 +218785,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found @@ -234282,11 +218811,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn create_account_service_key( &self, idempotency_key: String, - body: &types::CreateAccountServiceKeyRequestApplicationJson, + body: &types::CreateAccountServiceKeyRequest, ) -> Result< - support::ResponseValue< - types::CreateAccountServiceKeyResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234306,7 +218833,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found @@ -234332,9 +218859,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, service_key_id: String, ) -> Result< - support::ResponseValue< - types::RevokeAccountServiceKeyResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234350,17 +218875,17 @@ Starts the device authorization flow for a CLI or another device without a brows Tags: Device Authorization. -Response `200`: Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side. +Response `200`: Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server. -Response `400`: WorkOS rejected the request. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling. +Response `400`: The authorization request was rejected. OAuth errors use error and error_description fields. -Response `502`: WorkOS could not be reached (problem+json).*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ #[allow(deprecated)] #[inline] pub fn device_authorize( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.device_authorize()) @@ -234381,14 +218906,14 @@ Response `429`: Relayed slow_down; back off the polling interval. Response `500`: server_error: the login could not be completed; retry the login from the start. -Response `502`: WorkOS could not be reached (problem+json).*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ #[allow(deprecated)] #[inline] pub fn device_token( &self, - body: &types::DeviceTokenRequestApplicationJson, + body: &types::DeviceTokenRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.device_token(body)) @@ -234406,11 +218931,9 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To*/ #[inline] pub fn start_enterprise_login( &self, - body: &types::StartEnterpriseLoginRequestApplicationJson, + body: &types::StartEnterpriseLoginRequest, ) -> Result< - support::ResponseValue< - types::StartEnterpriseLoginResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.start_enterprise_login(body)) @@ -234431,7 +218954,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn list_oauth_scopes( &self, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_oauth_scopes()) @@ -234448,7 +218971,7 @@ Response `400`: INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found @@ -234471,9 +218994,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationConnectionStatusResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_organization_connection_status(org_id)) @@ -234490,7 +219011,7 @@ Response `400`: INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found @@ -234513,9 +219034,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::RetryOrganizationConnectionSyncResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.retry_organization_connection_sync(org_id)) @@ -234532,13 +219051,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234557,9 +219076,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationSsoConfigurationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_organization_sso_configuration(org_id)) @@ -234576,13 +219093,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234600,11 +219117,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn update_organization_sso_policy( &self, org_id: String, - body: &types::UpdateOrganizationSsoPolicyRequestApplicationJson, + body: &types::UpdateOrganizationSsoPolicyRequest, ) -> Result< - support::ResponseValue< - types::UpdateOrganizationSsoPolicyResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234622,13 +219137,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234646,11 +219161,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn begin_organization_sso_admission( &self, org_id: String, - body: &types::BeginOrganizationSsoAdmissionRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationSsoAdmissionResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234668,13 +219181,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234692,11 +219205,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn begin_organization_authentication( &self, org_id: String, - body: &types::BeginOrganizationAuthenticationRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationAuthenticationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234714,13 +219225,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234738,11 +219249,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn begin_organization_closure_authentication( &self, org_id: String, - body: &types::BeginOrganizationClosureAuthenticationRequestApplicationJson, + body: &types::OrganizationAuthenticationRequest, ) -> Result< - support::ResponseValue< - types::BeginOrganizationClosureAuthenticationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234750,6 +219259,53 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req self.inner.begin_organization_closure_authentication(org_id, body), ) } + /**Turn organization SSO off + +Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run. + +Tags: Organization SSO. + +Response `200`: Current connection and independent local policy state. + +Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid + +Response `401`: NOT_AUTHENTICATED: Not Authenticated + +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found + +Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict + +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused + +Response `500`: INVALID_AUTH_CONTEXT: Invalid Authentication Context + +INTERNAL_ERROR: Internal Server Error + +Response `502`: UPSTREAM_FAILURE: Upstream Service Failure + +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable + +Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout*/ + #[allow(deprecated)] + #[inline] + pub fn disable_organization_sso( + &self, + idempotency_key: String, + org_id: String, + body: &types::DisableOrganizationSsoRequest, + ) -> Result< + support::ResponseValue, + support::Error, + > { + self.runtime + .block_on( + self.inner.disable_organization_sso(idempotency_key, org_id, body), + ) + } /**Authenticate to an invitation's organization SSO connection Returns an authentication URL for the organization SSO connection associated with the supplied invitation token. Supply token and returnTo. Complete the returned authentication flow; requesting its URL does not itself accept the invitation. @@ -234762,13 +219318,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234786,9 +219342,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn begin_invitation_sso( &self, org_id: String, - body: &types::BeginInvitationSsoRequestApplicationJson, + body: &types::BeginInvitationSsoRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.begin_invitation_sso(org_id, body)) @@ -234805,13 +219361,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234829,11 +219385,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn create_organization_sso_portal_link( &self, org_id: String, - body: &types::CreateOrganizationSsoPortalLinkRequestApplicationJson, + body: &types::CreateOrganizationSsoPortalLinkRequest, ) -> Result< - support::ResponseValue< - types::CreateOrganizationSsoPortalLinkResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -234851,13 +219405,13 @@ Response `400`: INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated -Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +Response `403`: FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found Response `409`: ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict -Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed +Response `412`: ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -234876,9 +219430,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, org_id: String, ) -> Result< - support::ResponseValue< - types::RefreshOrganizationSsoConnectionResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.refresh_organization_sso_connection(org_id)) @@ -234908,11 +219460,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub fn create_app_installation_request( &self, - body: &types::CreateAppInstallationRequestRequestApplicationJson, + body: &types::CreateAppInstallationRequestRequest, ) -> Result< - support::ResponseValue< - types::CreateAppInstallationRequestResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.create_app_installation_request(body)) @@ -234942,11 +219492,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req #[inline] pub fn redeem_app_installation_delivery( &self, - body: &types::RedeemAppInstallationDeliveryRequestApplicationJson, + body: &types::RedeemAppInstallationDeliveryRequest, ) -> Result< - support::ResponseValue< - types::RedeemAppInstallationDeliveryResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.redeem_app_installation_delivery(body)) @@ -234965,7 +219513,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -234986,9 +219534,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationBillingOverviewResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235008,7 +219554,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -235033,7 +219579,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser params: Option, ) -> Result< support::ResponseValue< - types::CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson, + types::CreateOrganizationPaymentMethodCheckoutResponse, >, support::Error, > { @@ -235053,7 +219599,7 @@ Returns a single page of the selected organization's invoices; invoices with a z Tags: Organization Billing. -Response `200`: The organization's invoices, newest first. +Response `200`: A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order. Response `400`: INVALID_ARGUMENT: Invalid Argument @@ -235061,7 +219607,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -235082,7 +219628,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_invoices(organization_id)) @@ -235101,7 +219647,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -235122,9 +219668,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, organization_id: String, ) -> Result< - support::ResponseValue< - types::GetOrganizationPaymentMethodResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235136,7 +219680,7 @@ Schedules cancellation of the specified project's billing category at the end of Tags: Project Billing. -Response `200`: The category remains active through cancelsAt, then stops renewing. +Response `200`: The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription. Response `400`: INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid @@ -235144,7 +219688,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -235168,9 +219712,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser organization_id: String, project_id: String, params: Option, - body: &types::CancelSubscriptionRequestApplicationJson, + body: &types::CancelSubscriptionRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -235196,7 +219740,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -235222,7 +219766,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, organization_id: String, project_id: String, - body: &types::ChangePlanRequestApplicationJson, + body: &types::ChangePlanRequest, ) -> Result< support::ResponseValue, support::Error, @@ -235248,7 +219792,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress @@ -235272,9 +219816,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser organization_id: String, project_id: String, params: Option, - body: &types::ResumeSubscriptionRequestApplicationJson, + body: &types::ResumeSubscriptionRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -235290,7 +219834,7 @@ Creates payment-provider configuration for collecting a card for the selected or Tags: Organization Billing. -Response `200`: Stripe Elements configuration for capturing the organization's card. +Response `200`: Payment-provider client configuration (client secret and publishable key) for capturing the organization's card. Response `400`: INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid @@ -235298,7 +219842,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -235320,9 +219864,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, organization_id: String, ) -> Result< - support::ResponseValue< - types::CreateOrganizationSetupIntentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235349,7 +219891,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235367,7 +219909,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_projects(organization_id, params)) @@ -235386,7 +219928,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: SLUG_TAKEN: Slug Already Taken @@ -235407,9 +219949,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, organization_id: String, - body: &types::CreateProjectRequestApplicationJson, + body: &types::CreateProjectRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -235431,7 +219973,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -235451,9 +219993,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, project_id: String, ) -> Result< - support::ResponseValue< - types::GetProjectClosureStatusResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235475,7 +220015,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235493,7 +220033,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.count_projects(organization_id, params)) @@ -235512,7 +220052,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235530,9 +220070,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req organization_id: String, slug: String, ) -> Result< - support::ResponseValue< - types::CheckProjectSlugAvailabilityResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235552,7 +220090,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235572,7 +220110,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_attachments(id, params)) @@ -235593,7 +220131,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready @@ -235618,7 +220156,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req content_length: String, content_type: String, idempotency_key: String, - body: &types::UploadAttachmentRequestMultipartRelated, + body: &bytes::Bytes, ) -> Result< support::ResponseValue, support::Error, @@ -235648,7 +220186,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ATTACHMENT_NOT_FOUND: Attachment Not Found @@ -235670,7 +220208,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req attachment_id: String, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_attachment(attachment_id, id)) @@ -235687,7 +220225,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ATTACHMENT_NOT_FOUND: Attachment Not Found @@ -235728,7 +220266,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235745,9 +220283,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, id: String, ) -> Result< - support::ResponseValue< - types::ListProjectPlatformsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_project_platforms(id)) @@ -235768,7 +220304,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded @@ -235793,9 +220329,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectEmailDomainRequestApplicationJson, + body: &types::ConnectEmailDomainRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -235813,7 +220349,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235834,9 +220370,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetProjectImessagePlatformResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_project_imessage_platform(id)) @@ -235853,7 +220387,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -235875,9 +220409,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue< - types::ListSharedLineAssignmentsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_shared_line_assignments(id, params)) @@ -235896,7 +220428,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists @@ -235921,11 +220453,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateSharedLineAssignmentRequestApplicationJson, + body: &types::CreateSharedLineAssignmentRequest, ) -> Result< - support::ResponseValue< - types::CreateSharedLineAssignmentResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235945,7 +220475,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -235969,9 +220499,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::ReleaseSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -235989,7 +220517,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -236013,9 +220541,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::GetSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -236023,7 +220549,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Provision dedicated iMessage line -Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. +Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. Tags: Dedicated iMessage lines. @@ -236037,7 +220563,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -236063,9 +220589,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, ) -> Result< - support::ResponseValue< - types::ProvisionImessageDedicatedLineResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -236075,7 +220599,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Release dedicated iMessage line -Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. +Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. Tags: Dedicated iMessage lines. @@ -236087,7 +220611,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -236119,7 +220643,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**List operations -Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. +Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. Tags: Operations. @@ -236129,7 +220653,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -236151,24 +220675,24 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_operations(id, params)) } /**Get operation -Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. +Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. Tags: Operations. -Response `200`: The operation, and the resource it produced once one exists. +Response `200`: The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal. Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -236192,14 +220716,14 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_operation(id, operation_id)) } /**Cancel operation -Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. +Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. Tags: Operations. @@ -236209,7 +220733,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -236235,7 +220759,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.cancel_operation(id, operation_id)) @@ -236252,7 +220776,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -236274,7 +220798,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_resources(id, params)) @@ -236293,7 +220817,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -236336,7 +220860,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -236360,7 +220884,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_resource(id, resource_id)) @@ -236371,7 +220895,7 @@ Any project writer, including a scoped API key, may detach the campaign. The num Tags: SMS campaigns. -Response `200`: The original terminal operation on an authorized replay. +Response `200`: The original terminal operation on an authorized replay. No Retry-After is emitted. Response `202`: Assignment accepted. Poll the operation Location until terminal. @@ -236381,11 +220905,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused @@ -236428,7 +220952,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Read SMS line campaign assignment -Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. +Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. Tags: SMS campaigns. @@ -236440,11 +220964,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `429`: RATE_LIMITED: Too Many Requests @@ -236466,9 +220990,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue< - types::GetSmsLineCampaignAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -236480,7 +221002,7 @@ Attach a ready campaign from this project’s organization to its line. Requires Tags: SMS campaigns. -Response `200`: The original terminal operation on an authorized replay. +Response `200`: The original terminal operation on an authorized replay. No Retry-After is emitted. Response `202`: Assignment accepted. Poll the operation Location until terminal. @@ -236490,11 +221012,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found -Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required +Response `409`: PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused @@ -236518,7 +221040,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, resource_id: String, - body: &types::AssignSmsLineCampaignRequestApplicationJson, + body: &types::AssignSmsLineCampaignRequest, ) -> Result< support::ResponseValue, support::Error, @@ -236546,7 +221068,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -236571,9 +221093,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::PurchaseSmsNumberRequestApplicationJson, + body: &types::PurchaseSmsNumberRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -236591,7 +221113,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -236613,7 +221135,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, country_code: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_number_area_codes(id, country_code)) @@ -236630,7 +221152,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -236651,14 +221173,14 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_number_countries(id)) } /**Connect Telegram bot -Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. +Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. Tags: Telegram. @@ -236670,7 +221192,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress @@ -236693,9 +221215,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectTelegramBotRequestApplicationJson, + body: &types::ConnectTelegramBotRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -236713,7 +221235,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -236737,10 +221259,10 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub fn batch_update_voice_line_profile_assignments( &self, id: String, - body: &types::BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson, + body: &types::BatchUpdateVoiceLineProfileAssignmentsRequest, ) -> Result< support::ResponseValue< - types::BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson, + types::BatchUpdateVoiceLineProfileAssignmentsResponse, >, support::Error, > { @@ -236761,7 +221283,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -236810,7 +221332,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -236834,9 +221356,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, resource_id: String, ) -> Result< - support::ResponseValue< - types::GetVoiceLineProfileAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -236854,7 +221374,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -236879,11 +221399,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, resource_id: String, - body: &types::AssignVoiceLineProfileRequestApplicationJson, + body: &types::AssignVoiceLineProfileRequest, ) -> Result< - support::ResponseValue< - types::AssignVoiceLineProfileResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -236901,7 +221419,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -236923,7 +221441,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_voice_profiles(id, params)) @@ -236940,7 +221458,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required @@ -236962,9 +221480,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub fn create_voice_profile( &self, id: String, - body: &types::CreateVoiceProfileRequestApplicationJson, + body: &types::CreateVoiceProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.create_voice_profile(id, body)) @@ -236981,7 +221499,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237004,9 +221522,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetDefaultVoiceProfileResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_default_voice_profile(id)) @@ -237023,7 +221539,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237047,11 +221563,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub fn update_default_voice_profile( &self, id: String, - body: &types::UpdateDefaultVoiceProfileRequestApplicationJson, + body: &types::UpdateDefaultVoiceProfileRequest, ) -> Result< - support::ResponseValue< - types::UpdateDefaultVoiceProfileResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.update_default_voice_profile(id, body)) @@ -237070,7 +221584,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists @@ -237092,7 +221606,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser pub fn create_default_voice_profile( &self, id: String, - body: &types::CreateDefaultVoiceProfileRequestApplicationJson, + body: &types::CreateDefaultVoiceProfileRequest, ) -> Result< support::ResponseValue, support::Error, @@ -237111,11 +221625,11 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found -Response `409`: VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict +Response `409`: VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN: Voice Default Profile Deletion Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -237161,7 +221675,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237185,7 +221699,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, profile_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_voice_profile(id, profile_id)) @@ -237202,7 +221716,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237227,9 +221741,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileRequestApplicationJson, + body: &types::UpdateVoiceProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.update_voice_profile(id, profile_id, body)) @@ -237246,7 +221760,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237273,9 +221787,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser profile_id: String, expected_version: i64, ) -> Result< - support::ResponseValue< - types::DeleteVoiceProfileInboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237297,7 +221809,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237322,11 +221834,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileInboundRequestApplicationJson, + body: &types::UpdateVoiceProfileInboundRequest, ) -> Result< - support::ResponseValue< - types::UpdateVoiceProfileInboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237346,7 +221856,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237371,7 +221881,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::ReplaceVoiceProfileInboundRequestApplicationJson, + body: &types::ReplaceVoiceProfileInboundRequest, ) -> Result< support::ResponseValue, support::Error, @@ -237391,7 +221901,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237418,9 +221928,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser profile_id: String, expected_version: i64, ) -> Result< - support::ResponseValue< - types::DeleteVoiceProfileOutboundResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237442,7 +221950,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237467,10 +221975,10 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, profile_id: String, - body: &types::UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson, + body: &types::UpdateVoiceProfileOutboundAuthenticationRequest, ) -> Result< support::ResponseValue< - types::UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson, + types::UpdateVoiceProfileOutboundAuthenticationResponse, >, support::Error, > { @@ -237501,7 +222009,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237527,7 +222035,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, profile_id: String, - body: &types::ConfigureVoiceProfileOutboundRequestApplicationJson, + body: &types::ConfigureVoiceProfileOutboundRequest, ) -> Result< support::ResponseValue, support::Error, @@ -237558,7 +222066,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found @@ -237584,11 +222092,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, profile_id: String, - body: &types::RotateVoiceProfileOutboundCredentialRequestApplicationJson, + body: &types::RotateVoiceProfileOutboundCredentialRequest, ) -> Result< - support::ResponseValue< - types::RotateVoiceProfileOutboundCredentialResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237615,7 +222121,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -237636,9 +222142,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetProjectWhatsappPlatformResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_project_whatsapp_platform(id)) @@ -237659,7 +222163,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -237705,7 +222209,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -237728,9 +222232,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::GetWhatsappBusinessAccountResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_whatsapp_business_account(id)) @@ -237747,7 +222249,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected @@ -237770,9 +222272,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, id: String, ) -> Result< - support::ResponseValue< - types::ListWhatsappAccountPhoneNumbersResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_whatsapp_account_phone_numbers(id)) @@ -237793,7 +222293,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible @@ -237820,11 +222320,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateWhatsappVoipSenderRequestApplicationJson, + body: &types::CreateWhatsappVoipSenderRequest, ) -> Result< - support::ResponseValue< - types::CreateWhatsappVoipSenderResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237848,7 +222346,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -237873,11 +222371,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::ConnectWhatsappBusinessRequestApplicationJson, + body: &types::ConnectWhatsappBusinessRequest, ) -> Result< - support::ResponseValue< - types::ConnectWhatsappBusinessResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237897,7 +222393,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found @@ -237922,9 +222418,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser resource_id: String, received_after: DateTime, ) -> Result< - support::ResponseValue< - types::GetWhatsappBusinessVerificationCodeResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -237950,7 +222444,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -237969,9 +222463,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, id: String, ) -> Result< - support::ResponseValue< - types::GetWhatsappSignupConfigResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_whatsapp_signup_config(id)) @@ -237988,7 +222480,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: VALIDATION_FAILED: Request Validation Failed @@ -238010,9 +222502,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser id: String, params: Option, ) -> Result< - support::ResponseValue< - types::ListWhatsappSharedLineAssignmentsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238032,7 +222522,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists @@ -238057,11 +222547,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, idempotency_key: String, id: String, - body: &types::CreateWhatsappSharedLineAssignmentRequestApplicationJson, + body: &types::CreateWhatsappSharedLineAssignmentRequest, ) -> Result< - support::ResponseValue< - types::CreateWhatsappSharedLineAssignmentResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238087,7 +222575,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -238111,9 +222599,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238133,7 +222619,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: ASSIGNMENT_NOT_FOUND: Assignment Not Found @@ -238157,9 +222643,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser assignment_id: String, id: String, ) -> Result< - support::ResponseValue< - types::GetWhatsappSharedLineAssignmentResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238169,7 +222653,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Provision dedicated WhatsApp line -Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. +Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. Tags: Dedicated WhatsApp lines. @@ -238183,7 +222667,7 @@ Response `402`: ENTITLEMENT_REQUIRED: Entitlement Required Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: PROJECT_CLOSING: Project Is Closing @@ -238209,9 +222693,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser idempotency_key: String, id: String, ) -> Result< - support::ResponseValue< - types::ProvisionWhatsappDedicatedLineResponse202ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238221,7 +222703,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser } /**Release dedicated WhatsApp line -Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. +Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. Tags: Dedicated WhatsApp lines. @@ -238233,7 +222715,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: RESOURCE_NOT_FOUND: Resource Not Found @@ -238277,7 +222759,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238299,7 +222781,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.delete_project(idempotency_key, project_id)) @@ -238316,7 +222798,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238337,7 +222819,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_project(project_id)) @@ -238356,7 +222838,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238379,9 +222861,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::UpdateProjectRequestApplicationJson, + body: &types::UpdateProjectRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -238399,7 +222881,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238420,7 +222902,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_agent_profile(project_id)) @@ -238439,7 +222921,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238462,9 +222944,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::UpdateAgentProfileRequestApplicationJson, + body: &types::UpdateAgentProfileRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -238478,19 +222960,21 @@ Replaces the selected project's agent avatar with the project's default avatar, Tags: Agent Profile. -Response `200`: The agent profile reset to the default avatar. +Response `200`: The agent profile with the project's default avatar. + +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found Response `410`: PROJECT_DELETED: Project Deleted -Response `422`: VALIDATION_FAILED: Request Validation Failed +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -238506,9 +222990,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req idempotency_key: String, project_id: String, ) -> Result< - support::ResponseValue< - types::ResetAgentProfileAvatarResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238530,7 +223012,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238553,11 +223035,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req &self, idempotency_key: String, project_id: String, - body: &types::CommitAgentProfileAvatarRequestApplicationJson, + body: &types::CommitAgentProfileAvatarRequest, ) -> Result< - support::ResponseValue< - types::CommitAgentProfileAvatarResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238579,7 +223059,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238599,11 +223079,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req pub fn create_agent_profile_avatar_upload( &self, project_id: String, - body: &types::CreateAgentProfileAvatarUploadRequestApplicationJson, + body: &types::CreateAgentProfileAvatarUploadRequest, ) -> Result< - support::ResponseValue< - types::CreateAgentProfileAvatarUploadResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238613,9 +223091,11 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req } /**List project API keys +Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation. + Tags: API keys. -Response `200`: Every live key on the project, newest first. Never includes secrets. +Response `200`: The project's keys that have not been revoked, newest first. Never includes secrets. Response `400`: INVALID_ARGUMENT: Invalid Argument @@ -238623,7 +223103,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238644,7 +223124,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_project_api_keys(project_id)) @@ -238655,7 +223135,7 @@ Creates a key bound to the selected project using the supplied name, permissions Tags: API keys. -Response `201`: The created key, with its secret. The secret is shown only here and cannot be recovered afterwards. +Response `201`: The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation. Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument @@ -238663,7 +223143,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found @@ -238688,9 +223168,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ &self, idempotency_key: String, project_id: String, - body: &types::CreateProjectApiKeyRequestApplicationJson, + body: &types::CreateProjectApiKeyRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -238706,19 +223186,19 @@ Tags: API keys. Response `200`: The revoked key. Repeating the delete returns the same revokedAt. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found Response `410`: PROJECT_DELETED: Project Deleted -Response `422`: VALIDATION_FAILED: Request Validation Failed +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -238735,7 +223215,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ api_key_id: String, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -238759,7 +223239,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found @@ -238785,9 +223265,9 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout*/ idempotency_key: String, api_key_id: String, project_id: String, - body: &types::UpdateProjectApiKeyRequestApplicationJson, + body: &types::UpdateProjectApiKeyRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -238816,7 +223296,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -238837,7 +223317,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.get_billing_overview(project_id)) @@ -238856,7 +223336,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: OPERATION_NOT_FOUND: Operation Not Found @@ -238880,13 +223360,13 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser project_id: String, operation_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime .block_on(self.inner.get_billing_operation(project_id, operation_id)) } - /**List billing plans available to a project + /**List available billing plans Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan. @@ -238900,7 +223380,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `409`: FAILED_PRECONDITION: Failed Precondition @@ -238921,7 +223401,7 @@ Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Ser &self, project_id: String, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime.block_on(self.inner.list_billing_plans(project_id)) @@ -238940,7 +223420,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `500`: INTERNAL_ERROR: Internal Server Error @@ -238952,9 +223432,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ project_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::GetMessageMetricsBackfillResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -238974,7 +223452,7 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `500`: INTERNAL_ERROR: Internal Server Error @@ -238986,9 +223464,7 @@ Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ project_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::GetMessageMetricsSqlSchemaResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239008,10 +223484,12 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `422`: QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed +Response `429`: QUERY_CONCURRENCY_LIMIT: Query Concurrency Limit + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure @@ -239027,7 +223505,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Req params: Option, body: &types::ClickHouseSqlQueryRequest, ) -> Result< - support::ResponseValue, + support::ResponseValue, support::Error, > { self.runtime @@ -239047,7 +223525,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239055,7 +223535,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn list_webhook_api_versions( @@ -239081,7 +223561,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239089,7 +223571,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn list_webhook_destinations( @@ -239097,9 +223579,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ project_id: String, params: Option, ) -> Result< - support::ResponseValue< - types::ListWebhookDestinationsResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239111,17 +223591,19 @@ Creates a webhook destination for the selected project using its URL, payload AP Tags: Webhook Destinations. -Response `201`: The created destination and its one-time signing secret. +Response `201`: The created destination and its signing secret. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239129,18 +223611,16 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn create_webhook_destination( &self, idempotency_key: String, project_id: String, - body: &types::CreateWebhookDestinationRequestApplicationJson, + body: &types::CreateWebhookDestinationRequest, ) -> Result< - support::ResponseValue< - types::CreateWebhookDestinationResponse201ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239162,17 +223642,19 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found +Response `422`: VALIDATION_FAILED: Request Validation Failed + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn delete_webhook_destination( @@ -239180,9 +223662,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ destination_id: String, project_id: String, ) -> Result< - support::ResponseValue< - types::DeleteWebhookDestinationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239202,19 +223682,21 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted +Response `422`: VALIDATION_FAILED: Request Validation Failed + Response `500`: INTERNAL_ERROR: Internal Server Error Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn get_webhook_destination( @@ -239222,9 +223704,7 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ destination_id: String, project_id: String, ) -> Result< - support::ResponseValue< - types::GetWebhookDestinationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239238,19 +223718,21 @@ Tags: Webhook Destinations. Response `200`: The updated webhook destination. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239258,7 +223740,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn update_webhook_destination( @@ -239266,11 +223748,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ idempotency_key: String, destination_id: String, project_id: String, - body: &types::UpdateWebhookDestinationRequestApplicationJson, + body: &types::UpdateWebhookDestinationRequest, ) -> Result< - support::ResponseValue< - types::UpdateWebhookDestinationResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239291,21 +223771,23 @@ Rotates the signing secret for the selected project's webhook destination and re Tags: Webhook Destinations. -Response `200`: A new one-time signing secret. +Response `200`: The new signing secret. -Response `400`: INVALID_ARGUMENT: Invalid Argument +Response `400`: IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required Response `404`: WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found Response `410`: WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted -Response `422`: IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused +Response `413`: PAYLOAD_TOO_LARGE: Payload Too Large + +Response `422`: VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239313,7 +223795,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn rotate_webhook_signing_secret( @@ -239321,11 +223803,9 @@ Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ idempotency_key: String, destination_id: String, project_id: String, - body: &types::RotateWebhookSigningSecretRequestApplicationJson, + body: &types::RotateWebhookSigningSecretRequest, ) -> Result< - support::ResponseValue< - types::RotateWebhookSigningSecretResponse200ApplicationJson, - >, + support::ResponseValue, support::Error, > { self.runtime @@ -239354,11 +223834,15 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error -Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable*/ +Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable + +Response `504`: REQUEST_TIMEOUT: Request Timeout*/ #[allow(deprecated)] #[inline] pub fn list_webhook_egress_addresses( @@ -239386,7 +223870,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239394,7 +223880,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn list_webhook_event_types( @@ -239424,7 +223910,9 @@ Response `401`: NOT_AUTHENTICATED: Not Authenticated Response `403`: FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch -FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope +FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + +Response `422`: VALIDATION_FAILED: Request Validation Failed Response `500`: INTERNAL_ERROR: Internal Server Error @@ -239432,7 +223920,7 @@ Response `502`: UPSTREAM_FAILURE: Upstream Service Failure Response `503`: UPSTREAM_UNAVAILABLE: Upstream Service Unavailable -Response `504`: UPSTREAM_TIMEOUT: Upstream Service Timeout*/ +Response `504`: REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout*/ #[allow(deprecated)] #[inline] pub fn get_webhook_event_schema( diff --git a/packages/typescript/README.md b/packages/typescript/README.md index 8328610..c2e4b81 100644 --- a/packages/typescript/README.md +++ b/packages/typescript/README.md @@ -3,13 +3,6 @@ TypeScript client for the Photon API, generated from the public OpenAPI contract. Runs on Node.js 22+ and modern browsers. -> **Preview release.** This version is generated from the current production -> contract before all of its schemas have stable names. Types the contract -> does not name yet have names derived from their operation (for example -> `ListProjectsResponse200ApplicationJson`) or carry a version prefix such as -> `Photon20260701_`. These type names change in 0.2.0, when the contract -> names them; the rename does not change requests, responses or method names. - ## Installation ```sh diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 38bd654..a587e5c 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@photon-ai/api", - "version": "0.1.1", + "version": "0.2.0", "description": "Generated Photon API RPC client for Node.js and browsers", "license": "MIT", "type": "module", diff --git a/packages/typescript/src/generated/index.ts b/packages/typescript/src/generated/index.ts index 2e5e320..3748573 100644 --- a/packages/typescript/src/generated/index.ts +++ b/packages/typescript/src/generated/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export { assignSmsLineCampaign, assignVoiceLineProfile, batchUpdateVoiceLineProfileAssignments, beginInvitationSso, beginOrganizationAuthentication, beginOrganizationClosureAuthentication, beginOrganizationSsoAdmission, cancelOperation, cancelSubscription, changePlan, checkProjectSlugAvailability, commitAccountProfilePicture, commitAgentProfileAvatar, configureVoiceProfileOutbound, confirmAccountPhoneVerification, connectEmailDomain, connectTelegramBot, connectWhatsappBusiness, countProjects, createAccountProfilePictureUpload, createAccountServiceKey, createAgentProfileAvatarUpload, createAppInstallationRequest, createDefaultVoiceProfile, createOrganizationPaymentMethodCheckout, createOrganizationSetupIntent, createOrganizationSsoPortalLink, createProject, createProjectApiKey, createSharedLineAssignment, createVoiceProfile, createWebhookDestination, createWhatsappSharedLineAssignment, createWhatsappVoipSender, deleteAccount, deleteProject, deleteVoiceProfile, deleteVoiceProfileInbound, deleteVoiceProfileOutbound, deleteWebhookDestination, deviceAuthorize, deviceToken, disconnectWhatsappBusinessAccount, downloadAttachment, getAccount, getAgentProfile, getAttachment, getBillingOperation, getBillingOverview, getDefaultVoiceProfile, getMessageMetricsBackfill, getMessageMetricsSqlSchema, getOperation, getOrganizationBillingOverview, getOrganizationConnectionStatus, getOrganizationPaymentMethod, getOrganizationSsoConfiguration, getProject, getProjectClosureStatus, getProjectImessagePlatform, getProjectWhatsappPlatform, getResource, getSharedLineAssignment, getSmsLineCampaignAssignment, getVoiceLineProfileAssignment, getVoiceProfile, getWebhookDestination, getWebhookEventSchema, getWhatsappBusinessAccount, getWhatsappBusinessVerificationCode, getWhatsappSharedLineAssignment, getWhatsappSignupConfig, listAccountServiceKeys, listAttachments, listAuthorizedApplications, listBillingPlans, listInvoices, listNumberAreaCodes, listNumberCountries, listOauthScopes, listOperations, listProjectApiKeys, listProjectPlatforms, listProjects, listResources, listSharedLineAssignments, listVoiceProfiles, listWebhookApiVersions, listWebhookDestinations, listWebhookEgressAddresses, listWebhookEventTypes, listWhatsappAccountPhoneNumbers, listWhatsappSharedLineAssignments, type Options, provisionImessageDedicatedLine, provisionWhatsappDedicatedLine, purchaseSmsNumber, queryMessageMetrics, redeemAppInstallationDelivery, refreshOrganizationSsoConnection, releaseImessageDedicatedLine, releaseResource, releaseSharedLineAssignment, releaseWhatsappDedicatedLine, releaseWhatsappSharedLineAssignment, replaceVoiceProfileInbound, resetAccountProfilePicture, resetAgentProfileAvatar, resumeSubscription, retryOrganizationConnectionSync, revokeAccountServiceKey, revokeAuthorizedApplication, revokeProjectApiKey, rotateVoiceProfileOutboundCredential, rotateWebhookSigningSecret, startAccountPhoneVerification, startEnterpriseLogin, unassignSmsLineCampaign, unassignVoiceLineProfile, updateAccount, updateAgentProfile, updateDefaultVoiceProfile, updateOrganizationSsoPolicy, updateProject, updateProjectApiKey, updateVoiceProfile, updateVoiceProfileInbound, updateVoiceProfileOutboundAuthentication, updateWebhookDestination, uploadAttachment } from './sdk.gen.js'; -export type { __schema0, AssignSmsLineCampaignData, AssignSmsLineCampaignError, AssignSmsLineCampaignErrors, AssignSmsLineCampaignRequestApplicationJson, AssignSmsLineCampaignResponse200ApplicationJson, AssignSmsLineCampaignResponse202ApplicationJson, AssignSmsLineCampaignResponse400ApplicationProblemPlusJson, AssignSmsLineCampaignResponse403ApplicationProblemPlusJson, AssignSmsLineCampaignResponse404ApplicationProblemPlusJson, AssignSmsLineCampaignResponse409ApplicationProblemPlusJson, AssignSmsLineCampaignResponse422ApplicationProblemPlusJson, AssignSmsLineCampaignResponse429ApplicationProblemPlusJson, AssignSmsLineCampaignResponse500ApplicationProblemPlusJson, AssignSmsLineCampaignResponse502ApplicationProblemPlusJson, AssignSmsLineCampaignResponse503ApplicationProblemPlusJson, AssignSmsLineCampaignResponse504ApplicationProblemPlusJson, AssignSmsLineCampaignResponses, AssignSmsLineCampaignResult, AssignVoiceLineProfileData, AssignVoiceLineProfileError, AssignVoiceLineProfileErrors, AssignVoiceLineProfileRequestApplicationJson, AssignVoiceLineProfileResponse200ApplicationJson, AssignVoiceLineProfileResponse403ApplicationProblemPlusJson, AssignVoiceLineProfileResponse404ApplicationProblemPlusJson, AssignVoiceLineProfileResponse409ApplicationProblemPlusJson, AssignVoiceLineProfileResponse422ApplicationProblemPlusJson, AssignVoiceLineProfileResponse429ApplicationProblemPlusJson, AssignVoiceLineProfileResponse500ApplicationProblemPlusJson, AssignVoiceLineProfileResponse502ApplicationProblemPlusJson, AssignVoiceLineProfileResponse503ApplicationProblemPlusJson, AssignVoiceLineProfileResponse504ApplicationProblemPlusJson, AssignVoiceLineProfileResponses, AssignVoiceLineProfileResult, Authorization_Problem_INSUFFICIENT_SCOPE_403, BatchUpdateVoiceLineProfileAssignmentsData, BatchUpdateVoiceLineProfileAssignmentsError, BatchUpdateVoiceLineProfileAssignmentsErrors, BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson, BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson, BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson, BatchUpdateVoiceLineProfileAssignmentsResponses, BatchUpdateVoiceLineProfileAssignmentsResult, BeginInvitationSsoData, BeginInvitationSsoError, BeginInvitationSsoErrors, BeginInvitationSsoRequestApplicationJson, BeginInvitationSsoResponse200ApplicationJson, BeginInvitationSsoResponse400ApplicationProblemPlusJson, BeginInvitationSsoResponse403ApplicationProblemPlusJson, BeginInvitationSsoResponse404ApplicationProblemPlusJson, BeginInvitationSsoResponse409ApplicationProblemPlusJson, BeginInvitationSsoResponse412ApplicationProblemPlusJson, BeginInvitationSsoResponse422ApplicationProblemPlusJson, BeginInvitationSsoResponse500ApplicationProblemPlusJson, BeginInvitationSsoResponse502ApplicationProblemPlusJson, BeginInvitationSsoResponse503ApplicationProblemPlusJson, BeginInvitationSsoResponse504ApplicationProblemPlusJson, BeginInvitationSsoResponses, BeginInvitationSsoResult, BeginOrganizationAuthenticationData, BeginOrganizationAuthenticationError, BeginOrganizationAuthenticationErrors, BeginOrganizationAuthenticationRequestApplicationJson, BeginOrganizationAuthenticationResponse200ApplicationJson, BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson, BeginOrganizationAuthenticationResponses, BeginOrganizationAuthenticationResult, BeginOrganizationClosureAuthenticationData, BeginOrganizationClosureAuthenticationError, BeginOrganizationClosureAuthenticationErrors, BeginOrganizationClosureAuthenticationRequestApplicationJson, BeginOrganizationClosureAuthenticationResponse200ApplicationJson, BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson, BeginOrganizationClosureAuthenticationResponses, BeginOrganizationClosureAuthenticationResult, BeginOrganizationSsoAdmissionData, BeginOrganizationSsoAdmissionError, BeginOrganizationSsoAdmissionErrors, BeginOrganizationSsoAdmissionRequestApplicationJson, BeginOrganizationSsoAdmissionResponse200ApplicationJson, BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson, BeginOrganizationSsoAdmissionResponses, BeginOrganizationSsoAdmissionResult, CancelOperationData, CancelOperationError, CancelOperationErrors, CancelOperationResponse200ApplicationJson, CancelOperationResponse403ApplicationProblemPlusJson, CancelOperationResponse404ApplicationProblemPlusJson, CancelOperationResponse409ApplicationProblemPlusJson, CancelOperationResponse422ApplicationProblemPlusJson, CancelOperationResponse429ApplicationProblemPlusJson, CancelOperationResponse500ApplicationProblemPlusJson, CancelOperationResponse502ApplicationProblemPlusJson, CancelOperationResponse503ApplicationProblemPlusJson, CancelOperationResponse504ApplicationProblemPlusJson, CancelOperationResponses, CancelOperationResult, CancelSubscriptionData, CancelSubscriptionError, CancelSubscriptionErrors, CancelSubscriptionRequestApplicationJson, CancelSubscriptionResponse200ApplicationJson, CancelSubscriptionResponse400ApplicationProblemPlusJson, CancelSubscriptionResponse403ApplicationProblemPlusJson, CancelSubscriptionResponse409ApplicationProblemPlusJson, CancelSubscriptionResponse422ApplicationProblemPlusJson, CancelSubscriptionResponse500ApplicationProblemPlusJson, CancelSubscriptionResponse502ApplicationProblemPlusJson, CancelSubscriptionResponse503ApplicationProblemPlusJson, CancelSubscriptionResponse504ApplicationProblemPlusJson, CancelSubscriptionResponses, CancelSubscriptionResult, ChangePlanData, ChangePlanError, ChangePlanErrors, ChangePlanRequestApplicationJson, ChangePlanResponse200ApplicationJson, ChangePlanResponse202ApplicationJson, ChangePlanResponse400ApplicationProblemPlusJson, ChangePlanResponse403ApplicationProblemPlusJson, ChangePlanResponse409ApplicationProblemPlusJson, ChangePlanResponse413ApplicationProblemPlusJson, ChangePlanResponse422ApplicationProblemPlusJson, ChangePlanResponse500ApplicationProblemPlusJson, ChangePlanResponse502ApplicationProblemPlusJson, ChangePlanResponse503ApplicationProblemPlusJson, ChangePlanResponse504ApplicationProblemPlusJson, ChangePlanResponses, ChangePlanResult, CheckProjectSlugAvailabilityData, CheckProjectSlugAvailabilityError, CheckProjectSlugAvailabilityErrors, CheckProjectSlugAvailabilityResponse200ApplicationJson, CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson, CheckProjectSlugAvailabilityResponses, CheckProjectSlugAvailabilityResult, ClickHouseSqlQueryRequest, ClientOptions, CommitAccountProfilePictureData, CommitAccountProfilePictureError, CommitAccountProfilePictureErrors, CommitAccountProfilePictureRequestApplicationJson, CommitAccountProfilePictureResponse200ApplicationJson, CommitAccountProfilePictureResponse400ApplicationProblemPlusJson, CommitAccountProfilePictureResponse403ApplicationProblemPlusJson, CommitAccountProfilePictureResponse404ApplicationProblemPlusJson, CommitAccountProfilePictureResponse410ApplicationProblemPlusJson, CommitAccountProfilePictureResponse413ApplicationProblemPlusJson, CommitAccountProfilePictureResponse422ApplicationProblemPlusJson, CommitAccountProfilePictureResponse500ApplicationProblemPlusJson, CommitAccountProfilePictureResponse502ApplicationProblemPlusJson, CommitAccountProfilePictureResponse503ApplicationProblemPlusJson, CommitAccountProfilePictureResponse504ApplicationProblemPlusJson, CommitAccountProfilePictureResponses, CommitAccountProfilePictureResult, CommitAgentProfileAvatarData, CommitAgentProfileAvatarError, CommitAgentProfileAvatarErrors, CommitAgentProfileAvatarRequestApplicationJson, CommitAgentProfileAvatarResponse200ApplicationJson, CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson, CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson, CommitAgentProfileAvatarResponses, CommitAgentProfileAvatarResult, ConfigureVoiceProfileOutboundData, ConfigureVoiceProfileOutboundError, ConfigureVoiceProfileOutboundErrors, ConfigureVoiceProfileOutboundRequestApplicationJson, ConfigureVoiceProfileOutboundResponse200ApplicationJson, ConfigureVoiceProfileOutboundResponse201ApplicationJson, ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson, ConfigureVoiceProfileOutboundResponses, ConfigureVoiceProfileOutboundResult, ConfirmAccountPhoneVerificationData, ConfirmAccountPhoneVerificationError, ConfirmAccountPhoneVerificationErrors, ConfirmAccountPhoneVerificationRequestApplicationJson, ConfirmAccountPhoneVerificationResponse200ApplicationJson, ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson, ConfirmAccountPhoneVerificationResponses, ConfirmAccountPhoneVerificationResult, ConnectEmailDomainData, ConnectEmailDomainError, ConnectEmailDomainErrors, ConnectEmailDomainRequestApplicationJson, ConnectEmailDomainResponse202ApplicationJson, ConnectEmailDomainResponse400ApplicationProblemPlusJson, ConnectEmailDomainResponse402ApplicationProblemPlusJson, ConnectEmailDomainResponse403ApplicationProblemPlusJson, ConnectEmailDomainResponse409ApplicationProblemPlusJson, ConnectEmailDomainResponse422ApplicationProblemPlusJson, ConnectEmailDomainResponse429ApplicationProblemPlusJson, ConnectEmailDomainResponse500ApplicationProblemPlusJson, ConnectEmailDomainResponse502ApplicationProblemPlusJson, ConnectEmailDomainResponse503ApplicationProblemPlusJson, ConnectEmailDomainResponse504ApplicationProblemPlusJson, ConnectEmailDomainResponses, ConnectEmailDomainResult, ConnectTelegramBotData, ConnectTelegramBotError, ConnectTelegramBotErrors, ConnectTelegramBotRequestApplicationJson, ConnectTelegramBotResponse202ApplicationJson, ConnectTelegramBotResponse400ApplicationProblemPlusJson, ConnectTelegramBotResponse403ApplicationProblemPlusJson, ConnectTelegramBotResponse409ApplicationProblemPlusJson, ConnectTelegramBotResponse422ApplicationProblemPlusJson, ConnectTelegramBotResponse429ApplicationProblemPlusJson, ConnectTelegramBotResponse500ApplicationProblemPlusJson, ConnectTelegramBotResponse502ApplicationProblemPlusJson, ConnectTelegramBotResponse503ApplicationProblemPlusJson, ConnectTelegramBotResponse504ApplicationProblemPlusJson, ConnectTelegramBotResponses, ConnectTelegramBotResult, ConnectWhatsappBusinessData, ConnectWhatsappBusinessError, ConnectWhatsappBusinessErrors, ConnectWhatsappBusinessRequestApplicationJson, ConnectWhatsappBusinessResponse202ApplicationJson, ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson, ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson, ConnectWhatsappBusinessResponses, ConnectWhatsappBusinessResult, CountProjectsData, CountProjectsError, CountProjectsErrors, CountProjectsResponse200ApplicationJson, CountProjectsResponse400ApplicationProblemPlusJson, CountProjectsResponse403ApplicationProblemPlusJson, CountProjectsResponse422ApplicationProblemPlusJson, CountProjectsResponse502ApplicationProblemPlusJson, CountProjectsResponse503ApplicationProblemPlusJson, CountProjectsResponse504ApplicationProblemPlusJson, CountProjectsResponses, CountProjectsResult, CreateAccountProfilePictureUploadData, CreateAccountProfilePictureUploadError, CreateAccountProfilePictureUploadErrors, CreateAccountProfilePictureUploadRequestApplicationJson, CreateAccountProfilePictureUploadResponse201ApplicationJson, CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson, CreateAccountProfilePictureUploadResponses, CreateAccountProfilePictureUploadResult, CreateAccountServiceKeyData, CreateAccountServiceKeyError, CreateAccountServiceKeyErrors, CreateAccountServiceKeyRequestApplicationJson, CreateAccountServiceKeyResponse201ApplicationJson, CreateAccountServiceKeyResponse400ApplicationProblemPlusJson, CreateAccountServiceKeyResponse403ApplicationProblemPlusJson, CreateAccountServiceKeyResponse404ApplicationProblemPlusJson, CreateAccountServiceKeyResponse409ApplicationProblemPlusJson, CreateAccountServiceKeyResponse410ApplicationProblemPlusJson, CreateAccountServiceKeyResponse413ApplicationProblemPlusJson, CreateAccountServiceKeyResponse422ApplicationProblemPlusJson, CreateAccountServiceKeyResponse500ApplicationProblemPlusJson, CreateAccountServiceKeyResponse502ApplicationProblemPlusJson, CreateAccountServiceKeyResponse503ApplicationProblemPlusJson, CreateAccountServiceKeyResponse504ApplicationProblemPlusJson, CreateAccountServiceKeyResponses, CreateAccountServiceKeyResult, CreateAgentProfileAvatarUploadData, CreateAgentProfileAvatarUploadError, CreateAgentProfileAvatarUploadErrors, CreateAgentProfileAvatarUploadRequestApplicationJson, CreateAgentProfileAvatarUploadResponse201ApplicationJson, CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson, CreateAgentProfileAvatarUploadResponses, CreateAgentProfileAvatarUploadResult, CreateAppInstallationRequestData, CreateAppInstallationRequestError, CreateAppInstallationRequestErrors, CreateAppInstallationRequestRequestApplicationJson, CreateAppInstallationRequestResponse201ApplicationJson, CreateAppInstallationRequestResponse400ApplicationProblemPlusJson, CreateAppInstallationRequestResponse401ApplicationProblemPlusJson, CreateAppInstallationRequestResponse409ApplicationProblemPlusJson, CreateAppInstallationRequestResponse422ApplicationProblemPlusJson, CreateAppInstallationRequestResponse502ApplicationProblemPlusJson, CreateAppInstallationRequestResponse503ApplicationProblemPlusJson, CreateAppInstallationRequestResponse504ApplicationProblemPlusJson, CreateAppInstallationRequestResponses, CreateAppInstallationRequestResult, CreateDefaultVoiceProfileData, CreateDefaultVoiceProfileError, CreateDefaultVoiceProfileErrors, CreateDefaultVoiceProfileRequestApplicationJson, CreateDefaultVoiceProfileResponse200ApplicationJson, CreateDefaultVoiceProfileResponse201ApplicationJson, CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, CreateDefaultVoiceProfileResponses, CreateDefaultVoiceProfileResult, CreateOrganizationPaymentMethodCheckoutData, CreateOrganizationPaymentMethodCheckoutError, CreateOrganizationPaymentMethodCheckoutErrors, CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson, CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson, CreateOrganizationPaymentMethodCheckoutResponses, CreateOrganizationPaymentMethodCheckoutResult, CreateOrganizationSetupIntentData, CreateOrganizationSetupIntentError, CreateOrganizationSetupIntentErrors, CreateOrganizationSetupIntentResponse200ApplicationJson, CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson, CreateOrganizationSetupIntentResponses, CreateOrganizationSetupIntentResult, CreateOrganizationSsoPortalLinkData, CreateOrganizationSsoPortalLinkError, CreateOrganizationSsoPortalLinkErrors, CreateOrganizationSsoPortalLinkRequestApplicationJson, CreateOrganizationSsoPortalLinkResponse200ApplicationJson, CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson, CreateOrganizationSsoPortalLinkResponses, CreateOrganizationSsoPortalLinkResult, CreateProjectApiKeyData, CreateProjectApiKeyError, CreateProjectApiKeyErrors, CreateProjectApiKeyRequestApplicationJson, CreateProjectApiKeyResponse201ApplicationJson, CreateProjectApiKeyResponse400ApplicationProblemPlusJson, CreateProjectApiKeyResponse403ApplicationProblemPlusJson, CreateProjectApiKeyResponse404ApplicationProblemPlusJson, CreateProjectApiKeyResponse409ApplicationProblemPlusJson, CreateProjectApiKeyResponse410ApplicationProblemPlusJson, CreateProjectApiKeyResponse413ApplicationProblemPlusJson, CreateProjectApiKeyResponse422ApplicationProblemPlusJson, CreateProjectApiKeyResponse502ApplicationProblemPlusJson, CreateProjectApiKeyResponse504ApplicationProblemPlusJson, CreateProjectApiKeyResponses, CreateProjectApiKeyResult, CreateProjectData, CreateProjectError, CreateProjectErrors, CreateProjectRequestApplicationJson, CreateProjectResponse201ApplicationJson, CreateProjectResponse400ApplicationProblemPlusJson, CreateProjectResponse403ApplicationProblemPlusJson, CreateProjectResponse409ApplicationProblemPlusJson, CreateProjectResponse413ApplicationProblemPlusJson, CreateProjectResponse422ApplicationProblemPlusJson, CreateProjectResponse502ApplicationProblemPlusJson, CreateProjectResponse503ApplicationProblemPlusJson, CreateProjectResponse504ApplicationProblemPlusJson, CreateProjectResponses, CreateProjectResult, CreateSharedLineAssignmentData, CreateSharedLineAssignmentError, CreateSharedLineAssignmentErrors, CreateSharedLineAssignmentRequestApplicationJson, CreateSharedLineAssignmentResponse201ApplicationJson, CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson, CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson, CreateSharedLineAssignmentResponses, CreateSharedLineAssignmentResult, CreateVoiceProfileData, CreateVoiceProfileError, CreateVoiceProfileErrors, CreateVoiceProfileRequestApplicationJson, CreateVoiceProfileResponse201ApplicationJson, CreateVoiceProfileResponse403ApplicationProblemPlusJson, CreateVoiceProfileResponse409ApplicationProblemPlusJson, CreateVoiceProfileResponse422ApplicationProblemPlusJson, CreateVoiceProfileResponse429ApplicationProblemPlusJson, CreateVoiceProfileResponse500ApplicationProblemPlusJson, CreateVoiceProfileResponse502ApplicationProblemPlusJson, CreateVoiceProfileResponse503ApplicationProblemPlusJson, CreateVoiceProfileResponse504ApplicationProblemPlusJson, CreateVoiceProfileResponses, CreateVoiceProfileResult, CreateWebhookDestinationData, CreateWebhookDestinationError, CreateWebhookDestinationErrors, CreateWebhookDestinationRequestApplicationJson, CreateWebhookDestinationResponse201ApplicationJson, CreateWebhookDestinationResponse400ApplicationProblemPlusJson, CreateWebhookDestinationResponse403ApplicationProblemPlusJson, CreateWebhookDestinationResponse422ApplicationProblemPlusJson, CreateWebhookDestinationResponse502ApplicationProblemPlusJson, CreateWebhookDestinationResponse503ApplicationProblemPlusJson, CreateWebhookDestinationResponse504ApplicationProblemPlusJson, CreateWebhookDestinationResponses, CreateWebhookDestinationResult, CreateWhatsappSharedLineAssignmentData, CreateWhatsappSharedLineAssignmentError, CreateWhatsappSharedLineAssignmentErrors, CreateWhatsappSharedLineAssignmentRequestApplicationJson, CreateWhatsappSharedLineAssignmentResponse201ApplicationJson, CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, CreateWhatsappSharedLineAssignmentResponses, CreateWhatsappSharedLineAssignmentResult, CreateWhatsappVoipSenderData, CreateWhatsappVoipSenderError, CreateWhatsappVoipSenderErrors, CreateWhatsappVoipSenderRequestApplicationJson, CreateWhatsappVoipSenderResponse202ApplicationJson, CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson, CreateWhatsappVoipSenderResponses, CreateWhatsappVoipSenderResult, DeleteAccountData, DeleteAccountError, DeleteAccountErrors, DeleteAccountResponse200ApplicationJson, DeleteAccountResponse403ApplicationProblemPlusJson, DeleteAccountResponse404ApplicationProblemPlusJson, DeleteAccountResponse409ApplicationProblemPlusJson, DeleteAccountResponse500ApplicationProblemPlusJson, DeleteAccountResponse502ApplicationProblemPlusJson, DeleteAccountResponse503ApplicationProblemPlusJson, DeleteAccountResponse504ApplicationProblemPlusJson, DeleteAccountResponses, DeleteAccountResult, DeleteProjectData, DeleteProjectError, DeleteProjectErrors, DeleteProjectResponse200ApplicationJson, DeleteProjectResponse400ApplicationProblemPlusJson, DeleteProjectResponse403ApplicationProblemPlusJson, DeleteProjectResponse404ApplicationProblemPlusJson, DeleteProjectResponse413ApplicationProblemPlusJson, DeleteProjectResponse422ApplicationProblemPlusJson, DeleteProjectResponse502ApplicationProblemPlusJson, DeleteProjectResponse503ApplicationProblemPlusJson, DeleteProjectResponse504ApplicationProblemPlusJson, DeleteProjectResponses, DeleteProjectResult, DeleteVoiceProfileData, DeleteVoiceProfileError, DeleteVoiceProfileErrors, DeleteVoiceProfileInboundData, DeleteVoiceProfileInboundError, DeleteVoiceProfileInboundErrors, DeleteVoiceProfileInboundResponse200ApplicationJson, DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson, DeleteVoiceProfileInboundResponses, DeleteVoiceProfileInboundResult, DeleteVoiceProfileOutboundData, DeleteVoiceProfileOutboundError, DeleteVoiceProfileOutboundErrors, DeleteVoiceProfileOutboundResponse200ApplicationJson, DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson, DeleteVoiceProfileOutboundResponses, DeleteVoiceProfileOutboundResult, DeleteVoiceProfileResponse403ApplicationProblemPlusJson, DeleteVoiceProfileResponse404ApplicationProblemPlusJson, DeleteVoiceProfileResponse409ApplicationProblemPlusJson, DeleteVoiceProfileResponse422ApplicationProblemPlusJson, DeleteVoiceProfileResponse429ApplicationProblemPlusJson, DeleteVoiceProfileResponse500ApplicationProblemPlusJson, DeleteVoiceProfileResponse502ApplicationProblemPlusJson, DeleteVoiceProfileResponse503ApplicationProblemPlusJson, DeleteVoiceProfileResponse504ApplicationProblemPlusJson, DeleteVoiceProfileResponses, DeleteVoiceProfileResult, DeleteWebhookDestinationData, DeleteWebhookDestinationError, DeleteWebhookDestinationErrors, DeleteWebhookDestinationResponse200ApplicationJson, DeleteWebhookDestinationResponse403ApplicationProblemPlusJson, DeleteWebhookDestinationResponse404ApplicationProblemPlusJson, DeleteWebhookDestinationResponse502ApplicationProblemPlusJson, DeleteWebhookDestinationResponse503ApplicationProblemPlusJson, DeleteWebhookDestinationResponse504ApplicationProblemPlusJson, DeleteWebhookDestinationResponses, DeleteWebhookDestinationResult, DeviceAuthorizeData, DeviceAuthorizeErrors, DeviceAuthorizeResponse200ApplicationJson, DeviceAuthorizeResponses, DeviceAuthorizeResult, DeviceTokenData, DeviceTokenError, DeviceTokenErrors, DeviceTokenRequestApplicationForm, DeviceTokenRequestApplicationJson, DeviceTokenResponse200ApplicationJson, DeviceTokenResponse400ApplicationJson, DeviceTokenResponses, DeviceTokenResult, DisconnectWhatsappBusinessAccountData, DisconnectWhatsappBusinessAccountError, DisconnectWhatsappBusinessAccountErrors, DisconnectWhatsappBusinessAccountResponse200ApplicationJson, DisconnectWhatsappBusinessAccountResponse202ApplicationJson, DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, DisconnectWhatsappBusinessAccountResponses, DisconnectWhatsappBusinessAccountResult, DownloadAttachmentData, DownloadAttachmentError, DownloadAttachmentErrors, DownloadAttachmentResponse200ApplicationOctetStream, DownloadAttachmentResponse403ApplicationProblemPlusJson, DownloadAttachmentResponse404ApplicationProblemPlusJson, DownloadAttachmentResponse409ApplicationProblemPlusJson, DownloadAttachmentResponse422ApplicationProblemPlusJson, DownloadAttachmentResponse500ApplicationProblemPlusJson, DownloadAttachmentResponse502ApplicationProblemPlusJson, DownloadAttachmentResponse503ApplicationProblemPlusJson, DownloadAttachmentResponse504ApplicationProblemPlusJson, DownloadAttachmentResponses, DownloadAttachmentResult, GetAccountData, GetAccountError, GetAccountErrors, GetAccountResponse200ApplicationJson, GetAccountResponse403ApplicationProblemPlusJson, GetAccountResponse404ApplicationProblemPlusJson, GetAccountResponse410ApplicationProblemPlusJson, GetAccountResponse500ApplicationProblemPlusJson, GetAccountResponse502ApplicationProblemPlusJson, GetAccountResponse503ApplicationProblemPlusJson, GetAccountResponse504ApplicationProblemPlusJson, GetAccountResponses, GetAccountResult, GetAgentProfileData, GetAgentProfileError, GetAgentProfileErrors, GetAgentProfileResponse200ApplicationJson, GetAgentProfileResponse403ApplicationProblemPlusJson, GetAgentProfileResponse404ApplicationProblemPlusJson, GetAgentProfileResponse410ApplicationProblemPlusJson, GetAgentProfileResponse422ApplicationProblemPlusJson, GetAgentProfileResponse502ApplicationProblemPlusJson, GetAgentProfileResponse503ApplicationProblemPlusJson, GetAgentProfileResponse504ApplicationProblemPlusJson, GetAgentProfileResponses, GetAgentProfileResult, GetAttachmentData, GetAttachmentError, GetAttachmentErrors, GetAttachmentResponse200ApplicationJson, GetAttachmentResponse403ApplicationProblemPlusJson, GetAttachmentResponse404ApplicationProblemPlusJson, GetAttachmentResponse422ApplicationProblemPlusJson, GetAttachmentResponse500ApplicationProblemPlusJson, GetAttachmentResponse502ApplicationProblemPlusJson, GetAttachmentResponse503ApplicationProblemPlusJson, GetAttachmentResponse504ApplicationProblemPlusJson, GetAttachmentResponses, GetAttachmentResult, GetBillingOperationData, GetBillingOperationError, GetBillingOperationErrors, GetBillingOperationResponse200ApplicationJson, GetBillingOperationResponse400ApplicationProblemPlusJson, GetBillingOperationResponse403ApplicationProblemPlusJson, GetBillingOperationResponse404ApplicationProblemPlusJson, GetBillingOperationResponse409ApplicationProblemPlusJson, GetBillingOperationResponse422ApplicationProblemPlusJson, GetBillingOperationResponse500ApplicationProblemPlusJson, GetBillingOperationResponse502ApplicationProblemPlusJson, GetBillingOperationResponse503ApplicationProblemPlusJson, GetBillingOperationResponse504ApplicationProblemPlusJson, GetBillingOperationResponses, GetBillingOperationResult, GetBillingOverviewData, GetBillingOverviewError, GetBillingOverviewErrors, GetBillingOverviewResponse200ApplicationJson, GetBillingOverviewResponse400ApplicationProblemPlusJson, GetBillingOverviewResponse403ApplicationProblemPlusJson, GetBillingOverviewResponse409ApplicationProblemPlusJson, GetBillingOverviewResponse422ApplicationProblemPlusJson, GetBillingOverviewResponse500ApplicationProblemPlusJson, GetBillingOverviewResponse502ApplicationProblemPlusJson, GetBillingOverviewResponse503ApplicationProblemPlusJson, GetBillingOverviewResponse504ApplicationProblemPlusJson, GetBillingOverviewResponses, GetBillingOverviewResult, GetDefaultVoiceProfileData, GetDefaultVoiceProfileError, GetDefaultVoiceProfileErrors, GetDefaultVoiceProfileResponse200ApplicationJson, GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson, GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson, GetDefaultVoiceProfileResponses, GetDefaultVoiceProfileResult, GetMessageMetricsBackfillData, GetMessageMetricsBackfillError, GetMessageMetricsBackfillErrors, GetMessageMetricsBackfillResponse200ApplicationJson, GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson, GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson, GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson, GetMessageMetricsBackfillResponses, GetMessageMetricsBackfillResult, GetMessageMetricsSqlSchemaData, GetMessageMetricsSqlSchemaError, GetMessageMetricsSqlSchemaErrors, GetMessageMetricsSqlSchemaResponse200ApplicationJson, GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson, GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson, GetMessageMetricsSqlSchemaResponses, GetMessageMetricsSqlSchemaResult, GetOperationData, GetOperationError, GetOperationErrors, GetOperationResponse200ApplicationJson, GetOperationResponse403ApplicationProblemPlusJson, GetOperationResponse404ApplicationProblemPlusJson, GetOperationResponse422ApplicationProblemPlusJson, GetOperationResponse429ApplicationProblemPlusJson, GetOperationResponse500ApplicationProblemPlusJson, GetOperationResponse502ApplicationProblemPlusJson, GetOperationResponse503ApplicationProblemPlusJson, GetOperationResponse504ApplicationProblemPlusJson, GetOperationResponses, GetOperationResult, GetOrganizationBillingOverviewData, GetOrganizationBillingOverviewError, GetOrganizationBillingOverviewErrors, GetOrganizationBillingOverviewResponse200ApplicationJson, GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson, GetOrganizationBillingOverviewResponses, GetOrganizationBillingOverviewResult, GetOrganizationConnectionStatusData, GetOrganizationConnectionStatusError, GetOrganizationConnectionStatusErrors, GetOrganizationConnectionStatusResponse200ApplicationJson, GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson, GetOrganizationConnectionStatusResponses, GetOrganizationConnectionStatusResult, GetOrganizationPaymentMethodData, GetOrganizationPaymentMethodError, GetOrganizationPaymentMethodErrors, GetOrganizationPaymentMethodResponse200ApplicationJson, GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson, GetOrganizationPaymentMethodResponses, GetOrganizationPaymentMethodResult, GetOrganizationSsoConfigurationData, GetOrganizationSsoConfigurationError, GetOrganizationSsoConfigurationErrors, GetOrganizationSsoConfigurationResponse200ApplicationJson, GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson, GetOrganizationSsoConfigurationResponses, GetOrganizationSsoConfigurationResult, GetProjectClosureStatusData, GetProjectClosureStatusError, GetProjectClosureStatusErrors, GetProjectClosureStatusResponse200ApplicationJson, GetProjectClosureStatusResponse400ApplicationProblemPlusJson, GetProjectClosureStatusResponse403ApplicationProblemPlusJson, GetProjectClosureStatusResponse404ApplicationProblemPlusJson, GetProjectClosureStatusResponse422ApplicationProblemPlusJson, GetProjectClosureStatusResponse502ApplicationProblemPlusJson, GetProjectClosureStatusResponse503ApplicationProblemPlusJson, GetProjectClosureStatusResponse504ApplicationProblemPlusJson, GetProjectClosureStatusResponses, GetProjectClosureStatusResult, GetProjectData, GetProjectError, GetProjectErrors, GetProjectImessagePlatformData, GetProjectImessagePlatformError, GetProjectImessagePlatformErrors, GetProjectImessagePlatformResponse200ApplicationJson, GetProjectImessagePlatformResponse403ApplicationProblemPlusJson, GetProjectImessagePlatformResponse422ApplicationProblemPlusJson, GetProjectImessagePlatformResponse500ApplicationProblemPlusJson, GetProjectImessagePlatformResponse502ApplicationProblemPlusJson, GetProjectImessagePlatformResponse503ApplicationProblemPlusJson, GetProjectImessagePlatformResponse504ApplicationProblemPlusJson, GetProjectImessagePlatformResponses, GetProjectImessagePlatformResult, GetProjectResponse200ApplicationJson, GetProjectResponse403ApplicationProblemPlusJson, GetProjectResponse404ApplicationProblemPlusJson, GetProjectResponse410ApplicationProblemPlusJson, GetProjectResponse422ApplicationProblemPlusJson, GetProjectResponse502ApplicationProblemPlusJson, GetProjectResponse503ApplicationProblemPlusJson, GetProjectResponse504ApplicationProblemPlusJson, GetProjectResponses, GetProjectResult, GetProjectWhatsappPlatformData, GetProjectWhatsappPlatformError, GetProjectWhatsappPlatformErrors, GetProjectWhatsappPlatformResponse200ApplicationJson, GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson, GetProjectWhatsappPlatformResponses, GetProjectWhatsappPlatformResult, GetResourceData, GetResourceError, GetResourceErrors, GetResourceResponse200ApplicationJson, GetResourceResponse403ApplicationProblemPlusJson, GetResourceResponse404ApplicationProblemPlusJson, GetResourceResponse422ApplicationProblemPlusJson, GetResourceResponse429ApplicationProblemPlusJson, GetResourceResponse500ApplicationProblemPlusJson, GetResourceResponse502ApplicationProblemPlusJson, GetResourceResponse503ApplicationProblemPlusJson, GetResourceResponse504ApplicationProblemPlusJson, GetResourceResponses, GetResourceResult, GetSharedLineAssignmentData, GetSharedLineAssignmentError, GetSharedLineAssignmentErrors, GetSharedLineAssignmentResponse200ApplicationJson, GetSharedLineAssignmentResponse403ApplicationProblemPlusJson, GetSharedLineAssignmentResponse404ApplicationProblemPlusJson, GetSharedLineAssignmentResponse422ApplicationProblemPlusJson, GetSharedLineAssignmentResponse429ApplicationProblemPlusJson, GetSharedLineAssignmentResponse500ApplicationProblemPlusJson, GetSharedLineAssignmentResponse502ApplicationProblemPlusJson, GetSharedLineAssignmentResponse503ApplicationProblemPlusJson, GetSharedLineAssignmentResponse504ApplicationProblemPlusJson, GetSharedLineAssignmentResponses, GetSharedLineAssignmentResult, GetSmsLineCampaignAssignmentData, GetSmsLineCampaignAssignmentError, GetSmsLineCampaignAssignmentErrors, GetSmsLineCampaignAssignmentResponse200ApplicationJson, GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson, GetSmsLineCampaignAssignmentResponses, GetSmsLineCampaignAssignmentResult, GetVoiceLineProfileAssignmentData, GetVoiceLineProfileAssignmentError, GetVoiceLineProfileAssignmentErrors, GetVoiceLineProfileAssignmentResponse200ApplicationJson, GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson, GetVoiceLineProfileAssignmentResponses, GetVoiceLineProfileAssignmentResult, GetVoiceProfileData, GetVoiceProfileError, GetVoiceProfileErrors, GetVoiceProfileResponse200ApplicationJson, GetVoiceProfileResponse403ApplicationProblemPlusJson, GetVoiceProfileResponse404ApplicationProblemPlusJson, GetVoiceProfileResponse422ApplicationProblemPlusJson, GetVoiceProfileResponse429ApplicationProblemPlusJson, GetVoiceProfileResponse500ApplicationProblemPlusJson, GetVoiceProfileResponse502ApplicationProblemPlusJson, GetVoiceProfileResponse503ApplicationProblemPlusJson, GetVoiceProfileResponse504ApplicationProblemPlusJson, GetVoiceProfileResponses, GetVoiceProfileResult, GetWebhookDestinationData, GetWebhookDestinationError, GetWebhookDestinationErrors, GetWebhookDestinationResponse200ApplicationJson, GetWebhookDestinationResponse403ApplicationProblemPlusJson, GetWebhookDestinationResponse404ApplicationProblemPlusJson, GetWebhookDestinationResponse410ApplicationProblemPlusJson, GetWebhookDestinationResponse502ApplicationProblemPlusJson, GetWebhookDestinationResponse503ApplicationProblemPlusJson, GetWebhookDestinationResponse504ApplicationProblemPlusJson, GetWebhookDestinationResponses, GetWebhookDestinationResult, GetWebhookEventSchemaData, GetWebhookEventSchemaError, GetWebhookEventSchemaErrors, GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson, GetWebhookEventSchemaResponse400ApplicationProblemPlusJson, GetWebhookEventSchemaResponse403ApplicationProblemPlusJson, GetWebhookEventSchemaResponse502ApplicationProblemPlusJson, GetWebhookEventSchemaResponse503ApplicationProblemPlusJson, GetWebhookEventSchemaResponse504ApplicationProblemPlusJson, GetWebhookEventSchemaResponses, GetWebhookEventSchemaResult, GetWhatsappBusinessAccountData, GetWhatsappBusinessAccountError, GetWhatsappBusinessAccountErrors, GetWhatsappBusinessAccountResponse200ApplicationJson, GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson, GetWhatsappBusinessAccountResponses, GetWhatsappBusinessAccountResult, GetWhatsappBusinessVerificationCodeData, GetWhatsappBusinessVerificationCodeError, GetWhatsappBusinessVerificationCodeErrors, GetWhatsappBusinessVerificationCodeResponse200ApplicationJson, GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson, GetWhatsappBusinessVerificationCodeResponses, GetWhatsappBusinessVerificationCodeResult, GetWhatsappSharedLineAssignmentData, GetWhatsappSharedLineAssignmentError, GetWhatsappSharedLineAssignmentErrors, GetWhatsappSharedLineAssignmentResponse200ApplicationJson, GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, GetWhatsappSharedLineAssignmentResponses, GetWhatsappSharedLineAssignmentResult, GetWhatsappSignupConfigData, GetWhatsappSignupConfigError, GetWhatsappSignupConfigErrors, GetWhatsappSignupConfigResponse200ApplicationJson, GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson, GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson, GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson, GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson, GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson, GetWhatsappSignupConfigResponses, GetWhatsappSignupConfigResult, ListAccountServiceKeysData, ListAccountServiceKeysError, ListAccountServiceKeysErrors, ListAccountServiceKeysResponse200ApplicationJson, ListAccountServiceKeysResponse403ApplicationProblemPlusJson, ListAccountServiceKeysResponse404ApplicationProblemPlusJson, ListAccountServiceKeysResponse410ApplicationProblemPlusJson, ListAccountServiceKeysResponse500ApplicationProblemPlusJson, ListAccountServiceKeysResponse502ApplicationProblemPlusJson, ListAccountServiceKeysResponse503ApplicationProblemPlusJson, ListAccountServiceKeysResponse504ApplicationProblemPlusJson, ListAccountServiceKeysResponses, ListAccountServiceKeysResult, ListAttachmentsData, ListAttachmentsError, ListAttachmentsErrors, ListAttachmentsResponse200ApplicationJson, ListAttachmentsResponse403ApplicationProblemPlusJson, ListAttachmentsResponse422ApplicationProblemPlusJson, ListAttachmentsResponse500ApplicationProblemPlusJson, ListAttachmentsResponse502ApplicationProblemPlusJson, ListAttachmentsResponse503ApplicationProblemPlusJson, ListAttachmentsResponse504ApplicationProblemPlusJson, ListAttachmentsResponses, ListAttachmentsResult, ListAuthorizedApplicationsData, ListAuthorizedApplicationsError, ListAuthorizedApplicationsErrors, ListAuthorizedApplicationsResponse200ApplicationJson, ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson, ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson, ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson, ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson, ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson, ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson, ListAuthorizedApplicationsResponses, ListAuthorizedApplicationsResult, ListBillingPlansData, ListBillingPlansError, ListBillingPlansErrors, ListBillingPlansResponse200ApplicationJson, ListBillingPlansResponse400ApplicationProblemPlusJson, ListBillingPlansResponse403ApplicationProblemPlusJson, ListBillingPlansResponse409ApplicationProblemPlusJson, ListBillingPlansResponse422ApplicationProblemPlusJson, ListBillingPlansResponse500ApplicationProblemPlusJson, ListBillingPlansResponse502ApplicationProblemPlusJson, ListBillingPlansResponse503ApplicationProblemPlusJson, ListBillingPlansResponse504ApplicationProblemPlusJson, ListBillingPlansResponses, ListBillingPlansResult, ListInvoicesData, ListInvoicesError, ListInvoicesErrors, ListInvoicesResponse200ApplicationJson, ListInvoicesResponse400ApplicationProblemPlusJson, ListInvoicesResponse403ApplicationProblemPlusJson, ListInvoicesResponse409ApplicationProblemPlusJson, ListInvoicesResponse422ApplicationProblemPlusJson, ListInvoicesResponse500ApplicationProblemPlusJson, ListInvoicesResponse502ApplicationProblemPlusJson, ListInvoicesResponse503ApplicationProblemPlusJson, ListInvoicesResponse504ApplicationProblemPlusJson, ListInvoicesResponses, ListInvoicesResult, ListNumberAreaCodesData, ListNumberAreaCodesError, ListNumberAreaCodesErrors, ListNumberAreaCodesResponse200ApplicationJson, ListNumberAreaCodesResponse403ApplicationProblemPlusJson, ListNumberAreaCodesResponse422ApplicationProblemPlusJson, ListNumberAreaCodesResponse429ApplicationProblemPlusJson, ListNumberAreaCodesResponse500ApplicationProblemPlusJson, ListNumberAreaCodesResponse502ApplicationProblemPlusJson, ListNumberAreaCodesResponse503ApplicationProblemPlusJson, ListNumberAreaCodesResponse504ApplicationProblemPlusJson, ListNumberAreaCodesResponses, ListNumberAreaCodesResult, ListNumberCountriesData, ListNumberCountriesError, ListNumberCountriesErrors, ListNumberCountriesResponse200ApplicationJson, ListNumberCountriesResponse403ApplicationProblemPlusJson, ListNumberCountriesResponse422ApplicationProblemPlusJson, ListNumberCountriesResponse429ApplicationProblemPlusJson, ListNumberCountriesResponse500ApplicationProblemPlusJson, ListNumberCountriesResponse502ApplicationProblemPlusJson, ListNumberCountriesResponse503ApplicationProblemPlusJson, ListNumberCountriesResponse504ApplicationProblemPlusJson, ListNumberCountriesResponses, ListNumberCountriesResult, ListOauthScopesData, ListOauthScopesError, ListOauthScopesErrors, ListOauthScopesResponse200ApplicationJson, ListOauthScopesResponse503ApplicationProblemPlusJson, ListOauthScopesResponse504ApplicationProblemPlusJson, ListOauthScopesResponses, ListOauthScopesResult, ListOperationsData, ListOperationsError, ListOperationsErrors, ListOperationsResponse200ApplicationJson, ListOperationsResponse403ApplicationProblemPlusJson, ListOperationsResponse422ApplicationProblemPlusJson, ListOperationsResponse429ApplicationProblemPlusJson, ListOperationsResponse500ApplicationProblemPlusJson, ListOperationsResponse502ApplicationProblemPlusJson, ListOperationsResponse503ApplicationProblemPlusJson, ListOperationsResponse504ApplicationProblemPlusJson, ListOperationsResponses, ListOperationsResult, ListProjectApiKeysData, ListProjectApiKeysError, ListProjectApiKeysErrors, ListProjectApiKeysResponse200ApplicationJson, ListProjectApiKeysResponse400ApplicationProblemPlusJson, ListProjectApiKeysResponse403ApplicationProblemPlusJson, ListProjectApiKeysResponse404ApplicationProblemPlusJson, ListProjectApiKeysResponse410ApplicationProblemPlusJson, ListProjectApiKeysResponse422ApplicationProblemPlusJson, ListProjectApiKeysResponse502ApplicationProblemPlusJson, ListProjectApiKeysResponse504ApplicationProblemPlusJson, ListProjectApiKeysResponses, ListProjectApiKeysResult, ListProjectPlatformsData, ListProjectPlatformsError, ListProjectPlatformsErrors, ListProjectPlatformsResponse200ApplicationJson, ListProjectPlatformsResponse403ApplicationProblemPlusJson, ListProjectPlatformsResponse422ApplicationProblemPlusJson, ListProjectPlatformsResponse500ApplicationProblemPlusJson, ListProjectPlatformsResponse504ApplicationProblemPlusJson, ListProjectPlatformsResponses, ListProjectPlatformsResult, ListProjectsData, ListProjectsError, ListProjectsErrors, ListProjectsResponse200ApplicationJson, ListProjectsResponse400ApplicationProblemPlusJson, ListProjectsResponse403ApplicationProblemPlusJson, ListProjectsResponse422ApplicationProblemPlusJson, ListProjectsResponse502ApplicationProblemPlusJson, ListProjectsResponse503ApplicationProblemPlusJson, ListProjectsResponse504ApplicationProblemPlusJson, ListProjectsResponses, ListProjectsResult, ListResourcesData, ListResourcesError, ListResourcesErrors, ListResourcesResponse200ApplicationJson, ListResourcesResponse403ApplicationProblemPlusJson, ListResourcesResponse422ApplicationProblemPlusJson, ListResourcesResponse429ApplicationProblemPlusJson, ListResourcesResponse500ApplicationProblemPlusJson, ListResourcesResponse502ApplicationProblemPlusJson, ListResourcesResponse503ApplicationProblemPlusJson, ListResourcesResponse504ApplicationProblemPlusJson, ListResourcesResponses, ListResourcesResult, ListSharedLineAssignmentsData, ListSharedLineAssignmentsError, ListSharedLineAssignmentsErrors, ListSharedLineAssignmentsResponse200ApplicationJson, ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson, ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson, ListSharedLineAssignmentsResponses, ListSharedLineAssignmentsResult, ListVoiceProfilesData, ListVoiceProfilesError, ListVoiceProfilesErrors, ListVoiceProfilesResponse200ApplicationJson, ListVoiceProfilesResponse403ApplicationProblemPlusJson, ListVoiceProfilesResponse422ApplicationProblemPlusJson, ListVoiceProfilesResponse429ApplicationProblemPlusJson, ListVoiceProfilesResponse500ApplicationProblemPlusJson, ListVoiceProfilesResponse502ApplicationProblemPlusJson, ListVoiceProfilesResponse503ApplicationProblemPlusJson, ListVoiceProfilesResponse504ApplicationProblemPlusJson, ListVoiceProfilesResponses, ListVoiceProfilesResult, ListWebhookApiVersionsData, ListWebhookApiVersionsError, ListWebhookApiVersionsErrors, ListWebhookApiVersionsResponse200ApplicationJson, ListWebhookApiVersionsResponse403ApplicationProblemPlusJson, ListWebhookApiVersionsResponse502ApplicationProblemPlusJson, ListWebhookApiVersionsResponse503ApplicationProblemPlusJson, ListWebhookApiVersionsResponse504ApplicationProblemPlusJson, ListWebhookApiVersionsResponses, ListWebhookApiVersionsResult, ListWebhookDestinationsData, ListWebhookDestinationsError, ListWebhookDestinationsErrors, ListWebhookDestinationsResponse200ApplicationJson, ListWebhookDestinationsResponse400ApplicationProblemPlusJson, ListWebhookDestinationsResponse403ApplicationProblemPlusJson, ListWebhookDestinationsResponse502ApplicationProblemPlusJson, ListWebhookDestinationsResponse503ApplicationProblemPlusJson, ListWebhookDestinationsResponse504ApplicationProblemPlusJson, ListWebhookDestinationsResponses, ListWebhookDestinationsResult, ListWebhookEgressAddressesData, ListWebhookEgressAddressesError, ListWebhookEgressAddressesErrors, ListWebhookEgressAddressesResponse200ApplicationJson, ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson, ListWebhookEgressAddressesResponses, ListWebhookEgressAddressesResult, ListWebhookEventTypesData, ListWebhookEventTypesError, ListWebhookEventTypesErrors, ListWebhookEventTypesResponse200ApplicationJson, ListWebhookEventTypesResponse400ApplicationProblemPlusJson, ListWebhookEventTypesResponse403ApplicationProblemPlusJson, ListWebhookEventTypesResponse502ApplicationProblemPlusJson, ListWebhookEventTypesResponse503ApplicationProblemPlusJson, ListWebhookEventTypesResponse504ApplicationProblemPlusJson, ListWebhookEventTypesResponses, ListWebhookEventTypesResult, ListWhatsappAccountPhoneNumbersData, ListWhatsappAccountPhoneNumbersError, ListWhatsappAccountPhoneNumbersErrors, ListWhatsappAccountPhoneNumbersResponse200ApplicationJson, ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson, ListWhatsappAccountPhoneNumbersResponses, ListWhatsappAccountPhoneNumbersResult, ListWhatsappSharedLineAssignmentsData, ListWhatsappSharedLineAssignmentsError, ListWhatsappSharedLineAssignmentsErrors, ListWhatsappSharedLineAssignmentsResponse200ApplicationJson, ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson, ListWhatsappSharedLineAssignmentsResponses, ListWhatsappSharedLineAssignmentsResult, PhotonProblem_FORBIDDEN_403, PhotonProblem_INTERNAL_ERROR_500, PhotonProblem_NOT_AUTHENTICATED_401, PhotonProblem_UPSTREAM_UNAVAILABLE_503, ProvisionImessageDedicatedLineData, ProvisionImessageDedicatedLineError, ProvisionImessageDedicatedLineErrors, ProvisionImessageDedicatedLineResponse202ApplicationJson, ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson, ProvisionImessageDedicatedLineResponses, ProvisionImessageDedicatedLineResult, ProvisionWhatsappDedicatedLineData, ProvisionWhatsappDedicatedLineError, ProvisionWhatsappDedicatedLineErrors, ProvisionWhatsappDedicatedLineResponse202ApplicationJson, ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, ProvisionWhatsappDedicatedLineResponses, ProvisionWhatsappDedicatedLineResult, PurchaseSmsNumberData, PurchaseSmsNumberError, PurchaseSmsNumberErrors, PurchaseSmsNumberRequestApplicationJson, PurchaseSmsNumberResponse202ApplicationJson, PurchaseSmsNumberResponse400ApplicationProblemPlusJson, PurchaseSmsNumberResponse402ApplicationProblemPlusJson, PurchaseSmsNumberResponse403ApplicationProblemPlusJson, PurchaseSmsNumberResponse409ApplicationProblemPlusJson, PurchaseSmsNumberResponse422ApplicationProblemPlusJson, PurchaseSmsNumberResponse429ApplicationProblemPlusJson, PurchaseSmsNumberResponse500ApplicationProblemPlusJson, PurchaseSmsNumberResponse502ApplicationProblemPlusJson, PurchaseSmsNumberResponse503ApplicationProblemPlusJson, PurchaseSmsNumberResponse504ApplicationProblemPlusJson, PurchaseSmsNumberResponses, PurchaseSmsNumberResult, QueryMessageMetricsData, QueryMessageMetricsError, QueryMessageMetricsErrors, QueryMessageMetricsResponse200ApplicationJson, QueryMessageMetricsResponse400ApplicationProblemPlusJson, QueryMessageMetricsResponse403ApplicationProblemPlusJson, QueryMessageMetricsResponse422ApplicationProblemPlusJson, QueryMessageMetricsResponse502ApplicationProblemPlusJson, QueryMessageMetricsResponse503ApplicationProblemPlusJson, QueryMessageMetricsResponse504ApplicationProblemPlusJson, QueryMessageMetricsResponses, QueryMessageMetricsResult, RedeemAppInstallationDeliveryData, RedeemAppInstallationDeliveryError, RedeemAppInstallationDeliveryErrors, RedeemAppInstallationDeliveryRequestApplicationJson, RedeemAppInstallationDeliveryResponse200ApplicationJson, RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson, RedeemAppInstallationDeliveryResponses, RedeemAppInstallationDeliveryResult, RefreshOrganizationSsoConnectionData, RefreshOrganizationSsoConnectionError, RefreshOrganizationSsoConnectionErrors, RefreshOrganizationSsoConnectionResponse200ApplicationJson, RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson, RefreshOrganizationSsoConnectionResponses, RefreshOrganizationSsoConnectionResult, ReleaseImessageDedicatedLineData, ReleaseImessageDedicatedLineError, ReleaseImessageDedicatedLineErrors, ReleaseImessageDedicatedLineResponse200ApplicationJson, ReleaseImessageDedicatedLineResponse202ApplicationJson, ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson, ReleaseImessageDedicatedLineResponses, ReleaseImessageDedicatedLineResult, ReleaseResourceData, ReleaseResourceError, ReleaseResourceErrors, ReleaseResourceResponse200ApplicationJson, ReleaseResourceResponse202ApplicationJson, ReleaseResourceResponse403ApplicationProblemPlusJson, ReleaseResourceResponse404ApplicationProblemPlusJson, ReleaseResourceResponse409ApplicationProblemPlusJson, ReleaseResourceResponse422ApplicationProblemPlusJson, ReleaseResourceResponse429ApplicationProblemPlusJson, ReleaseResourceResponse500ApplicationProblemPlusJson, ReleaseResourceResponse502ApplicationProblemPlusJson, ReleaseResourceResponse503ApplicationProblemPlusJson, ReleaseResourceResponse504ApplicationProblemPlusJson, ReleaseResourceResponses, ReleaseResourceResult, ReleaseSharedLineAssignmentData, ReleaseSharedLineAssignmentError, ReleaseSharedLineAssignmentErrors, ReleaseSharedLineAssignmentResponse200ApplicationJson, ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson, ReleaseSharedLineAssignmentResponses, ReleaseSharedLineAssignmentResult, ReleaseWhatsappDedicatedLineData, ReleaseWhatsappDedicatedLineError, ReleaseWhatsappDedicatedLineErrors, ReleaseWhatsappDedicatedLineResponse200ApplicationJson, ReleaseWhatsappDedicatedLineResponse202ApplicationJson, ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson, ReleaseWhatsappDedicatedLineResponses, ReleaseWhatsappDedicatedLineResult, ReleaseWhatsappSharedLineAssignmentData, ReleaseWhatsappSharedLineAssignmentError, ReleaseWhatsappSharedLineAssignmentErrors, ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson, ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson, ReleaseWhatsappSharedLineAssignmentResponses, ReleaseWhatsappSharedLineAssignmentResult, ReplaceVoiceProfileInboundData, ReplaceVoiceProfileInboundError, ReplaceVoiceProfileInboundErrors, ReplaceVoiceProfileInboundRequestApplicationJson, ReplaceVoiceProfileInboundResponse200ApplicationJson, ReplaceVoiceProfileInboundResponse201ApplicationJson, ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson, ReplaceVoiceProfileInboundResponses, ReplaceVoiceProfileInboundResult, ResetAccountProfilePictureData, ResetAccountProfilePictureError, ResetAccountProfilePictureErrors, ResetAccountProfilePictureResponse200ApplicationJson, ResetAccountProfilePictureResponse400ApplicationProblemPlusJson, ResetAccountProfilePictureResponse403ApplicationProblemPlusJson, ResetAccountProfilePictureResponse404ApplicationProblemPlusJson, ResetAccountProfilePictureResponse410ApplicationProblemPlusJson, ResetAccountProfilePictureResponse413ApplicationProblemPlusJson, ResetAccountProfilePictureResponse422ApplicationProblemPlusJson, ResetAccountProfilePictureResponse500ApplicationProblemPlusJson, ResetAccountProfilePictureResponse502ApplicationProblemPlusJson, ResetAccountProfilePictureResponse503ApplicationProblemPlusJson, ResetAccountProfilePictureResponse504ApplicationProblemPlusJson, ResetAccountProfilePictureResponses, ResetAccountProfilePictureResult, ResetAgentProfileAvatarData, ResetAgentProfileAvatarError, ResetAgentProfileAvatarErrors, ResetAgentProfileAvatarResponse200ApplicationJson, ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson, ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson, ResetAgentProfileAvatarResponses, ResetAgentProfileAvatarResult, ResumeSubscriptionData, ResumeSubscriptionError, ResumeSubscriptionErrors, ResumeSubscriptionRequestApplicationJson, ResumeSubscriptionResponse200ApplicationJson, ResumeSubscriptionResponse400ApplicationProblemPlusJson, ResumeSubscriptionResponse403ApplicationProblemPlusJson, ResumeSubscriptionResponse409ApplicationProblemPlusJson, ResumeSubscriptionResponse422ApplicationProblemPlusJson, ResumeSubscriptionResponse500ApplicationProblemPlusJson, ResumeSubscriptionResponse502ApplicationProblemPlusJson, ResumeSubscriptionResponse503ApplicationProblemPlusJson, ResumeSubscriptionResponse504ApplicationProblemPlusJson, ResumeSubscriptionResponses, ResumeSubscriptionResult, RetryOrganizationConnectionSyncData, RetryOrganizationConnectionSyncError, RetryOrganizationConnectionSyncErrors, RetryOrganizationConnectionSyncResponse200ApplicationJson, RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson, RetryOrganizationConnectionSyncResponses, RetryOrganizationConnectionSyncResult, RevokeAccountServiceKeyData, RevokeAccountServiceKeyError, RevokeAccountServiceKeyErrors, RevokeAccountServiceKeyResponse200ApplicationJson, RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson, RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson, RevokeAccountServiceKeyResponses, RevokeAccountServiceKeyResult, RevokeAuthorizedApplicationData, RevokeAuthorizedApplicationError, RevokeAuthorizedApplicationErrors, RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson, RevokeAuthorizedApplicationResponses, RevokeAuthorizedApplicationResult, RevokeProjectApiKeyData, RevokeProjectApiKeyError, RevokeProjectApiKeyErrors, RevokeProjectApiKeyResponse200ApplicationJson, RevokeProjectApiKeyResponse400ApplicationProblemPlusJson, RevokeProjectApiKeyResponse403ApplicationProblemPlusJson, RevokeProjectApiKeyResponse404ApplicationProblemPlusJson, RevokeProjectApiKeyResponse410ApplicationProblemPlusJson, RevokeProjectApiKeyResponse422ApplicationProblemPlusJson, RevokeProjectApiKeyResponse502ApplicationProblemPlusJson, RevokeProjectApiKeyResponse504ApplicationProblemPlusJson, RevokeProjectApiKeyResponses, RevokeProjectApiKeyResult, RotateVoiceProfileOutboundCredentialData, RotateVoiceProfileOutboundCredentialError, RotateVoiceProfileOutboundCredentialErrors, RotateVoiceProfileOutboundCredentialRequestApplicationJson, RotateVoiceProfileOutboundCredentialResponse200ApplicationJson, RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson, RotateVoiceProfileOutboundCredentialResponses, RotateVoiceProfileOutboundCredentialResult, RotateWebhookSigningSecretData, RotateWebhookSigningSecretError, RotateWebhookSigningSecretErrors, RotateWebhookSigningSecretRequestApplicationJson, RotateWebhookSigningSecretResponse200ApplicationJson, RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson, RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson, RotateWebhookSigningSecretResponses, RotateWebhookSigningSecretResult, StartAccountPhoneVerificationData, StartAccountPhoneVerificationError, StartAccountPhoneVerificationErrors, StartAccountPhoneVerificationRequestApplicationJson, StartAccountPhoneVerificationResponse201ApplicationJson, StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson, StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson, StartAccountPhoneVerificationResponses, StartAccountPhoneVerificationResult, StartEnterpriseLoginData, StartEnterpriseLoginError, StartEnterpriseLoginErrors, StartEnterpriseLoginRequestApplicationJson, StartEnterpriseLoginResponse200ApplicationJson, StartEnterpriseLoginResponse400ApplicationProblemPlusJson, StartEnterpriseLoginResponses, StartEnterpriseLoginResult, UnassignSmsLineCampaignData, UnassignSmsLineCampaignError, UnassignSmsLineCampaignErrors, UnassignSmsLineCampaignResponse200ApplicationJson, UnassignSmsLineCampaignResponse202ApplicationJson, UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson, UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson, UnassignSmsLineCampaignResponses, UnassignSmsLineCampaignResult, UnassignVoiceLineProfileData, UnassignVoiceLineProfileError, UnassignVoiceLineProfileErrors, UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson, UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson, UnassignVoiceLineProfileResponses, UnassignVoiceLineProfileResult, UpdateAccountData, UpdateAccountError, UpdateAccountErrors, UpdateAccountRequestApplicationJson, UpdateAccountResponse200ApplicationJson, UpdateAccountResponse400ApplicationProblemPlusJson, UpdateAccountResponse403ApplicationProblemPlusJson, UpdateAccountResponse404ApplicationProblemPlusJson, UpdateAccountResponse410ApplicationProblemPlusJson, UpdateAccountResponse413ApplicationProblemPlusJson, UpdateAccountResponse422ApplicationProblemPlusJson, UpdateAccountResponse500ApplicationProblemPlusJson, UpdateAccountResponse502ApplicationProblemPlusJson, UpdateAccountResponse503ApplicationProblemPlusJson, UpdateAccountResponse504ApplicationProblemPlusJson, UpdateAccountResponses, UpdateAccountResult, UpdateAgentProfileData, UpdateAgentProfileError, UpdateAgentProfileErrors, UpdateAgentProfileRequestApplicationJson, UpdateAgentProfileResponse200ApplicationJson, UpdateAgentProfileResponse400ApplicationProblemPlusJson, UpdateAgentProfileResponse403ApplicationProblemPlusJson, UpdateAgentProfileResponse404ApplicationProblemPlusJson, UpdateAgentProfileResponse410ApplicationProblemPlusJson, UpdateAgentProfileResponse413ApplicationProblemPlusJson, UpdateAgentProfileResponse422ApplicationProblemPlusJson, UpdateAgentProfileResponse502ApplicationProblemPlusJson, UpdateAgentProfileResponse503ApplicationProblemPlusJson, UpdateAgentProfileResponse504ApplicationProblemPlusJson, UpdateAgentProfileResponses, UpdateAgentProfileResult, UpdateDefaultVoiceProfileData, UpdateDefaultVoiceProfileError, UpdateDefaultVoiceProfileErrors, UpdateDefaultVoiceProfileRequestApplicationJson, UpdateDefaultVoiceProfileResponse200ApplicationJson, UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson, UpdateDefaultVoiceProfileResponses, UpdateDefaultVoiceProfileResult, UpdateOrganizationSsoPolicyData, UpdateOrganizationSsoPolicyError, UpdateOrganizationSsoPolicyErrors, UpdateOrganizationSsoPolicyRequestApplicationJson, UpdateOrganizationSsoPolicyResponse200ApplicationJson, UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson, UpdateOrganizationSsoPolicyResponses, UpdateOrganizationSsoPolicyResult, UpdateProjectApiKeyData, UpdateProjectApiKeyError, UpdateProjectApiKeyErrors, UpdateProjectApiKeyRequestApplicationJson, UpdateProjectApiKeyResponse200ApplicationJson, UpdateProjectApiKeyResponse400ApplicationProblemPlusJson, UpdateProjectApiKeyResponse403ApplicationProblemPlusJson, UpdateProjectApiKeyResponse404ApplicationProblemPlusJson, UpdateProjectApiKeyResponse409ApplicationProblemPlusJson, UpdateProjectApiKeyResponse410ApplicationProblemPlusJson, UpdateProjectApiKeyResponse413ApplicationProblemPlusJson, UpdateProjectApiKeyResponse422ApplicationProblemPlusJson, UpdateProjectApiKeyResponse502ApplicationProblemPlusJson, UpdateProjectApiKeyResponse504ApplicationProblemPlusJson, UpdateProjectApiKeyResponses, UpdateProjectApiKeyResult, UpdateProjectData, UpdateProjectError, UpdateProjectErrors, UpdateProjectRequestApplicationJson, UpdateProjectResponse200ApplicationJson, UpdateProjectResponse400ApplicationProblemPlusJson, UpdateProjectResponse403ApplicationProblemPlusJson, UpdateProjectResponse404ApplicationProblemPlusJson, UpdateProjectResponse410ApplicationProblemPlusJson, UpdateProjectResponse413ApplicationProblemPlusJson, UpdateProjectResponse422ApplicationProblemPlusJson, UpdateProjectResponse502ApplicationProblemPlusJson, UpdateProjectResponse503ApplicationProblemPlusJson, UpdateProjectResponse504ApplicationProblemPlusJson, UpdateProjectResponses, UpdateProjectResult, UpdateVoiceProfileData, UpdateVoiceProfileError, UpdateVoiceProfileErrors, UpdateVoiceProfileInboundData, UpdateVoiceProfileInboundError, UpdateVoiceProfileInboundErrors, UpdateVoiceProfileInboundRequestApplicationJson, UpdateVoiceProfileInboundResponse200ApplicationJson, UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson, UpdateVoiceProfileInboundResponses, UpdateVoiceProfileInboundResult, UpdateVoiceProfileOutboundAuthenticationData, UpdateVoiceProfileOutboundAuthenticationError, UpdateVoiceProfileOutboundAuthenticationErrors, UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson, UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson, UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson, UpdateVoiceProfileOutboundAuthenticationResponses, UpdateVoiceProfileOutboundAuthenticationResult, UpdateVoiceProfileRequestApplicationJson, UpdateVoiceProfileResponse200ApplicationJson, UpdateVoiceProfileResponse403ApplicationProblemPlusJson, UpdateVoiceProfileResponse404ApplicationProblemPlusJson, UpdateVoiceProfileResponse409ApplicationProblemPlusJson, UpdateVoiceProfileResponse422ApplicationProblemPlusJson, UpdateVoiceProfileResponse429ApplicationProblemPlusJson, UpdateVoiceProfileResponse500ApplicationProblemPlusJson, UpdateVoiceProfileResponse502ApplicationProblemPlusJson, UpdateVoiceProfileResponse503ApplicationProblemPlusJson, UpdateVoiceProfileResponse504ApplicationProblemPlusJson, UpdateVoiceProfileResponses, UpdateVoiceProfileResult, UpdateWebhookDestinationData, UpdateWebhookDestinationError, UpdateWebhookDestinationErrors, UpdateWebhookDestinationRequestApplicationJson, UpdateWebhookDestinationResponse200ApplicationJson, UpdateWebhookDestinationResponse400ApplicationProblemPlusJson, UpdateWebhookDestinationResponse403ApplicationProblemPlusJson, UpdateWebhookDestinationResponse404ApplicationProblemPlusJson, UpdateWebhookDestinationResponse410ApplicationProblemPlusJson, UpdateWebhookDestinationResponse422ApplicationProblemPlusJson, UpdateWebhookDestinationResponse502ApplicationProblemPlusJson, UpdateWebhookDestinationResponse503ApplicationProblemPlusJson, UpdateWebhookDestinationResponse504ApplicationProblemPlusJson, UpdateWebhookDestinationResponses, UpdateWebhookDestinationResult, UploadAttachmentData, UploadAttachmentError, UploadAttachmentErrors, UploadAttachmentRequestMultipartRelated, UploadAttachmentResponse200ApplicationJson, UploadAttachmentResponse201ApplicationJson, UploadAttachmentResponse400ApplicationProblemPlusJson, UploadAttachmentResponse403ApplicationProblemPlusJson, UploadAttachmentResponse409ApplicationProblemPlusJson, UploadAttachmentResponse413ApplicationProblemPlusJson, UploadAttachmentResponse422ApplicationProblemPlusJson, UploadAttachmentResponse500ApplicationProblemPlusJson, UploadAttachmentResponse502ApplicationProblemPlusJson, UploadAttachmentResponse503ApplicationProblemPlusJson, UploadAttachmentResponse504ApplicationProblemPlusJson, UploadAttachmentResponses, UploadAttachmentResult } from './types.gen.js'; +export { assignSmsLineCampaign, assignVoiceLineProfile, batchUpdateVoiceLineProfileAssignments, beginInvitationSso, beginOrganizationAuthentication, beginOrganizationClosureAuthentication, beginOrganizationSsoAdmission, cancelOperation, cancelSubscription, changePlan, checkProjectSlugAvailability, commitAccountProfilePicture, commitAgentProfileAvatar, configureVoiceProfileOutbound, confirmAccountPhoneVerification, connectEmailDomain, connectTelegramBot, connectWhatsappBusiness, countProjects, createAccountProfilePictureUpload, createAccountServiceKey, createAgentProfileAvatarUpload, createAppInstallationRequest, createDefaultVoiceProfile, createOrganizationPaymentMethodCheckout, createOrganizationSetupIntent, createOrganizationSsoPortalLink, createProject, createProjectApiKey, createSharedLineAssignment, createVoiceProfile, createWebhookDestination, createWhatsappSharedLineAssignment, createWhatsappVoipSender, deleteAccount, deleteProject, deleteVoiceProfile, deleteVoiceProfileInbound, deleteVoiceProfileOutbound, deleteWebhookDestination, deviceAuthorize, deviceToken, disableOrganizationSso, disconnectWhatsappBusinessAccount, downloadAttachment, getAccount, getAgentProfile, getAttachment, getBillingOperation, getBillingOverview, getDefaultVoiceProfile, getMessageMetricsBackfill, getMessageMetricsSqlSchema, getOperation, getOrganizationBillingOverview, getOrganizationConnectionStatus, getOrganizationPaymentMethod, getOrganizationSsoConfiguration, getProject, getProjectClosureStatus, getProjectImessagePlatform, getProjectWhatsappPlatform, getResource, getSharedLineAssignment, getSmsLineCampaignAssignment, getVoiceLineProfileAssignment, getVoiceProfile, getWebhookDestination, getWebhookEventSchema, getWhatsappBusinessAccount, getWhatsappBusinessVerificationCode, getWhatsappSharedLineAssignment, getWhatsappSignupConfig, listAccountServiceKeys, listAttachments, listAuthorizedApplications, listBillingPlans, listInvoices, listNumberAreaCodes, listNumberCountries, listOauthScopes, listOperations, listProjectApiKeys, listProjectPlatforms, listProjects, listResources, listSharedLineAssignments, listVoiceProfiles, listWebhookApiVersions, listWebhookDestinations, listWebhookEgressAddresses, listWebhookEventTypes, listWhatsappAccountPhoneNumbers, listWhatsappSharedLineAssignments, type Options, provisionImessageDedicatedLine, provisionWhatsappDedicatedLine, purchaseSmsNumber, queryMessageMetrics, redeemAppInstallationDelivery, refreshOrganizationSsoConnection, releaseImessageDedicatedLine, releaseResource, releaseSharedLineAssignment, releaseWhatsappDedicatedLine, releaseWhatsappSharedLineAssignment, replaceVoiceProfileInbound, resetAccountProfilePicture, resetAgentProfileAvatar, resumeSubscription, retryOrganizationConnectionSync, revokeAccountServiceKey, revokeAuthorizedApplication, revokeProjectApiKey, rotateVoiceProfileOutboundCredential, rotateWebhookSigningSecret, startAccountPhoneVerification, startEnterpriseLogin, unassignSmsLineCampaign, unassignVoiceLineProfile, updateAccount, updateAgentProfile, updateDefaultVoiceProfile, updateOrganizationSsoPolicy, updateProject, updateProjectApiKey, updateVoiceProfile, updateVoiceProfileInbound, updateVoiceProfileOutboundAuthentication, updateWebhookDestination, uploadAttachment } from './sdk.gen.js'; +export type { Account, AccountDeletedProblem, AccountNotFoundProblem, AccountOwnsOrganizationsProblem, AccountServiceKey, AccountServiceKeyLimitReachedProblem, AccountServiceKeyNotFoundProblem, AgentProfile, AgentProfileAvatarContentType, AgentProfileAvatarUpload, AgentProfileAvatarUploadFormFields, AllWebhookEvents, ApiKey, ApiKeyLimitReachedProblem, ApiKeyNotFoundProblem, ApiKeyPermission, ApiKeyRevokedProblem, AppInstallationAssertionInvalidProblem, AppInstallationAssertionReplayedProblem, AppInstallationConfigChangedProblem, AppInstallationDeliveryUnavailableProblem, AssignmentExistsProblem, AssignmentNotFoundProblem, AssignSmsLineCampaignBadRequestProblem, AssignSmsLineCampaignConflictProblem, AssignSmsLineCampaignData, AssignSmsLineCampaignError, AssignSmsLineCampaignErrors, AssignSmsLineCampaignForbiddenProblem, AssignSmsLineCampaignGatewayTimeoutProblem, AssignSmsLineCampaignInternalServerErrorProblem, AssignSmsLineCampaignNotFoundProblem, AssignSmsLineCampaignRequest, AssignSmsLineCampaignResponses, AssignSmsLineCampaignResult, AssignSmsLineCampaignServiceUnavailableProblem, AssignVoiceLineProfileConflictProblem, AssignVoiceLineProfileData, AssignVoiceLineProfileError, AssignVoiceLineProfileErrors, AssignVoiceLineProfileForbiddenProblem, AssignVoiceLineProfileGatewayTimeoutProblem, AssignVoiceLineProfileInternalServerErrorProblem, AssignVoiceLineProfileNotFoundProblem, AssignVoiceLineProfileRequest, AssignVoiceLineProfileResponses, AssignVoiceLineProfileResult, Attachment, AttachmentConflictProblem, AttachmentNotFoundProblem, AttachmentNotReadyProblem, AttachmentNotReadyRetryAfter, AttachmentPage, AttachmentUploadNotReadyProblem, AuthorizedApplication, AuthorizedOAuthApplication, AuthorizedOAuthApplicationRedirectUri, AvailableProjectSlug, BatchUpdateVoiceLineProfileAssignmentsConflictProblem, BatchUpdateVoiceLineProfileAssignmentsData, BatchUpdateVoiceLineProfileAssignmentsError, BatchUpdateVoiceLineProfileAssignmentsErrors, BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem, BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem, BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem, BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem, BatchUpdateVoiceLineProfileAssignmentsRequest, BatchUpdateVoiceLineProfileAssignmentsResponse, BatchUpdateVoiceLineProfileAssignmentsResponses, BatchUpdateVoiceLineProfileAssignmentsResult, BeginInvitationSsoBadRequestProblem, BeginInvitationSsoData, BeginInvitationSsoError, BeginInvitationSsoErrors, BeginInvitationSsoForbiddenProblem, BeginInvitationSsoGatewayTimeoutProblem, BeginInvitationSsoInternalServerErrorProblem, BeginInvitationSsoPreconditionFailedProblem, BeginInvitationSsoRequest, BeginInvitationSsoResponses, BeginInvitationSsoResult, BeginOrganizationAuthenticationBadRequestProblem, BeginOrganizationAuthenticationData, BeginOrganizationAuthenticationError, BeginOrganizationAuthenticationErrors, BeginOrganizationAuthenticationForbiddenProblem, BeginOrganizationAuthenticationGatewayTimeoutProblem, BeginOrganizationAuthenticationInternalServerErrorProblem, BeginOrganizationAuthenticationPreconditionFailedProblem, BeginOrganizationAuthenticationResponses, BeginOrganizationAuthenticationResult, BeginOrganizationClosureAuthenticationBadRequestProblem, BeginOrganizationClosureAuthenticationData, BeginOrganizationClosureAuthenticationError, BeginOrganizationClosureAuthenticationErrors, BeginOrganizationClosureAuthenticationForbiddenProblem, BeginOrganizationClosureAuthenticationGatewayTimeoutProblem, BeginOrganizationClosureAuthenticationInternalServerErrorProblem, BeginOrganizationClosureAuthenticationPreconditionFailedProblem, BeginOrganizationClosureAuthenticationResponses, BeginOrganizationClosureAuthenticationResult, BeginOrganizationSsoAdmissionBadRequestProblem, BeginOrganizationSsoAdmissionData, BeginOrganizationSsoAdmissionError, BeginOrganizationSsoAdmissionErrors, BeginOrganizationSsoAdmissionForbiddenProblem, BeginOrganizationSsoAdmissionGatewayTimeoutProblem, BeginOrganizationSsoAdmissionInternalServerErrorProblem, BeginOrganizationSsoAdmissionPreconditionFailedProblem, BeginOrganizationSsoAdmissionResponses, BeginOrganizationSsoAdmissionResult, BillingNotProvisionedProblem, BillingOperation, BillingOperationFailure, BillingOperationFailureCode, BillingOperationFailureDetail, BillingOperationKind, BillingOperationResult, BillingPlan, BillingPlanEntitlement, BillingPlanInterval, CancelOperationData, CancelOperationError, CancelOperationErrors, CancelOperationForbiddenProblem, CancelOperationGatewayTimeoutProblem, CancelOperationInternalServerErrorProblem, CancelOperationResponses, CancelOperationResult, CancelSubscriptionBadRequestProblem, CancelSubscriptionConflictProblem, CancelSubscriptionData, CancelSubscriptionError, CancelSubscriptionErrors, CancelSubscriptionForbiddenProblem, CancelSubscriptionGatewayTimeoutProblem, CancelSubscriptionInternalServerErrorProblem, CancelSubscriptionRequest, CancelSubscriptionResponse, CancelSubscriptionResponses, CancelSubscriptionResult, CancelSubscriptionServiceUnavailableProblem, CancelSubscriptionUnprocessableEntityProblem, CaptchaProvider, CaptchaRequiredProblem, ChangePlanBadRequestProblem, ChangePlanConflictProblem, ChangePlanData, ChangePlanError, ChangePlanErrors, ChangePlanForbiddenProblem, ChangePlanGatewayTimeoutProblem, ChangePlanInternalServerErrorProblem, ChangePlanRequest, ChangePlanResponses, ChangePlanResult, ChangePlanServiceUnavailableProblem, ChangePlanUnprocessableEntityProblem, CheckProjectSlugAvailabilityData, CheckProjectSlugAvailabilityError, CheckProjectSlugAvailabilityErrors, CheckProjectSlugAvailabilityForbiddenProblem, CheckProjectSlugAvailabilityGatewayTimeoutProblem, CheckProjectSlugAvailabilityResponse, CheckProjectSlugAvailabilityResponses, CheckProjectSlugAvailabilityResult, ClickHouseSqlQueryRequest, ClientOptions, CommitAccountProfilePictureBadRequestProblem, CommitAccountProfilePictureData, CommitAccountProfilePictureError, CommitAccountProfilePictureErrors, CommitAccountProfilePictureForbiddenProblem, CommitAccountProfilePictureGatewayTimeoutProblem, CommitAccountProfilePictureInternalServerErrorProblem, CommitAccountProfilePictureRequest, CommitAccountProfilePictureResponses, CommitAccountProfilePictureResult, CommitAccountProfilePictureUnprocessableEntityProblem, CommitAgentProfileAvatarBadRequestProblem, CommitAgentProfileAvatarData, CommitAgentProfileAvatarError, CommitAgentProfileAvatarErrors, CommitAgentProfileAvatarForbiddenProblem, CommitAgentProfileAvatarGatewayTimeoutProblem, CommitAgentProfileAvatarRequest, CommitAgentProfileAvatarResponses, CommitAgentProfileAvatarResult, CommitAgentProfileAvatarUnprocessableEntityProblem, ConfigureVoiceProfileOutboundBadRequestProblem, ConfigureVoiceProfileOutboundConflictProblem, ConfigureVoiceProfileOutboundData, ConfigureVoiceProfileOutboundError, ConfigureVoiceProfileOutboundErrors, ConfigureVoiceProfileOutboundForbiddenProblem, ConfigureVoiceProfileOutboundGatewayTimeoutProblem, ConfigureVoiceProfileOutboundInternalServerErrorProblem, ConfigureVoiceProfileOutboundRequest, ConfigureVoiceProfileOutboundResponse, ConfigureVoiceProfileOutboundResponses, ConfigureVoiceProfileOutboundResult, ConfigureVoiceProfileOutboundUnprocessableEntityProblem, ConfirmAccountPhoneVerificationData, ConfirmAccountPhoneVerificationError, ConfirmAccountPhoneVerificationErrors, ConfirmAccountPhoneVerificationForbiddenProblem, ConfirmAccountPhoneVerificationGatewayTimeoutProblem, ConfirmAccountPhoneVerificationInternalServerErrorProblem, ConfirmAccountPhoneVerificationRequest, ConfirmAccountPhoneVerificationResponses, ConfirmAccountPhoneVerificationResult, ConnectEmailDomainBadRequestProblem, ConnectEmailDomainConflictProblem, ConnectEmailDomainData, ConnectEmailDomainError, ConnectEmailDomainErrors, ConnectEmailDomainForbiddenProblem, ConnectEmailDomainGatewayTimeoutProblem, ConnectEmailDomainInternalServerErrorProblem, ConnectEmailDomainRequest, ConnectEmailDomainResponses, ConnectEmailDomainResult, ConnectEmailDomainServiceUnavailableProblem, ConnectEmailDomainUnprocessableEntityProblem, ConnectTelegramBotBadRequestProblem, ConnectTelegramBotConflictProblem, ConnectTelegramBotData, ConnectTelegramBotError, ConnectTelegramBotErrors, ConnectTelegramBotForbiddenProblem, ConnectTelegramBotGatewayTimeoutProblem, ConnectTelegramBotInternalServerErrorProblem, ConnectTelegramBotRequest, ConnectTelegramBotResponses, ConnectTelegramBotResult, ConnectTelegramBotUnprocessableEntityProblem, ConnectWhatsappBusinessBadRequestProblem, ConnectWhatsappBusinessData, ConnectWhatsappBusinessError, ConnectWhatsappBusinessErrors, ConnectWhatsappBusinessForbiddenProblem, ConnectWhatsappBusinessGatewayTimeoutProblem, ConnectWhatsappBusinessInternalServerErrorProblem, ConnectWhatsappBusinessRequest, ConnectWhatsappBusinessResponses, ConnectWhatsappBusinessResult, ConnectWhatsappBusinessServiceUnavailableProblem, ConnectWhatsappBusinessUnprocessableEntityProblem, CountProjectsData, CountProjectsError, CountProjectsErrors, CountProjectsForbiddenProblem, CountProjectsGatewayTimeoutProblem, CountProjectsResponses, CountProjectsResult, CreateAccountProfilePictureUploadData, CreateAccountProfilePictureUploadError, CreateAccountProfilePictureUploadErrors, CreateAccountProfilePictureUploadForbiddenProblem, CreateAccountProfilePictureUploadGatewayTimeoutProblem, CreateAccountProfilePictureUploadInternalServerErrorProblem, CreateAccountProfilePictureUploadResponses, CreateAccountProfilePictureUploadResult, CreateAccountServiceKeyBadRequestProblem, CreateAccountServiceKeyData, CreateAccountServiceKeyError, CreateAccountServiceKeyErrors, CreateAccountServiceKeyForbiddenProblem, CreateAccountServiceKeyGatewayTimeoutProblem, CreateAccountServiceKeyInternalServerErrorProblem, CreateAccountServiceKeyRequest, CreateAccountServiceKeyResponse, CreateAccountServiceKeyResponses, CreateAccountServiceKeyResult, CreateAccountServiceKeyUnprocessableEntityProblem, CreateAgentProfileAvatarUploadData, CreateAgentProfileAvatarUploadError, CreateAgentProfileAvatarUploadErrors, CreateAgentProfileAvatarUploadForbiddenProblem, CreateAgentProfileAvatarUploadGatewayTimeoutProblem, CreateAgentProfileAvatarUploadRequest, CreateAgentProfileAvatarUploadResponses, CreateAgentProfileAvatarUploadResult, CreateAppInstallationRequestConflictProblem, CreateAppInstallationRequestData, CreateAppInstallationRequestError, CreateAppInstallationRequestErrors, CreateAppInstallationRequestGatewayTimeoutProblem, CreateAppInstallationRequestRequest, CreateAppInstallationRequestResponse, CreateAppInstallationRequestResponses, CreateAppInstallationRequestResult, CreatedAppInstallationDelivery, CreateDefaultVoiceProfileConflictProblem, CreateDefaultVoiceProfileData, CreateDefaultVoiceProfileError, CreateDefaultVoiceProfileErrors, CreateDefaultVoiceProfileForbiddenProblem, CreateDefaultVoiceProfileGatewayTimeoutProblem, CreateDefaultVoiceProfileInternalServerErrorProblem, CreateDefaultVoiceProfileRequest, CreateDefaultVoiceProfileResponses, CreateDefaultVoiceProfileResult, CreateOrganizationPaymentMethodCheckoutBadRequestProblem, CreateOrganizationPaymentMethodCheckoutData, CreateOrganizationPaymentMethodCheckoutError, CreateOrganizationPaymentMethodCheckoutErrors, CreateOrganizationPaymentMethodCheckoutForbiddenProblem, CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem, CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem, CreateOrganizationPaymentMethodCheckoutResponse, CreateOrganizationPaymentMethodCheckoutResponses, CreateOrganizationPaymentMethodCheckoutResult, CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem, CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem, CreateOrganizationSetupIntentBadRequestProblem, CreateOrganizationSetupIntentData, CreateOrganizationSetupIntentError, CreateOrganizationSetupIntentErrors, CreateOrganizationSetupIntentForbiddenProblem, CreateOrganizationSetupIntentGatewayTimeoutProblem, CreateOrganizationSetupIntentInternalServerErrorProblem, CreateOrganizationSetupIntentResponse, CreateOrganizationSetupIntentResponses, CreateOrganizationSetupIntentResult, CreateOrganizationSetupIntentUnprocessableEntityProblem, CreateOrganizationSsoPortalLinkBadRequestProblem, CreateOrganizationSsoPortalLinkData, CreateOrganizationSsoPortalLinkError, CreateOrganizationSsoPortalLinkErrors, CreateOrganizationSsoPortalLinkForbiddenProblem, CreateOrganizationSsoPortalLinkGatewayTimeoutProblem, CreateOrganizationSsoPortalLinkInternalServerErrorProblem, CreateOrganizationSsoPortalLinkPreconditionFailedProblem, CreateOrganizationSsoPortalLinkRequest, CreateOrganizationSsoPortalLinkRequestIntent, CreateOrganizationSsoPortalLinkResponse, CreateOrganizationSsoPortalLinkResponses, CreateOrganizationSsoPortalLinkResult, CreateProjectApiKeyBadRequestProblem, CreateProjectApiKeyData, CreateProjectApiKeyError, CreateProjectApiKeyErrors, CreateProjectApiKeyForbiddenProblem, CreateProjectApiKeyRequest, CreateProjectApiKeyResponse, CreateProjectApiKeyResponses, CreateProjectApiKeyResult, CreateProjectApiKeyUnprocessableEntityProblem, CreateProjectBadRequestProblem, CreateProjectData, CreateProjectError, CreateProjectErrors, CreateProjectForbiddenProblem, CreateProjectGatewayTimeoutProblem, CreateProjectRequest, CreateProjectResponses, CreateProjectResult, CreateProjectUnprocessableEntityProblem, CreateSharedLineAssignmentBadRequestProblem, CreateSharedLineAssignmentConflictProblem, CreateSharedLineAssignmentData, CreateSharedLineAssignmentError, CreateSharedLineAssignmentErrors, CreateSharedLineAssignmentForbiddenProblem, CreateSharedLineAssignmentGatewayTimeoutProblem, CreateSharedLineAssignmentInternalServerErrorProblem, CreateSharedLineAssignmentRequest, CreateSharedLineAssignmentResponses, CreateSharedLineAssignmentResult, CreateSharedLineAssignmentServiceUnavailableProblem, CreateSharedLineAssignmentUnprocessableEntityProblem, CreateVoiceProfileConflictProblem, CreateVoiceProfileData, CreateVoiceProfileError, CreateVoiceProfileErrors, CreateVoiceProfileForbiddenProblem, CreateVoiceProfileGatewayTimeoutProblem, CreateVoiceProfileInternalServerErrorProblem, CreateVoiceProfileRequest, CreateVoiceProfileResponses, CreateVoiceProfileResult, CreateWebhookDestinationBadRequestProblem, CreateWebhookDestinationData, CreateWebhookDestinationError, CreateWebhookDestinationErrors, CreateWebhookDestinationForbiddenProblem, CreateWebhookDestinationGatewayTimeoutProblem, CreateWebhookDestinationRequest, CreateWebhookDestinationResponse, CreateWebhookDestinationResponses, CreateWebhookDestinationResult, CreateWebhookDestinationUnprocessableEntityProblem, CreateWhatsappSharedLineAssignmentBadRequestProblem, CreateWhatsappSharedLineAssignmentConflictProblem, CreateWhatsappSharedLineAssignmentData, CreateWhatsappSharedLineAssignmentError, CreateWhatsappSharedLineAssignmentErrors, CreateWhatsappSharedLineAssignmentForbiddenProblem, CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem, CreateWhatsappSharedLineAssignmentInternalServerErrorProblem, CreateWhatsappSharedLineAssignmentRequest, CreateWhatsappSharedLineAssignmentResponses, CreateWhatsappSharedLineAssignmentResult, CreateWhatsappSharedLineAssignmentServiceUnavailableProblem, CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem, CreateWhatsappVoipSenderBadRequestProblem, CreateWhatsappVoipSenderConflictProblem, CreateWhatsappVoipSenderData, CreateWhatsappVoipSenderError, CreateWhatsappVoipSenderErrors, CreateWhatsappVoipSenderForbiddenProblem, CreateWhatsappVoipSenderGatewayTimeoutProblem, CreateWhatsappVoipSenderInternalServerErrorProblem, CreateWhatsappVoipSenderNotFoundProblem, CreateWhatsappVoipSenderRequest, CreateWhatsappVoipSenderResponses, CreateWhatsappVoipSenderResult, CreateWhatsappVoipSenderServiceUnavailableProblem, CreateWhatsappVoipSenderUnprocessableEntityProblem, DedicatedProjectPlatformSettings, DeleteAccountData, DeleteAccountError, DeleteAccountErrors, DeleteAccountForbiddenProblem, DeleteAccountGatewayTimeoutProblem, DeleteAccountInternalServerErrorProblem, DeleteAccountResponses, DeleteAccountResult, DeleteProjectBadRequestProblem, DeleteProjectData, DeleteProjectError, DeleteProjectErrors, DeleteProjectForbiddenProblem, DeleteProjectGatewayTimeoutProblem, DeleteProjectResponses, DeleteProjectResult, DeleteProjectUnprocessableEntityProblem, DeleteVoiceProfileConflictProblem, DeleteVoiceProfileData, DeleteVoiceProfileError, DeleteVoiceProfileErrors, DeleteVoiceProfileForbiddenProblem, DeleteVoiceProfileForceInput, DeleteVoiceProfileGatewayTimeoutProblem, DeleteVoiceProfileInboundConflictProblem, DeleteVoiceProfileInboundData, DeleteVoiceProfileInboundError, DeleteVoiceProfileInboundErrors, DeleteVoiceProfileInboundForbiddenProblem, DeleteVoiceProfileInboundGatewayTimeoutProblem, DeleteVoiceProfileInboundInternalServerErrorProblem, DeleteVoiceProfileInboundResponses, DeleteVoiceProfileInboundResult, DeleteVoiceProfileInternalServerErrorProblem, DeleteVoiceProfileOutboundConflictProblem, DeleteVoiceProfileOutboundData, DeleteVoiceProfileOutboundError, DeleteVoiceProfileOutboundErrors, DeleteVoiceProfileOutboundForbiddenProblem, DeleteVoiceProfileOutboundGatewayTimeoutProblem, DeleteVoiceProfileOutboundInternalServerErrorProblem, DeleteVoiceProfileOutboundResponse, DeleteVoiceProfileOutboundResponses, DeleteVoiceProfileOutboundResult, DeleteVoiceProfileResponses, DeleteVoiceProfileResult, DeleteWebhookDestinationData, DeleteWebhookDestinationError, DeleteWebhookDestinationErrors, DeleteWebhookDestinationForbiddenProblem, DeleteWebhookDestinationGatewayTimeoutProblem, DeleteWebhookDestinationResponses, DeleteWebhookDestinationResult, DeprecatedWebhookApiVersion, DeprecatedWebhookEventCatalog, DeviceAuthorizeData, DeviceAuthorizeError, DeviceAuthorizeErrors, DeviceAuthorizeResponse, DeviceAuthorizeResponses, DeviceAuthorizeResult, DeviceCodeGrantRequest, DeviceTokenBadRequestResponse, DeviceTokenData, DeviceTokenError, DeviceTokenErrors, DeviceTokenRequest, DeviceTokenResponse, DeviceTokenResponses, DeviceTokenResponseUser, DeviceTokenResult, DisableOrganizationSsoBadRequestProblem, DisableOrganizationSsoData, DisableOrganizationSsoError, DisableOrganizationSsoErrors, DisableOrganizationSsoForbiddenProblem, DisableOrganizationSsoGatewayTimeoutProblem, DisableOrganizationSsoInternalServerErrorProblem, DisableOrganizationSsoPreconditionFailedProblem, DisableOrganizationSsoRequest, DisableOrganizationSsoResponses, DisableOrganizationSsoResult, DisableOrganizationSsoUnprocessableEntityProblem, DisconnectWhatsappBusinessAccountBadRequestProblem, DisconnectWhatsappBusinessAccountConflictProblem, DisconnectWhatsappBusinessAccountData, DisconnectWhatsappBusinessAccountError, DisconnectWhatsappBusinessAccountErrors, DisconnectWhatsappBusinessAccountForbiddenProblem, DisconnectWhatsappBusinessAccountGatewayTimeoutProblem, DisconnectWhatsappBusinessAccountInternalServerErrorProblem, DisconnectWhatsappBusinessAccountResponses, DisconnectWhatsappBusinessAccountResult, DisconnectWhatsappBusinessAccountUnprocessableEntityProblem, DownloadAttachmentData, DownloadAttachmentError, DownloadAttachmentErrors, DownloadAttachmentForbiddenProblem, DownloadAttachmentGatewayTimeoutProblem, DownloadAttachmentInternalServerErrorProblem, DownloadAttachmentResponse, DownloadAttachmentResponses, DownloadAttachmentResult, EmailDomainAlreadyConnectedProblem, EmailDomainCapExceededProblem, EntitlementRequiredProblem, ExistingAppInstallationDelivery, ExistingAppInstallationDeliveryStatus, FailedBillingOperation, FailedPreconditionProblem, FixedCharge, FixedChargeModel, FixedChargePricing, FixedChargeTier, ForbiddenProblem, GetAccountData, GetAccountError, GetAccountErrors, GetAccountForbiddenProblem, GetAccountGatewayTimeoutProblem, GetAccountInternalServerErrorProblem, GetAccountResponses, GetAccountResult, GetAgentProfileData, GetAgentProfileError, GetAgentProfileErrors, GetAgentProfileForbiddenProblem, GetAgentProfileGatewayTimeoutProblem, GetAgentProfileResponses, GetAgentProfileResult, GetAttachmentData, GetAttachmentError, GetAttachmentErrors, GetAttachmentForbiddenProblem, GetAttachmentGatewayTimeoutProblem, GetAttachmentInternalServerErrorProblem, GetAttachmentResponses, GetAttachmentResult, GetBillingOperationData, GetBillingOperationError, GetBillingOperationErrors, GetBillingOperationForbiddenProblem, GetBillingOperationGatewayTimeoutProblem, GetBillingOperationInternalServerErrorProblem, GetBillingOperationResponses, GetBillingOperationResult, GetBillingOverviewData, GetBillingOverviewError, GetBillingOverviewErrors, GetBillingOverviewForbiddenProblem, GetBillingOverviewGatewayTimeoutProblem, GetBillingOverviewInternalServerErrorProblem, GetBillingOverviewResponse, GetBillingOverviewResponses, GetBillingOverviewResult, GetDefaultVoiceProfileData, GetDefaultVoiceProfileError, GetDefaultVoiceProfileErrors, GetDefaultVoiceProfileForbiddenProblem, GetDefaultVoiceProfileGatewayTimeoutProblem, GetDefaultVoiceProfileInternalServerErrorProblem, GetDefaultVoiceProfileResponses, GetDefaultVoiceProfileResult, GetMessageMetricsBackfillData, GetMessageMetricsBackfillError, GetMessageMetricsBackfillErrors, GetMessageMetricsBackfillForbiddenProblem, GetMessageMetricsBackfillResponse, GetMessageMetricsBackfillResponses, GetMessageMetricsBackfillResult, GetMessageMetricsSqlSchemaData, GetMessageMetricsSqlSchemaError, GetMessageMetricsSqlSchemaErrors, GetMessageMetricsSqlSchemaForbiddenProblem, GetMessageMetricsSqlSchemaResponse, GetMessageMetricsSqlSchemaResponses, GetMessageMetricsSqlSchemaResult, GetOperationData, GetOperationError, GetOperationErrors, GetOperationForbiddenProblem, GetOperationGatewayTimeoutProblem, GetOperationInternalServerErrorProblem, GetOperationResponse, GetOperationResponses, GetOperationResult, GetOrganizationBillingOverviewData, GetOrganizationBillingOverviewError, GetOrganizationBillingOverviewErrors, GetOrganizationBillingOverviewForbiddenProblem, GetOrganizationBillingOverviewGatewayTimeoutProblem, GetOrganizationBillingOverviewInternalServerErrorProblem, GetOrganizationBillingOverviewResponse, GetOrganizationBillingOverviewResponses, GetOrganizationBillingOverviewResult, GetOrganizationConnectionStatusData, GetOrganizationConnectionStatusError, GetOrganizationConnectionStatusErrors, GetOrganizationConnectionStatusForbiddenProblem, GetOrganizationConnectionStatusGatewayTimeoutProblem, GetOrganizationConnectionStatusInternalServerErrorProblem, GetOrganizationConnectionStatusResponses, GetOrganizationConnectionStatusResult, GetOrganizationPaymentMethodData, GetOrganizationPaymentMethodError, GetOrganizationPaymentMethodErrors, GetOrganizationPaymentMethodForbiddenProblem, GetOrganizationPaymentMethodGatewayTimeoutProblem, GetOrganizationPaymentMethodInternalServerErrorProblem, GetOrganizationPaymentMethodResponse, GetOrganizationPaymentMethodResponses, GetOrganizationPaymentMethodResult, GetOrganizationSsoConfigurationBadRequestProblem, GetOrganizationSsoConfigurationData, GetOrganizationSsoConfigurationError, GetOrganizationSsoConfigurationErrors, GetOrganizationSsoConfigurationForbiddenProblem, GetOrganizationSsoConfigurationGatewayTimeoutProblem, GetOrganizationSsoConfigurationInternalServerErrorProblem, GetOrganizationSsoConfigurationPreconditionFailedProblem, GetOrganizationSsoConfigurationResponses, GetOrganizationSsoConfigurationResult, GetProjectClosureStatusData, GetProjectClosureStatusError, GetProjectClosureStatusErrors, GetProjectClosureStatusForbiddenProblem, GetProjectClosureStatusGatewayTimeoutProblem, GetProjectClosureStatusResponse, GetProjectClosureStatusResponses, GetProjectClosureStatusResult, GetProjectData, GetProjectError, GetProjectErrors, GetProjectForbiddenProblem, GetProjectGatewayTimeoutProblem, GetProjectImessagePlatformData, GetProjectImessagePlatformError, GetProjectImessagePlatformErrors, GetProjectImessagePlatformForbiddenProblem, GetProjectImessagePlatformGatewayTimeoutProblem, GetProjectImessagePlatformInternalServerErrorProblem, GetProjectImessagePlatformResponses, GetProjectImessagePlatformResult, GetProjectImessagePlatformServiceUnavailableProblem, GetProjectResponses, GetProjectResult, GetProjectWhatsappPlatformData, GetProjectWhatsappPlatformError, GetProjectWhatsappPlatformErrors, GetProjectWhatsappPlatformForbiddenProblem, GetProjectWhatsappPlatformGatewayTimeoutProblem, GetProjectWhatsappPlatformInternalServerErrorProblem, GetProjectWhatsappPlatformResponses, GetProjectWhatsappPlatformResult, GetProjectWhatsappPlatformServiceUnavailableProblem, GetResourceData, GetResourceError, GetResourceErrors, GetResourceForbiddenProblem, GetResourceGatewayTimeoutProblem, GetResourceInternalServerErrorProblem, GetResourceResponses, GetResourceResult, GetSharedLineAssignmentData, GetSharedLineAssignmentError, GetSharedLineAssignmentErrors, GetSharedLineAssignmentForbiddenProblem, GetSharedLineAssignmentGatewayTimeoutProblem, GetSharedLineAssignmentInternalServerErrorProblem, GetSharedLineAssignmentResponses, GetSharedLineAssignmentResult, GetSmsLineCampaignAssignmentConflictProblem, GetSmsLineCampaignAssignmentData, GetSmsLineCampaignAssignmentError, GetSmsLineCampaignAssignmentErrors, GetSmsLineCampaignAssignmentForbiddenProblem, GetSmsLineCampaignAssignmentGatewayTimeoutProblem, GetSmsLineCampaignAssignmentInternalServerErrorProblem, GetSmsLineCampaignAssignmentNotFoundProblem, GetSmsLineCampaignAssignmentResponse, GetSmsLineCampaignAssignmentResponses, GetSmsLineCampaignAssignmentResult, GetSmsLineCampaignAssignmentServiceUnavailableProblem, GetVoiceLineProfileAssignmentData, GetVoiceLineProfileAssignmentError, GetVoiceLineProfileAssignmentErrors, GetVoiceLineProfileAssignmentForbiddenProblem, GetVoiceLineProfileAssignmentGatewayTimeoutProblem, GetVoiceLineProfileAssignmentInternalServerErrorProblem, GetVoiceLineProfileAssignmentResponses, GetVoiceLineProfileAssignmentResult, GetVoiceProfileData, GetVoiceProfileError, GetVoiceProfileErrors, GetVoiceProfileForbiddenProblem, GetVoiceProfileGatewayTimeoutProblem, GetVoiceProfileInternalServerErrorProblem, GetVoiceProfileResponses, GetVoiceProfileResult, GetWebhookDestinationData, GetWebhookDestinationError, GetWebhookDestinationErrors, GetWebhookDestinationForbiddenProblem, GetWebhookDestinationGatewayTimeoutProblem, GetWebhookDestinationResponses, GetWebhookDestinationResult, GetWebhookEventSchemaData, GetWebhookEventSchemaError, GetWebhookEventSchemaErrors, GetWebhookEventSchemaForbiddenProblem, GetWebhookEventSchemaGatewayTimeoutProblem, GetWebhookEventSchemaResponses, GetWebhookEventSchemaResult, GetWhatsappBusinessAccountData, GetWhatsappBusinessAccountError, GetWhatsappBusinessAccountErrors, GetWhatsappBusinessAccountForbiddenProblem, GetWhatsappBusinessAccountGatewayTimeoutProblem, GetWhatsappBusinessAccountInternalServerErrorProblem, GetWhatsappBusinessAccountResponses, GetWhatsappBusinessAccountResult, GetWhatsappBusinessVerificationCodeData, GetWhatsappBusinessVerificationCodeError, GetWhatsappBusinessVerificationCodeErrors, GetWhatsappBusinessVerificationCodeForbiddenProblem, GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem, GetWhatsappBusinessVerificationCodeInternalServerErrorProblem, GetWhatsappBusinessVerificationCodeNotFoundProblem, GetWhatsappBusinessVerificationCodeResponse, GetWhatsappBusinessVerificationCodeResponses, GetWhatsappBusinessVerificationCodeResult, GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem, GetWhatsappSharedLineAssignmentData, GetWhatsappSharedLineAssignmentError, GetWhatsappSharedLineAssignmentErrors, GetWhatsappSharedLineAssignmentForbiddenProblem, GetWhatsappSharedLineAssignmentGatewayTimeoutProblem, GetWhatsappSharedLineAssignmentInternalServerErrorProblem, GetWhatsappSharedLineAssignmentResponses, GetWhatsappSharedLineAssignmentResult, GetWhatsappSignupConfigData, GetWhatsappSignupConfigError, GetWhatsappSignupConfigErrors, GetWhatsappSignupConfigForbiddenProblem, GetWhatsappSignupConfigInternalServerErrorProblem, GetWhatsappSignupConfigResponse, GetWhatsappSignupConfigResponses, GetWhatsappSignupConfigResult, HttpErrorProblem, IdempotencyKeyInvalidProblem, IdempotencyKeyRequiredProblem, IdempotencyKeyReusedProblem, IdempotencyRequestInProgressProblem, IdempotencyUnavailableProblem, ImessageHandle, ImessageModeDedicatedProblem, InsufficientScopeProblem, InternalErrorProblem, InvalidArgumentProblem, InvalidAttachmentRequestProblem, InvalidAuthContextProblem, InvalidReturnToProblem, InvitationEnterpriseLoginRequest, Invoice, InvoiceKind, InvoicePaymentStatus, InvoiceSubject, JsonValue, ListAccountServiceKeysData, ListAccountServiceKeysError, ListAccountServiceKeysErrors, ListAccountServiceKeysForbiddenProblem, ListAccountServiceKeysGatewayTimeoutProblem, ListAccountServiceKeysInternalServerErrorProblem, ListAccountServiceKeysResponse, ListAccountServiceKeysResponses, ListAccountServiceKeysResult, ListAttachmentsData, ListAttachmentsError, ListAttachmentsErrors, ListAttachmentsForbiddenProblem, ListAttachmentsGatewayTimeoutProblem, ListAttachmentsInternalServerErrorProblem, ListAttachmentsResponses, ListAttachmentsResult, ListAuthorizedApplicationsData, ListAuthorizedApplicationsError, ListAuthorizedApplicationsErrors, ListAuthorizedApplicationsForbiddenProblem, ListAuthorizedApplicationsGatewayTimeoutProblem, ListAuthorizedApplicationsInternalServerErrorProblem, ListAuthorizedApplicationsOrder, ListAuthorizedApplicationsResponse, ListAuthorizedApplicationsResponseListMetadata, ListAuthorizedApplicationsResponses, ListAuthorizedApplicationsResult, ListBillingPlansData, ListBillingPlansError, ListBillingPlansErrors, ListBillingPlansForbiddenProblem, ListBillingPlansGatewayTimeoutProblem, ListBillingPlansInternalServerErrorProblem, ListBillingPlansResponse, ListBillingPlansResponses, ListBillingPlansResult, ListInvoicesData, ListInvoicesError, ListInvoicesErrors, ListInvoicesForbiddenProblem, ListInvoicesGatewayTimeoutProblem, ListInvoicesInternalServerErrorProblem, ListInvoicesResponse, ListInvoicesResponses, ListInvoicesResult, ListNumberAreaCodesData, ListNumberAreaCodesError, ListNumberAreaCodesErrors, ListNumberAreaCodesForbiddenProblem, ListNumberAreaCodesGatewayTimeoutProblem, ListNumberAreaCodesInternalServerErrorProblem, ListNumberAreaCodesResponse, ListNumberAreaCodesResponses, ListNumberAreaCodesResult, ListNumberCountriesData, ListNumberCountriesError, ListNumberCountriesErrors, ListNumberCountriesForbiddenProblem, ListNumberCountriesGatewayTimeoutProblem, ListNumberCountriesInternalServerErrorProblem, ListNumberCountriesResponse, ListNumberCountriesResponses, ListNumberCountriesResult, ListOauthScopesData, ListOauthScopesError, ListOauthScopesErrors, ListOauthScopesGatewayTimeoutProblem, ListOauthScopesResponse, ListOauthScopesResponses, ListOauthScopesResult, ListOperationsData, ListOperationsError, ListOperationsErrors, ListOperationsForbiddenProblem, ListOperationsGatewayTimeoutProblem, ListOperationsInternalServerErrorProblem, ListOperationsResponses, ListOperationsResult, ListProjectApiKeysData, ListProjectApiKeysError, ListProjectApiKeysErrors, ListProjectApiKeysForbiddenProblem, ListProjectApiKeysResponse, ListProjectApiKeysResponses, ListProjectApiKeysResult, ListProjectPlatformsData, ListProjectPlatformsError, ListProjectPlatformsErrors, ListProjectPlatformsForbiddenProblem, ListProjectPlatformsInternalServerErrorProblem, ListProjectPlatformsResponse, ListProjectPlatformsResponses, ListProjectPlatformsResult, ListProjectsData, ListProjectsError, ListProjectsErrors, ListProjectsForbiddenProblem, ListProjectsGatewayTimeoutProblem, ListProjectsResponses, ListProjectsResult, ListResourcesData, ListResourcesError, ListResourcesErrors, ListResourcesForbiddenProblem, ListResourcesGatewayTimeoutProblem, ListResourcesInternalServerErrorProblem, ListResourcesResponses, ListResourcesResult, ListSharedLineAssignmentsData, ListSharedLineAssignmentsError, ListSharedLineAssignmentsErrors, ListSharedLineAssignmentsForbiddenProblem, ListSharedLineAssignmentsGatewayTimeoutProblem, ListSharedLineAssignmentsInternalServerErrorProblem, ListSharedLineAssignmentsResponses, ListSharedLineAssignmentsResult, ListVoiceProfilesData, ListVoiceProfilesDefaultInput, ListVoiceProfilesError, ListVoiceProfilesErrors, ListVoiceProfilesForbiddenProblem, ListVoiceProfilesGatewayTimeoutProblem, ListVoiceProfilesInternalServerErrorProblem, ListVoiceProfilesResponses, ListVoiceProfilesResult, ListWebhookApiVersionsData, ListWebhookApiVersionsError, ListWebhookApiVersionsErrors, ListWebhookApiVersionsForbiddenProblem, ListWebhookApiVersionsGatewayTimeoutProblem, ListWebhookApiVersionsResponse, ListWebhookApiVersionsResponses, ListWebhookApiVersionsResult, ListWebhookDestinationsData, ListWebhookDestinationsError, ListWebhookDestinationsErrors, ListWebhookDestinationsForbiddenProblem, ListWebhookDestinationsGatewayTimeoutProblem, ListWebhookDestinationsResponses, ListWebhookDestinationsResult, ListWebhookEgressAddressesData, ListWebhookEgressAddressesError, ListWebhookEgressAddressesErrors, ListWebhookEgressAddressesForbiddenProblem, ListWebhookEgressAddressesResponse, ListWebhookEgressAddressesResponses, ListWebhookEgressAddressesResult, ListWebhookEventTypesData, ListWebhookEventTypesError, ListWebhookEventTypesErrors, ListWebhookEventTypesForbiddenProblem, ListWebhookEventTypesGatewayTimeoutProblem, ListWebhookEventTypesResponse, ListWebhookEventTypesResponses, ListWebhookEventTypesResult, ListWhatsappAccountPhoneNumbersData, ListWhatsappAccountPhoneNumbersError, ListWhatsappAccountPhoneNumbersErrors, ListWhatsappAccountPhoneNumbersForbiddenProblem, ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem, ListWhatsappAccountPhoneNumbersInternalServerErrorProblem, ListWhatsappAccountPhoneNumbersResponse, ListWhatsappAccountPhoneNumbersResponses, ListWhatsappAccountPhoneNumbersResult, ListWhatsappSharedLineAssignmentsData, ListWhatsappSharedLineAssignmentsError, ListWhatsappSharedLineAssignmentsErrors, ListWhatsappSharedLineAssignmentsForbiddenProblem, ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem, ListWhatsappSharedLineAssignmentsInternalServerErrorProblem, ListWhatsappSharedLineAssignmentsResponses, ListWhatsappSharedLineAssignmentsResult, MessageMetricsBackfillState, MessageMetricsDirection, MessageMetricsJsonCatalog, MessageMetricsJsonDiscriminator, MessageMetricsJsonOneOfPathsDiscriminator, MessageMetricsJsonPath, MessageMetricsJsonPathDiscriminator, MessageMetricsJsonPathValue, MessageMetricsJsonResource, MessageMetricsPlatform, MessageMetricsPlatformJsonPaths, MessageMetricsQueryColumn, MessageMetricsQueryStatistics, MessageMetricsSqlCapabilities, MessageMetricsSqlColumn, MessageMetricsSqlLimits, MessageMetricsSqlTable, MessageMetricsSqlTableName, MeteredUsage, NotAuthenticatedProblem, NumberCountry, Operation, OperationError, OperationNotCancellableProblem, OperationNotFoundProblem, OperationPage, OperationState, OperationType, OrganizationAuthenticationRedirect, OrganizationAuthenticationRequest, OrganizationConnectionNotFoundProblem, OrganizationConnectionStatus, OrganizationConnectionStatusMembership, OrganizationConnectionStatusOrganization, OrganizationConnectionSyncStatus, OrganizationEnterpriseLoginRequest, OrganizationInvoiceSubject, OrganizationSsoConfiguration, OrganizationSsoConfigurationConnectionState, OrganizationSsoConfigurationPolicySyncStatus, OrganizationSsoConflictProblem, OrganizationSsoDomain, OrganizationSsoDomainState, OrganizationSsoNotFoundProblem, OrganizationSsoPreconditionFailedProblem, OrganizationSsoRequiredProblem, OrganizationSubscription, OrganizationSubscriptionEntitlement, OrganizationSyncUnavailableProblem, PayloadTooLargeProblem, PaymentMethod, PaymentProviderNotReadyProblem, PendingBillingOperation, PhoneVerificationCaptcha, ProfilePictureContentType, ProfilePictureUpload, ProfilePictureUploadFormFields, ProfilePictureUploadRequest, Project, ProjectApiKeyResponse, ProjectBillingInitialization, ProjectClosingProblem, ProjectClosureDomain, ProjectClosureDomainStatus, ProjectCount, ProjectCreatedByActorKind, ProjectDeletedProblem, ProjectInvoiceSubject, ProjectNotFoundProblem, ProjectPage, ProjectPlatformSettings, ProjectSubscription, ProjectSubscriptionEntitlement, ProvisionImessageDedicatedLineBadRequestProblem, ProvisionImessageDedicatedLineData, ProvisionImessageDedicatedLineError, ProvisionImessageDedicatedLineErrors, ProvisionImessageDedicatedLineForbiddenProblem, ProvisionImessageDedicatedLineGatewayTimeoutProblem, ProvisionImessageDedicatedLineInternalServerErrorProblem, ProvisionImessageDedicatedLineResponses, ProvisionImessageDedicatedLineResult, ProvisionImessageDedicatedLineServiceUnavailableProblem, ProvisionImessageDedicatedLineUnprocessableEntityProblem, ProvisionWhatsappDedicatedLineBadRequestProblem, ProvisionWhatsappDedicatedLineData, ProvisionWhatsappDedicatedLineError, ProvisionWhatsappDedicatedLineErrors, ProvisionWhatsappDedicatedLineForbiddenProblem, ProvisionWhatsappDedicatedLineGatewayTimeoutProblem, ProvisionWhatsappDedicatedLineInternalServerErrorProblem, ProvisionWhatsappDedicatedLineResponses, ProvisionWhatsappDedicatedLineResult, ProvisionWhatsappDedicatedLineServiceUnavailableProblem, ProvisionWhatsappDedicatedLineUnprocessableEntityProblem, PurchaseSmsNumberBadRequestProblem, PurchaseSmsNumberData, PurchaseSmsNumberError, PurchaseSmsNumberErrors, PurchaseSmsNumberForbiddenProblem, PurchaseSmsNumberGatewayTimeoutProblem, PurchaseSmsNumberInternalServerErrorProblem, PurchaseSmsNumberRequest, PurchaseSmsNumberResponses, PurchaseSmsNumberResult, PurchaseSmsNumberServiceUnavailableProblem, PurchaseSmsNumberUnprocessableEntityProblem, QueryConcurrencyLimitProblem, QueryMessageMetricsData, QueryMessageMetricsError, QueryMessageMetricsErrors, QueryMessageMetricsForbiddenProblem, QueryMessageMetricsGatewayTimeoutProblem, QueryMessageMetricsResponse, QueryMessageMetricsResponses, QueryMessageMetricsResult, QueryMessageMetricsUnprocessableEntityProblem, QueryResourceLimitProblem, RateLimitedProblem, RedeemAppInstallationDeliveryData, RedeemAppInstallationDeliveryError, RedeemAppInstallationDeliveryErrors, RedeemAppInstallationDeliveryGatewayTimeoutProblem, RedeemAppInstallationDeliveryRequest, RedeemAppInstallationDeliveryResponse, RedeemAppInstallationDeliveryResponses, RedeemAppInstallationDeliveryResult, RefreshOrganizationSsoConnectionBadRequestProblem, RefreshOrganizationSsoConnectionData, RefreshOrganizationSsoConnectionError, RefreshOrganizationSsoConnectionErrors, RefreshOrganizationSsoConnectionForbiddenProblem, RefreshOrganizationSsoConnectionGatewayTimeoutProblem, RefreshOrganizationSsoConnectionInternalServerErrorProblem, RefreshOrganizationSsoConnectionPreconditionFailedProblem, RefreshOrganizationSsoConnectionResponses, RefreshOrganizationSsoConnectionResult, RefreshTokenGrantRequest, ReleaseImessageDedicatedLineData, ReleaseImessageDedicatedLineError, ReleaseImessageDedicatedLineErrors, ReleaseImessageDedicatedLineForbiddenProblem, ReleaseImessageDedicatedLineGatewayTimeoutProblem, ReleaseImessageDedicatedLineInternalServerErrorProblem, ReleaseImessageDedicatedLineResponses, ReleaseImessageDedicatedLineResult, ReleaseResourceConflictProblem, ReleaseResourceData, ReleaseResourceError, ReleaseResourceErrors, ReleaseResourceForbiddenProblem, ReleaseResourceGatewayTimeoutProblem, ReleaseResourceInternalServerErrorProblem, ReleaseResourceResponses, ReleaseResourceResult, ReleaseSharedLineAssignmentData, ReleaseSharedLineAssignmentError, ReleaseSharedLineAssignmentErrors, ReleaseSharedLineAssignmentForbiddenProblem, ReleaseSharedLineAssignmentGatewayTimeoutProblem, ReleaseSharedLineAssignmentInternalServerErrorProblem, ReleaseSharedLineAssignmentResponses, ReleaseSharedLineAssignmentResult, ReleaseWhatsappDedicatedLineData, ReleaseWhatsappDedicatedLineError, ReleaseWhatsappDedicatedLineErrors, ReleaseWhatsappDedicatedLineForbiddenProblem, ReleaseWhatsappDedicatedLineGatewayTimeoutProblem, ReleaseWhatsappDedicatedLineInternalServerErrorProblem, ReleaseWhatsappDedicatedLineResponses, ReleaseWhatsappDedicatedLineResult, ReleaseWhatsappSharedLineAssignmentData, ReleaseWhatsappSharedLineAssignmentError, ReleaseWhatsappSharedLineAssignmentErrors, ReleaseWhatsappSharedLineAssignmentForbiddenProblem, ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem, ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem, ReleaseWhatsappSharedLineAssignmentResponses, ReleaseWhatsappSharedLineAssignmentResult, ReplaceVoiceProfileInboundConflictProblem, ReplaceVoiceProfileInboundData, ReplaceVoiceProfileInboundError, ReplaceVoiceProfileInboundErrors, ReplaceVoiceProfileInboundForbiddenProblem, ReplaceVoiceProfileInboundGatewayTimeoutProblem, ReplaceVoiceProfileInboundInternalServerErrorProblem, ReplaceVoiceProfileInboundRequest, ReplaceVoiceProfileInboundResponses, ReplaceVoiceProfileInboundResult, RequestTimeoutProblem, ResetAccountProfilePictureBadRequestProblem, ResetAccountProfilePictureData, ResetAccountProfilePictureError, ResetAccountProfilePictureErrors, ResetAccountProfilePictureForbiddenProblem, ResetAccountProfilePictureGatewayTimeoutProblem, ResetAccountProfilePictureInternalServerErrorProblem, ResetAccountProfilePictureResponses, ResetAccountProfilePictureResult, ResetAccountProfilePictureUnprocessableEntityProblem, ResetAgentProfileAvatarBadRequestProblem, ResetAgentProfileAvatarData, ResetAgentProfileAvatarError, ResetAgentProfileAvatarErrors, ResetAgentProfileAvatarForbiddenProblem, ResetAgentProfileAvatarGatewayTimeoutProblem, ResetAgentProfileAvatarResponses, ResetAgentProfileAvatarResult, ResetAgentProfileAvatarUnprocessableEntityProblem, Resource, ResourceMismatchProblem, ResourceNotFoundProblem, ResourcePage, ResourceState, ResumeSubscriptionBadRequestProblem, ResumeSubscriptionConflictProblem, ResumeSubscriptionData, ResumeSubscriptionError, ResumeSubscriptionErrors, ResumeSubscriptionForbiddenProblem, ResumeSubscriptionGatewayTimeoutProblem, ResumeSubscriptionInternalServerErrorProblem, ResumeSubscriptionRequest, ResumeSubscriptionResponse, ResumeSubscriptionResponses, ResumeSubscriptionResult, ResumeSubscriptionServiceUnavailableProblem, ResumeSubscriptionUnprocessableEntityProblem, RetryEnterpriseLoginRequest, RetryOrganizationConnectionSyncData, RetryOrganizationConnectionSyncError, RetryOrganizationConnectionSyncErrors, RetryOrganizationConnectionSyncForbiddenProblem, RetryOrganizationConnectionSyncGatewayTimeoutProblem, RetryOrganizationConnectionSyncInternalServerErrorProblem, RetryOrganizationConnectionSyncResponses, RetryOrganizationConnectionSyncResult, RevokeAccountServiceKeyBadRequestProblem, RevokeAccountServiceKeyData, RevokeAccountServiceKeyError, RevokeAccountServiceKeyErrors, RevokeAccountServiceKeyForbiddenProblem, RevokeAccountServiceKeyGatewayTimeoutProblem, RevokeAccountServiceKeyInternalServerErrorProblem, RevokeAccountServiceKeyNotFoundProblem, RevokeAccountServiceKeyResponse, RevokeAccountServiceKeyResponses, RevokeAccountServiceKeyResult, RevokeAccountServiceKeyUnprocessableEntityProblem, RevokeAuthorizedApplicationData, RevokeAuthorizedApplicationError, RevokeAuthorizedApplicationErrors, RevokeAuthorizedApplicationForbiddenProblem, RevokeAuthorizedApplicationGatewayTimeoutProblem, RevokeAuthorizedApplicationInternalServerErrorProblem, RevokeAuthorizedApplicationResponses, RevokeAuthorizedApplicationResult, RevokeProjectApiKeyBadRequestProblem, RevokeProjectApiKeyData, RevokeProjectApiKeyError, RevokeProjectApiKeyErrors, RevokeProjectApiKeyForbiddenProblem, RevokeProjectApiKeyNotFoundProblem, RevokeProjectApiKeyResponses, RevokeProjectApiKeyResult, RevokeProjectApiKeyUnprocessableEntityProblem, RotateVoiceProfileOutboundCredentialBadRequestProblem, RotateVoiceProfileOutboundCredentialConflictProblem, RotateVoiceProfileOutboundCredentialData, RotateVoiceProfileOutboundCredentialError, RotateVoiceProfileOutboundCredentialErrors, RotateVoiceProfileOutboundCredentialForbiddenProblem, RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem, RotateVoiceProfileOutboundCredentialInternalServerErrorProblem, RotateVoiceProfileOutboundCredentialRequest, RotateVoiceProfileOutboundCredentialResponse, RotateVoiceProfileOutboundCredentialResponses, RotateVoiceProfileOutboundCredentialResult, RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem, RotateWebhookSigningSecretBadRequestProblem, RotateWebhookSigningSecretData, RotateWebhookSigningSecretError, RotateWebhookSigningSecretErrors, RotateWebhookSigningSecretForbiddenProblem, RotateWebhookSigningSecretGatewayTimeoutProblem, RotateWebhookSigningSecretRequest, RotateWebhookSigningSecretResponse, RotateWebhookSigningSecretResponses, RotateWebhookSigningSecretResult, RotateWebhookSigningSecretUnprocessableEntityProblem, SelectableWebhookApiVersion, SelectableWebhookApiVersionStatus, SelectableWebhookEventCatalog, SharedLineAssignment, SharedLineAssignmentPage, SharedLineAssignmentPlatform, SharedLineCapExceededProblem, SharedLinePoolExhaustedProblem, SharedProjectPlatformSettings, SipAuthenticationAlgorithm, SipEndpoint, SipInboundConfiguration, SipInboundCredentials, SipInboundCredentialsWithPassword, SipOutboundAuthentication, SipOutboundAuthenticationPolicy, SipOutboundConfiguration, SipOutboundConnection, SipTransport, SlugTakenProblem, SmsCampaignCapacityExceededProblem, SmsCampaignContextUnavailableProblem, SmsCampaignInvalidRequestProblem, SmsCampaignMutationInProgressProblem, SmsCampaignNotFoundProblem, SmsCampaignNotReadyProblem, SmsCampaignOrganizationMismatchProblem, SmsCampaignReconciliationRequiredProblem, SmsCampaignVersionConflictProblem, SmsLineCampaign, SmsLineCampaignEligibility, SmsLineNotFoundProblem, SmsLineUnsupportedProblem, SortOrder, SsoSubscriptionRequiredProblem, StartAccountPhoneVerificationData, StartAccountPhoneVerificationError, StartAccountPhoneVerificationErrors, StartAccountPhoneVerificationForbiddenProblem, StartAccountPhoneVerificationGatewayTimeoutProblem, StartAccountPhoneVerificationInternalServerErrorProblem, StartAccountPhoneVerificationRequest, StartAccountPhoneVerificationResponse, StartAccountPhoneVerificationResponses, StartAccountPhoneVerificationResult, StartEnterpriseLoginData, StartEnterpriseLoginError, StartEnterpriseLoginErrors, StartEnterpriseLoginRequest, StartEnterpriseLoginResponse, StartEnterpriseLoginResponses, StartEnterpriseLoginResult, SubscriptionStatus, SucceededBillingOperation, SupportedPlatform, TelegramProjectDeletedProblem, TelegramProvisionInProgressProblem, TerminalBillingOperation, TimestampOrderBy, UnassignSmsLineCampaignBadRequestProblem, UnassignSmsLineCampaignConflictProblem, UnassignSmsLineCampaignData, UnassignSmsLineCampaignError, UnassignSmsLineCampaignErrors, UnassignSmsLineCampaignForbiddenProblem, UnassignSmsLineCampaignGatewayTimeoutProblem, UnassignSmsLineCampaignInternalServerErrorProblem, UnassignSmsLineCampaignNotFoundProblem, UnassignSmsLineCampaignResponses, UnassignSmsLineCampaignResult, UnassignSmsLineCampaignServiceUnavailableProblem, UnassignVoiceLineProfileData, UnassignVoiceLineProfileError, UnassignVoiceLineProfileErrors, UnassignVoiceLineProfileForbiddenProblem, UnassignVoiceLineProfileGatewayTimeoutProblem, UnassignVoiceLineProfileInternalServerErrorProblem, UnassignVoiceLineProfileResponses, UnassignVoiceLineProfileResult, UnavailableProjectSlug, UnavailableProjectSlugReason, UpdateAccountBadRequestProblem, UpdateAccountData, UpdateAccountError, UpdateAccountErrors, UpdateAccountForbiddenProblem, UpdateAccountGatewayTimeoutProblem, UpdateAccountInternalServerErrorProblem, UpdateAccountRequest, UpdateAccountResponses, UpdateAccountResult, UpdateAccountUnprocessableEntityProblem, UpdateAgentProfileBadRequestProblem, UpdateAgentProfileData, UpdateAgentProfileError, UpdateAgentProfileErrors, UpdateAgentProfileForbiddenProblem, UpdateAgentProfileGatewayTimeoutProblem, UpdateAgentProfileRequest, UpdateAgentProfileResponses, UpdateAgentProfileResult, UpdateAgentProfileUnprocessableEntityProblem, UpdateDefaultVoiceProfileConflictProblem, UpdateDefaultVoiceProfileData, UpdateDefaultVoiceProfileError, UpdateDefaultVoiceProfileErrors, UpdateDefaultVoiceProfileForbiddenProblem, UpdateDefaultVoiceProfileGatewayTimeoutProblem, UpdateDefaultVoiceProfileInternalServerErrorProblem, UpdateDefaultVoiceProfileRequest, UpdateDefaultVoiceProfileResponses, UpdateDefaultVoiceProfileResult, UpdateOrganizationSsoPolicyBadRequestProblem, UpdateOrganizationSsoPolicyData, UpdateOrganizationSsoPolicyError, UpdateOrganizationSsoPolicyErrors, UpdateOrganizationSsoPolicyForbiddenProblem, UpdateOrganizationSsoPolicyGatewayTimeoutProblem, UpdateOrganizationSsoPolicyInternalServerErrorProblem, UpdateOrganizationSsoPolicyPreconditionFailedProblem, UpdateOrganizationSsoPolicyRequest, UpdateOrganizationSsoPolicyResponses, UpdateOrganizationSsoPolicyResult, UpdateProjectApiKeyBadRequestProblem, UpdateProjectApiKeyData, UpdateProjectApiKeyError, UpdateProjectApiKeyErrors, UpdateProjectApiKeyForbiddenProblem, UpdateProjectApiKeyNotFoundProblem, UpdateProjectApiKeyRequest, UpdateProjectApiKeyResponses, UpdateProjectApiKeyResult, UpdateProjectApiKeyUnprocessableEntityProblem, UpdateProjectBadRequestProblem, UpdateProjectData, UpdateProjectError, UpdateProjectErrors, UpdateProjectForbiddenProblem, UpdateProjectGatewayTimeoutProblem, UpdateProjectRequest, UpdateProjectResponses, UpdateProjectResult, UpdateProjectUnprocessableEntityProblem, UpdateVoiceProfileConflictProblem, UpdateVoiceProfileData, UpdateVoiceProfileError, UpdateVoiceProfileErrors, UpdateVoiceProfileForbiddenProblem, UpdateVoiceProfileGatewayTimeoutProblem, UpdateVoiceProfileInboundConflictProblem, UpdateVoiceProfileInboundData, UpdateVoiceProfileInboundError, UpdateVoiceProfileInboundErrors, UpdateVoiceProfileInboundForbiddenProblem, UpdateVoiceProfileInboundGatewayTimeoutProblem, UpdateVoiceProfileInboundInternalServerErrorProblem, UpdateVoiceProfileInboundRequest, UpdateVoiceProfileInboundResponses, UpdateVoiceProfileInboundResult, UpdateVoiceProfileInternalServerErrorProblem, UpdateVoiceProfileOutboundAuthenticationConflictProblem, UpdateVoiceProfileOutboundAuthenticationData, UpdateVoiceProfileOutboundAuthenticationError, UpdateVoiceProfileOutboundAuthenticationErrors, UpdateVoiceProfileOutboundAuthenticationForbiddenProblem, UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem, UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem, UpdateVoiceProfileOutboundAuthenticationRequest, UpdateVoiceProfileOutboundAuthenticationResponse, UpdateVoiceProfileOutboundAuthenticationResponses, UpdateVoiceProfileOutboundAuthenticationResult, UpdateVoiceProfileRequest, UpdateVoiceProfileResponses, UpdateVoiceProfileResult, UpdateWebhookDestinationBadRequestProblem, UpdateWebhookDestinationData, UpdateWebhookDestinationError, UpdateWebhookDestinationErrors, UpdateWebhookDestinationForbiddenProblem, UpdateWebhookDestinationGatewayTimeoutProblem, UpdateWebhookDestinationRequest, UpdateWebhookDestinationResponses, UpdateWebhookDestinationResult, UpdateWebhookDestinationUnprocessableEntityProblem, UploadAttachmentBadRequestProblem, UploadAttachmentConflictProblem, UploadAttachmentData, UploadAttachmentError, UploadAttachmentErrors, UploadAttachmentForbiddenProblem, UploadAttachmentGatewayTimeoutProblem, UploadAttachmentInternalServerErrorProblem, UploadAttachmentResponses, UploadAttachmentResult, UpstreamFailureProblem, UpstreamTimeoutProblem, UpstreamUnavailableProblem, UsageCharge, UsageChargeFilter, UsageChargeFilterValue, UsageChargeModel, UsageChargePricing, UsageChargeTier, ValidationFailedProblem, ValidationIssue, ValidationLocation, VoiceDefaultProfileAssignmentForbiddenProblem, VoiceDefaultProfileDeletionForbiddenProblem, VoiceDefaultProfileExistsProblem, VoiceDefaultProfileRequiredProblem, VoiceLineProfileAssignment, VoiceLineProfileAssignmentUpdate, VoiceOutboundConfiguredProblem, VoiceOutboundCredentialRotationMode, VoiceOutboundNotConfiguredProblem, VoiceOutboundOperationPendingProblem, VoiceProfile, VoiceProfileConfiguration, VoiceProfileDirectionConfiguredProblem, VoiceProfileInboundConfiguration, VoiceProfileInUseProblem, VoiceProfileMediaEncryption, VoiceProfileNotFoundProblem, VoiceProfilePage, VoiceProfileVersionConflictProblem, WebhookApiVersion, WebhookApiVersionRetirement, WebhookDestination, WebhookDestinationDeletedProblem, WebhookDestinationNotFoundProblem, WebhookDestinationPage, WebhookDestinationStatus, WebhookEgressAddress, WebhookEventSchema, WebhookEventSelection, WebhookEventType, WebhookEventTypeAudience, WebhookEventTypeList, WebhookEventTypeName, WebhookEventWildcard, WhatsappAccountDisconnectingProblem, WhatsappAccountPhoneNumber, WhatsappAccountProvisioningProblem, WhatsappBusinessAccount, WhatsappBusinessAccountAlert, WhatsappBusinessAccountRestriction, WhatsappDisplayNameUnavailableProblem, WhatsappModeDedicatedProblem, WhatsappOutboundCapacity, WhatsappPhoneNumberOwnership, WhatsappRestrictionStatus, WhatsappReviewStatus, WhatsappSenderConnectedProblem, WhatsappSenderProvisioningProblem, WhatsappVerificationCodeNotFoundProblem, WhatsappVerificationWindowExpiredProblem, WhatsappVoipSourceNotEligibleProblem, WhatsappVoipSourceReleasingProblem, WhatsappWabaNotConnectedProblem } from './types.gen.js'; diff --git a/packages/typescript/src/generated/sdk.gen.ts b/packages/typescript/src/generated/sdk.gen.ts index 3561fef..70bb248 100644 --- a/packages/typescript/src/generated/sdk.gen.ts +++ b/packages/typescript/src/generated/sdk.gen.ts @@ -1,8 +1,8 @@ // This file is auto-generated by @hey-api/openapi-ts import type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client/index.js'; -import type { AssignSmsLineCampaignData, AssignSmsLineCampaignErrors, AssignSmsLineCampaignResponses, AssignVoiceLineProfileData, AssignVoiceLineProfileErrors, AssignVoiceLineProfileResponses, BatchUpdateVoiceLineProfileAssignmentsData, BatchUpdateVoiceLineProfileAssignmentsErrors, BatchUpdateVoiceLineProfileAssignmentsResponses, BeginInvitationSsoData, BeginInvitationSsoErrors, BeginInvitationSsoResponses, BeginOrganizationAuthenticationData, BeginOrganizationAuthenticationErrors, BeginOrganizationAuthenticationResponses, BeginOrganizationClosureAuthenticationData, BeginOrganizationClosureAuthenticationErrors, BeginOrganizationClosureAuthenticationResponses, BeginOrganizationSsoAdmissionData, BeginOrganizationSsoAdmissionErrors, BeginOrganizationSsoAdmissionResponses, CancelOperationData, CancelOperationErrors, CancelOperationResponses, CancelSubscriptionData, CancelSubscriptionErrors, CancelSubscriptionResponses, ChangePlanData, ChangePlanErrors, ChangePlanResponses, CheckProjectSlugAvailabilityData, CheckProjectSlugAvailabilityErrors, CheckProjectSlugAvailabilityResponses, CommitAccountProfilePictureData, CommitAccountProfilePictureErrors, CommitAccountProfilePictureResponses, CommitAgentProfileAvatarData, CommitAgentProfileAvatarErrors, CommitAgentProfileAvatarResponses, ConfigureVoiceProfileOutboundData, ConfigureVoiceProfileOutboundErrors, ConfigureVoiceProfileOutboundResponses, ConfirmAccountPhoneVerificationData, ConfirmAccountPhoneVerificationErrors, ConfirmAccountPhoneVerificationResponses, ConnectEmailDomainData, ConnectEmailDomainErrors, ConnectEmailDomainResponses, ConnectTelegramBotData, ConnectTelegramBotErrors, ConnectTelegramBotResponses, ConnectWhatsappBusinessData, ConnectWhatsappBusinessErrors, ConnectWhatsappBusinessResponses, CountProjectsData, CountProjectsErrors, CountProjectsResponses, CreateAccountProfilePictureUploadData, CreateAccountProfilePictureUploadErrors, CreateAccountProfilePictureUploadResponses, CreateAccountServiceKeyData, CreateAccountServiceKeyErrors, CreateAccountServiceKeyResponses, CreateAgentProfileAvatarUploadData, CreateAgentProfileAvatarUploadErrors, CreateAgentProfileAvatarUploadResponses, CreateAppInstallationRequestData, CreateAppInstallationRequestErrors, CreateAppInstallationRequestResponses, CreateDefaultVoiceProfileData, CreateDefaultVoiceProfileErrors, CreateDefaultVoiceProfileResponses, CreateOrganizationPaymentMethodCheckoutData, CreateOrganizationPaymentMethodCheckoutErrors, CreateOrganizationPaymentMethodCheckoutResponses, CreateOrganizationSetupIntentData, CreateOrganizationSetupIntentErrors, CreateOrganizationSetupIntentResponses, CreateOrganizationSsoPortalLinkData, CreateOrganizationSsoPortalLinkErrors, CreateOrganizationSsoPortalLinkResponses, CreateProjectApiKeyData, CreateProjectApiKeyErrors, CreateProjectApiKeyResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSharedLineAssignmentData, CreateSharedLineAssignmentErrors, CreateSharedLineAssignmentResponses, CreateVoiceProfileData, CreateVoiceProfileErrors, CreateVoiceProfileResponses, CreateWebhookDestinationData, CreateWebhookDestinationErrors, CreateWebhookDestinationResponses, CreateWhatsappSharedLineAssignmentData, CreateWhatsappSharedLineAssignmentErrors, CreateWhatsappSharedLineAssignmentResponses, CreateWhatsappVoipSenderData, CreateWhatsappVoipSenderErrors, CreateWhatsappVoipSenderResponses, DeleteAccountData, DeleteAccountErrors, DeleteAccountResponses, DeleteProjectData, DeleteProjectErrors, DeleteProjectResponses, DeleteVoiceProfileData, DeleteVoiceProfileErrors, DeleteVoiceProfileInboundData, DeleteVoiceProfileInboundErrors, DeleteVoiceProfileInboundResponses, DeleteVoiceProfileOutboundData, DeleteVoiceProfileOutboundErrors, DeleteVoiceProfileOutboundResponses, DeleteVoiceProfileResponses, DeleteWebhookDestinationData, DeleteWebhookDestinationErrors, DeleteWebhookDestinationResponses, DeviceAuthorizeData, DeviceAuthorizeErrors, DeviceAuthorizeResponses, DeviceTokenData, DeviceTokenErrors, DeviceTokenResponses, DisconnectWhatsappBusinessAccountData, DisconnectWhatsappBusinessAccountErrors, DisconnectWhatsappBusinessAccountResponses, DownloadAttachmentData, DownloadAttachmentErrors, DownloadAttachmentResponses, GetAccountData, GetAccountErrors, GetAccountResponses, GetAgentProfileData, GetAgentProfileErrors, GetAgentProfileResponses, GetAttachmentData, GetAttachmentErrors, GetAttachmentResponses, GetBillingOperationData, GetBillingOperationErrors, GetBillingOperationResponses, GetBillingOverviewData, GetBillingOverviewErrors, GetBillingOverviewResponses, GetDefaultVoiceProfileData, GetDefaultVoiceProfileErrors, GetDefaultVoiceProfileResponses, GetMessageMetricsBackfillData, GetMessageMetricsBackfillErrors, GetMessageMetricsBackfillResponses, GetMessageMetricsSqlSchemaData, GetMessageMetricsSqlSchemaErrors, GetMessageMetricsSqlSchemaResponses, GetOperationData, GetOperationErrors, GetOperationResponses, GetOrganizationBillingOverviewData, GetOrganizationBillingOverviewErrors, GetOrganizationBillingOverviewResponses, GetOrganizationConnectionStatusData, GetOrganizationConnectionStatusErrors, GetOrganizationConnectionStatusResponses, GetOrganizationPaymentMethodData, GetOrganizationPaymentMethodErrors, GetOrganizationPaymentMethodResponses, GetOrganizationSsoConfigurationData, GetOrganizationSsoConfigurationErrors, GetOrganizationSsoConfigurationResponses, GetProjectClosureStatusData, GetProjectClosureStatusErrors, GetProjectClosureStatusResponses, GetProjectData, GetProjectErrors, GetProjectImessagePlatformData, GetProjectImessagePlatformErrors, GetProjectImessagePlatformResponses, GetProjectResponses, GetProjectWhatsappPlatformData, GetProjectWhatsappPlatformErrors, GetProjectWhatsappPlatformResponses, GetResourceData, GetResourceErrors, GetResourceResponses, GetSharedLineAssignmentData, GetSharedLineAssignmentErrors, GetSharedLineAssignmentResponses, GetSmsLineCampaignAssignmentData, GetSmsLineCampaignAssignmentErrors, GetSmsLineCampaignAssignmentResponses, GetVoiceLineProfileAssignmentData, GetVoiceLineProfileAssignmentErrors, GetVoiceLineProfileAssignmentResponses, GetVoiceProfileData, GetVoiceProfileErrors, GetVoiceProfileResponses, GetWebhookDestinationData, GetWebhookDestinationErrors, GetWebhookDestinationResponses, GetWebhookEventSchemaData, GetWebhookEventSchemaErrors, GetWebhookEventSchemaResponses, GetWhatsappBusinessAccountData, GetWhatsappBusinessAccountErrors, GetWhatsappBusinessAccountResponses, GetWhatsappBusinessVerificationCodeData, GetWhatsappBusinessVerificationCodeErrors, GetWhatsappBusinessVerificationCodeResponses, GetWhatsappSharedLineAssignmentData, GetWhatsappSharedLineAssignmentErrors, GetWhatsappSharedLineAssignmentResponses, GetWhatsappSignupConfigData, GetWhatsappSignupConfigErrors, GetWhatsappSignupConfigResponses, ListAccountServiceKeysData, ListAccountServiceKeysErrors, ListAccountServiceKeysResponses, ListAttachmentsData, ListAttachmentsErrors, ListAttachmentsResponses, ListAuthorizedApplicationsData, ListAuthorizedApplicationsErrors, ListAuthorizedApplicationsResponses, ListBillingPlansData, ListBillingPlansErrors, ListBillingPlansResponses, ListInvoicesData, ListInvoicesErrors, ListInvoicesResponses, ListNumberAreaCodesData, ListNumberAreaCodesErrors, ListNumberAreaCodesResponses, ListNumberCountriesData, ListNumberCountriesErrors, ListNumberCountriesResponses, ListOauthScopesData, ListOauthScopesErrors, ListOauthScopesResponses, ListOperationsData, ListOperationsErrors, ListOperationsResponses, ListProjectApiKeysData, ListProjectApiKeysErrors, ListProjectApiKeysResponses, ListProjectPlatformsData, ListProjectPlatformsErrors, ListProjectPlatformsResponses, ListProjectsData, ListProjectsErrors, ListProjectsResponses, ListResourcesData, ListResourcesErrors, ListResourcesResponses, ListSharedLineAssignmentsData, ListSharedLineAssignmentsErrors, ListSharedLineAssignmentsResponses, ListVoiceProfilesData, ListVoiceProfilesErrors, ListVoiceProfilesResponses, ListWebhookApiVersionsData, ListWebhookApiVersionsErrors, ListWebhookApiVersionsResponses, ListWebhookDestinationsData, ListWebhookDestinationsErrors, ListWebhookDestinationsResponses, ListWebhookEgressAddressesData, ListWebhookEgressAddressesErrors, ListWebhookEgressAddressesResponses, ListWebhookEventTypesData, ListWebhookEventTypesErrors, ListWebhookEventTypesResponses, ListWhatsappAccountPhoneNumbersData, ListWhatsappAccountPhoneNumbersErrors, ListWhatsappAccountPhoneNumbersResponses, ListWhatsappSharedLineAssignmentsData, ListWhatsappSharedLineAssignmentsErrors, ListWhatsappSharedLineAssignmentsResponses, ProvisionImessageDedicatedLineData, ProvisionImessageDedicatedLineErrors, ProvisionImessageDedicatedLineResponses, ProvisionWhatsappDedicatedLineData, ProvisionWhatsappDedicatedLineErrors, ProvisionWhatsappDedicatedLineResponses, PurchaseSmsNumberData, PurchaseSmsNumberErrors, PurchaseSmsNumberResponses, QueryMessageMetricsData, QueryMessageMetricsErrors, QueryMessageMetricsResponses, RedeemAppInstallationDeliveryData, RedeemAppInstallationDeliveryErrors, RedeemAppInstallationDeliveryResponses, RefreshOrganizationSsoConnectionData, RefreshOrganizationSsoConnectionErrors, RefreshOrganizationSsoConnectionResponses, ReleaseImessageDedicatedLineData, ReleaseImessageDedicatedLineErrors, ReleaseImessageDedicatedLineResponses, ReleaseResourceData, ReleaseResourceErrors, ReleaseResourceResponses, ReleaseSharedLineAssignmentData, ReleaseSharedLineAssignmentErrors, ReleaseSharedLineAssignmentResponses, ReleaseWhatsappDedicatedLineData, ReleaseWhatsappDedicatedLineErrors, ReleaseWhatsappDedicatedLineResponses, ReleaseWhatsappSharedLineAssignmentData, ReleaseWhatsappSharedLineAssignmentErrors, ReleaseWhatsappSharedLineAssignmentResponses, ReplaceVoiceProfileInboundData, ReplaceVoiceProfileInboundErrors, ReplaceVoiceProfileInboundResponses, ResetAccountProfilePictureData, ResetAccountProfilePictureErrors, ResetAccountProfilePictureResponses, ResetAgentProfileAvatarData, ResetAgentProfileAvatarErrors, ResetAgentProfileAvatarResponses, ResumeSubscriptionData, ResumeSubscriptionErrors, ResumeSubscriptionResponses, RetryOrganizationConnectionSyncData, RetryOrganizationConnectionSyncErrors, RetryOrganizationConnectionSyncResponses, RevokeAccountServiceKeyData, RevokeAccountServiceKeyErrors, RevokeAccountServiceKeyResponses, RevokeAuthorizedApplicationData, RevokeAuthorizedApplicationErrors, RevokeAuthorizedApplicationResponses, RevokeProjectApiKeyData, RevokeProjectApiKeyErrors, RevokeProjectApiKeyResponses, RotateVoiceProfileOutboundCredentialData, RotateVoiceProfileOutboundCredentialErrors, RotateVoiceProfileOutboundCredentialResponses, RotateWebhookSigningSecretData, RotateWebhookSigningSecretErrors, RotateWebhookSigningSecretResponses, StartAccountPhoneVerificationData, StartAccountPhoneVerificationErrors, StartAccountPhoneVerificationResponses, StartEnterpriseLoginData, StartEnterpriseLoginErrors, StartEnterpriseLoginResponses, UnassignSmsLineCampaignData, UnassignSmsLineCampaignErrors, UnassignSmsLineCampaignResponses, UnassignVoiceLineProfileData, UnassignVoiceLineProfileErrors, UnassignVoiceLineProfileResponses, UpdateAccountData, UpdateAccountErrors, UpdateAccountResponses, UpdateAgentProfileData, UpdateAgentProfileErrors, UpdateAgentProfileResponses, UpdateDefaultVoiceProfileData, UpdateDefaultVoiceProfileErrors, UpdateDefaultVoiceProfileResponses, UpdateOrganizationSsoPolicyData, UpdateOrganizationSsoPolicyErrors, UpdateOrganizationSsoPolicyResponses, UpdateProjectApiKeyData, UpdateProjectApiKeyErrors, UpdateProjectApiKeyResponses, UpdateProjectData, UpdateProjectErrors, UpdateProjectResponses, UpdateVoiceProfileData, UpdateVoiceProfileErrors, UpdateVoiceProfileInboundData, UpdateVoiceProfileInboundErrors, UpdateVoiceProfileInboundResponses, UpdateVoiceProfileOutboundAuthenticationData, UpdateVoiceProfileOutboundAuthenticationErrors, UpdateVoiceProfileOutboundAuthenticationResponses, UpdateVoiceProfileResponses, UpdateWebhookDestinationData, UpdateWebhookDestinationErrors, UpdateWebhookDestinationResponses, UploadAttachmentData, UploadAttachmentErrors, UploadAttachmentResponses } from './types.gen.js'; -import { zAssignSmsLineCampaignResult, zAssignVoiceLineProfileResult, zBatchUpdateVoiceLineProfileAssignmentsResult, zBeginInvitationSsoResult, zBeginOrganizationAuthenticationResult, zBeginOrganizationClosureAuthenticationResult, zBeginOrganizationSsoAdmissionResult, zCancelOperationResult, zCancelSubscriptionResult, zChangePlanResult, zCheckProjectSlugAvailabilityResult, zCommitAccountProfilePictureResult, zCommitAgentProfileAvatarResult, zConfigureVoiceProfileOutboundResult, zConfirmAccountPhoneVerificationResult, zConnectEmailDomainResult, zConnectTelegramBotResult, zConnectWhatsappBusinessResult, zCountProjectsResult, zCreateAccountProfilePictureUploadResult, zCreateAccountServiceKeyResult, zCreateAgentProfileAvatarUploadResult, zCreateAppInstallationRequestResult, zCreateDefaultVoiceProfileResult, zCreateOrganizationPaymentMethodCheckoutResult, zCreateOrganizationSetupIntentResult, zCreateOrganizationSsoPortalLinkResult, zCreateProjectApiKeyResult, zCreateProjectResult, zCreateSharedLineAssignmentResult, zCreateVoiceProfileResult, zCreateWebhookDestinationResult, zCreateWhatsappSharedLineAssignmentResult, zCreateWhatsappVoipSenderResult, zDeleteAccountResult, zDeleteProjectResult, zDeleteVoiceProfileInboundResult, zDeleteVoiceProfileOutboundResult, zDeleteVoiceProfileResult, zDeleteWebhookDestinationResult, zDeviceAuthorizeResult, zDeviceTokenResult, zDisconnectWhatsappBusinessAccountResult, zDownloadAttachmentResult, zGetAccountResult, zGetAgentProfileResult, zGetAttachmentResult, zGetBillingOperationResult, zGetBillingOverviewResult, zGetDefaultVoiceProfileResult, zGetMessageMetricsBackfillResult, zGetMessageMetricsSqlSchemaResult, zGetOperationResult, zGetOrganizationBillingOverviewResult, zGetOrganizationConnectionStatusResult, zGetOrganizationPaymentMethodResult, zGetOrganizationSsoConfigurationResult, zGetProjectClosureStatusResult, zGetProjectImessagePlatformResult, zGetProjectResult, zGetProjectWhatsappPlatformResult, zGetResourceResult, zGetSharedLineAssignmentResult, zGetSmsLineCampaignAssignmentResult, zGetVoiceLineProfileAssignmentResult, zGetVoiceProfileResult, zGetWebhookDestinationResult, zGetWebhookEventSchemaResult, zGetWhatsappBusinessAccountResult, zGetWhatsappBusinessVerificationCodeResult, zGetWhatsappSharedLineAssignmentResult, zGetWhatsappSignupConfigResult, zListAccountServiceKeysResult, zListAttachmentsResult, zListAuthorizedApplicationsResult, zListBillingPlansResult, zListInvoicesResult, zListNumberAreaCodesResult, zListNumberCountriesResult, zListOauthScopesResult, zListOperationsResult, zListProjectApiKeysResult, zListProjectPlatformsResult, zListProjectsResult, zListResourcesResult, zListSharedLineAssignmentsResult, zListVoiceProfilesResult, zListWebhookApiVersionsResult, zListWebhookDestinationsResult, zListWebhookEgressAddressesResult, zListWebhookEventTypesResult, zListWhatsappAccountPhoneNumbersResult, zListWhatsappSharedLineAssignmentsResult, zProvisionImessageDedicatedLineResult, zProvisionWhatsappDedicatedLineResult, zPurchaseSmsNumberResult, zQueryMessageMetricsResult, zRedeemAppInstallationDeliveryResult, zRefreshOrganizationSsoConnectionResult, zReleaseImessageDedicatedLineResult, zReleaseResourceResult, zReleaseSharedLineAssignmentResult, zReleaseWhatsappDedicatedLineResult, zReleaseWhatsappSharedLineAssignmentResult, zReplaceVoiceProfileInboundResult, zResetAccountProfilePictureResult, zResetAgentProfileAvatarResult, zResumeSubscriptionResult, zRetryOrganizationConnectionSyncResult, zRevokeAccountServiceKeyResult, zRevokeAuthorizedApplicationResult, zRevokeProjectApiKeyResult, zRotateVoiceProfileOutboundCredentialResult, zRotateWebhookSigningSecretResult, zStartAccountPhoneVerificationResult, zStartEnterpriseLoginResult, zUnassignSmsLineCampaignResult, zUnassignVoiceLineProfileResult, zUpdateAccountResult, zUpdateAgentProfileResult, zUpdateDefaultVoiceProfileResult, zUpdateOrganizationSsoPolicyResult, zUpdateProjectApiKeyResult, zUpdateProjectResult, zUpdateVoiceProfileInboundResult, zUpdateVoiceProfileOutboundAuthenticationResult, zUpdateVoiceProfileResult, zUpdateWebhookDestinationResult, zUploadAttachmentResult } from './zod.gen.js'; +import type { AssignSmsLineCampaignData, AssignSmsLineCampaignErrors, AssignSmsLineCampaignResponses, AssignVoiceLineProfileData, AssignVoiceLineProfileErrors, AssignVoiceLineProfileResponses, BatchUpdateVoiceLineProfileAssignmentsData, BatchUpdateVoiceLineProfileAssignmentsErrors, BatchUpdateVoiceLineProfileAssignmentsResponses, BeginInvitationSsoData, BeginInvitationSsoErrors, BeginInvitationSsoResponses, BeginOrganizationAuthenticationData, BeginOrganizationAuthenticationErrors, BeginOrganizationAuthenticationResponses, BeginOrganizationClosureAuthenticationData, BeginOrganizationClosureAuthenticationErrors, BeginOrganizationClosureAuthenticationResponses, BeginOrganizationSsoAdmissionData, BeginOrganizationSsoAdmissionErrors, BeginOrganizationSsoAdmissionResponses, CancelOperationData, CancelOperationErrors, CancelOperationResponses, CancelSubscriptionData, CancelSubscriptionErrors, CancelSubscriptionResponses, ChangePlanData, ChangePlanErrors, ChangePlanResponses, CheckProjectSlugAvailabilityData, CheckProjectSlugAvailabilityErrors, CheckProjectSlugAvailabilityResponses, CommitAccountProfilePictureData, CommitAccountProfilePictureErrors, CommitAccountProfilePictureResponses, CommitAgentProfileAvatarData, CommitAgentProfileAvatarErrors, CommitAgentProfileAvatarResponses, ConfigureVoiceProfileOutboundData, ConfigureVoiceProfileOutboundErrors, ConfigureVoiceProfileOutboundResponses, ConfirmAccountPhoneVerificationData, ConfirmAccountPhoneVerificationErrors, ConfirmAccountPhoneVerificationResponses, ConnectEmailDomainData, ConnectEmailDomainErrors, ConnectEmailDomainResponses, ConnectTelegramBotData, ConnectTelegramBotErrors, ConnectTelegramBotResponses, ConnectWhatsappBusinessData, ConnectWhatsappBusinessErrors, ConnectWhatsappBusinessResponses, CountProjectsData, CountProjectsErrors, CountProjectsResponses, CreateAccountProfilePictureUploadData, CreateAccountProfilePictureUploadErrors, CreateAccountProfilePictureUploadResponses, CreateAccountServiceKeyData, CreateAccountServiceKeyErrors, CreateAccountServiceKeyResponses, CreateAgentProfileAvatarUploadData, CreateAgentProfileAvatarUploadErrors, CreateAgentProfileAvatarUploadResponses, CreateAppInstallationRequestData, CreateAppInstallationRequestErrors, CreateAppInstallationRequestResponses, CreateDefaultVoiceProfileData, CreateDefaultVoiceProfileErrors, CreateDefaultVoiceProfileResponses, CreateOrganizationPaymentMethodCheckoutData, CreateOrganizationPaymentMethodCheckoutErrors, CreateOrganizationPaymentMethodCheckoutResponses, CreateOrganizationSetupIntentData, CreateOrganizationSetupIntentErrors, CreateOrganizationSetupIntentResponses, CreateOrganizationSsoPortalLinkData, CreateOrganizationSsoPortalLinkErrors, CreateOrganizationSsoPortalLinkResponses, CreateProjectApiKeyData, CreateProjectApiKeyErrors, CreateProjectApiKeyResponses, CreateProjectData, CreateProjectErrors, CreateProjectResponses, CreateSharedLineAssignmentData, CreateSharedLineAssignmentErrors, CreateSharedLineAssignmentResponses, CreateVoiceProfileData, CreateVoiceProfileErrors, CreateVoiceProfileResponses, CreateWebhookDestinationData, CreateWebhookDestinationErrors, CreateWebhookDestinationResponses, CreateWhatsappSharedLineAssignmentData, CreateWhatsappSharedLineAssignmentErrors, CreateWhatsappSharedLineAssignmentResponses, CreateWhatsappVoipSenderData, CreateWhatsappVoipSenderErrors, CreateWhatsappVoipSenderResponses, DeleteAccountData, DeleteAccountErrors, DeleteAccountResponses, DeleteProjectData, DeleteProjectErrors, DeleteProjectResponses, DeleteVoiceProfileData, DeleteVoiceProfileErrors, DeleteVoiceProfileInboundData, DeleteVoiceProfileInboundErrors, DeleteVoiceProfileInboundResponses, DeleteVoiceProfileOutboundData, DeleteVoiceProfileOutboundErrors, DeleteVoiceProfileOutboundResponses, DeleteVoiceProfileResponses, DeleteWebhookDestinationData, DeleteWebhookDestinationErrors, DeleteWebhookDestinationResponses, DeviceAuthorizeData, DeviceAuthorizeErrors, DeviceAuthorizeResponses, DeviceTokenData, DeviceTokenErrors, DeviceTokenResponses, DisableOrganizationSsoData, DisableOrganizationSsoErrors, DisableOrganizationSsoResponses, DisconnectWhatsappBusinessAccountData, DisconnectWhatsappBusinessAccountErrors, DisconnectWhatsappBusinessAccountResponses, DownloadAttachmentData, DownloadAttachmentErrors, DownloadAttachmentResponses, GetAccountData, GetAccountErrors, GetAccountResponses, GetAgentProfileData, GetAgentProfileErrors, GetAgentProfileResponses, GetAttachmentData, GetAttachmentErrors, GetAttachmentResponses, GetBillingOperationData, GetBillingOperationErrors, GetBillingOperationResponses, GetBillingOverviewData, GetBillingOverviewErrors, GetBillingOverviewResponses, GetDefaultVoiceProfileData, GetDefaultVoiceProfileErrors, GetDefaultVoiceProfileResponses, GetMessageMetricsBackfillData, GetMessageMetricsBackfillErrors, GetMessageMetricsBackfillResponses, GetMessageMetricsSqlSchemaData, GetMessageMetricsSqlSchemaErrors, GetMessageMetricsSqlSchemaResponses, GetOperationData, GetOperationErrors, GetOperationResponses, GetOrganizationBillingOverviewData, GetOrganizationBillingOverviewErrors, GetOrganizationBillingOverviewResponses, GetOrganizationConnectionStatusData, GetOrganizationConnectionStatusErrors, GetOrganizationConnectionStatusResponses, GetOrganizationPaymentMethodData, GetOrganizationPaymentMethodErrors, GetOrganizationPaymentMethodResponses, GetOrganizationSsoConfigurationData, GetOrganizationSsoConfigurationErrors, GetOrganizationSsoConfigurationResponses, GetProjectClosureStatusData, GetProjectClosureStatusErrors, GetProjectClosureStatusResponses, GetProjectData, GetProjectErrors, GetProjectImessagePlatformData, GetProjectImessagePlatformErrors, GetProjectImessagePlatformResponses, GetProjectResponses, GetProjectWhatsappPlatformData, GetProjectWhatsappPlatformErrors, GetProjectWhatsappPlatformResponses, GetResourceData, GetResourceErrors, GetResourceResponses, GetSharedLineAssignmentData, GetSharedLineAssignmentErrors, GetSharedLineAssignmentResponses, GetSmsLineCampaignAssignmentData, GetSmsLineCampaignAssignmentErrors, GetSmsLineCampaignAssignmentResponses, GetVoiceLineProfileAssignmentData, GetVoiceLineProfileAssignmentErrors, GetVoiceLineProfileAssignmentResponses, GetVoiceProfileData, GetVoiceProfileErrors, GetVoiceProfileResponses, GetWebhookDestinationData, GetWebhookDestinationErrors, GetWebhookDestinationResponses, GetWebhookEventSchemaData, GetWebhookEventSchemaErrors, GetWebhookEventSchemaResponses, GetWhatsappBusinessAccountData, GetWhatsappBusinessAccountErrors, GetWhatsappBusinessAccountResponses, GetWhatsappBusinessVerificationCodeData, GetWhatsappBusinessVerificationCodeErrors, GetWhatsappBusinessVerificationCodeResponses, GetWhatsappSharedLineAssignmentData, GetWhatsappSharedLineAssignmentErrors, GetWhatsappSharedLineAssignmentResponses, GetWhatsappSignupConfigData, GetWhatsappSignupConfigErrors, GetWhatsappSignupConfigResponses, ListAccountServiceKeysData, ListAccountServiceKeysErrors, ListAccountServiceKeysResponses, ListAttachmentsData, ListAttachmentsErrors, ListAttachmentsResponses, ListAuthorizedApplicationsData, ListAuthorizedApplicationsErrors, ListAuthorizedApplicationsResponses, ListBillingPlansData, ListBillingPlansErrors, ListBillingPlansResponses, ListInvoicesData, ListInvoicesErrors, ListInvoicesResponses, ListNumberAreaCodesData, ListNumberAreaCodesErrors, ListNumberAreaCodesResponses, ListNumberCountriesData, ListNumberCountriesErrors, ListNumberCountriesResponses, ListOauthScopesData, ListOauthScopesErrors, ListOauthScopesResponses, ListOperationsData, ListOperationsErrors, ListOperationsResponses, ListProjectApiKeysData, ListProjectApiKeysErrors, ListProjectApiKeysResponses, ListProjectPlatformsData, ListProjectPlatformsErrors, ListProjectPlatformsResponses, ListProjectsData, ListProjectsErrors, ListProjectsResponses, ListResourcesData, ListResourcesErrors, ListResourcesResponses, ListSharedLineAssignmentsData, ListSharedLineAssignmentsErrors, ListSharedLineAssignmentsResponses, ListVoiceProfilesData, ListVoiceProfilesErrors, ListVoiceProfilesResponses, ListWebhookApiVersionsData, ListWebhookApiVersionsErrors, ListWebhookApiVersionsResponses, ListWebhookDestinationsData, ListWebhookDestinationsErrors, ListWebhookDestinationsResponses, ListWebhookEgressAddressesData, ListWebhookEgressAddressesErrors, ListWebhookEgressAddressesResponses, ListWebhookEventTypesData, ListWebhookEventTypesErrors, ListWebhookEventTypesResponses, ListWhatsappAccountPhoneNumbersData, ListWhatsappAccountPhoneNumbersErrors, ListWhatsappAccountPhoneNumbersResponses, ListWhatsappSharedLineAssignmentsData, ListWhatsappSharedLineAssignmentsErrors, ListWhatsappSharedLineAssignmentsResponses, ProvisionImessageDedicatedLineData, ProvisionImessageDedicatedLineErrors, ProvisionImessageDedicatedLineResponses, ProvisionWhatsappDedicatedLineData, ProvisionWhatsappDedicatedLineErrors, ProvisionWhatsappDedicatedLineResponses, PurchaseSmsNumberData, PurchaseSmsNumberErrors, PurchaseSmsNumberResponses, QueryMessageMetricsData, QueryMessageMetricsErrors, QueryMessageMetricsResponses, RedeemAppInstallationDeliveryData, RedeemAppInstallationDeliveryErrors, RedeemAppInstallationDeliveryResponses, RefreshOrganizationSsoConnectionData, RefreshOrganizationSsoConnectionErrors, RefreshOrganizationSsoConnectionResponses, ReleaseImessageDedicatedLineData, ReleaseImessageDedicatedLineErrors, ReleaseImessageDedicatedLineResponses, ReleaseResourceData, ReleaseResourceErrors, ReleaseResourceResponses, ReleaseSharedLineAssignmentData, ReleaseSharedLineAssignmentErrors, ReleaseSharedLineAssignmentResponses, ReleaseWhatsappDedicatedLineData, ReleaseWhatsappDedicatedLineErrors, ReleaseWhatsappDedicatedLineResponses, ReleaseWhatsappSharedLineAssignmentData, ReleaseWhatsappSharedLineAssignmentErrors, ReleaseWhatsappSharedLineAssignmentResponses, ReplaceVoiceProfileInboundData, ReplaceVoiceProfileInboundErrors, ReplaceVoiceProfileInboundResponses, ResetAccountProfilePictureData, ResetAccountProfilePictureErrors, ResetAccountProfilePictureResponses, ResetAgentProfileAvatarData, ResetAgentProfileAvatarErrors, ResetAgentProfileAvatarResponses, ResumeSubscriptionData, ResumeSubscriptionErrors, ResumeSubscriptionResponses, RetryOrganizationConnectionSyncData, RetryOrganizationConnectionSyncErrors, RetryOrganizationConnectionSyncResponses, RevokeAccountServiceKeyData, RevokeAccountServiceKeyErrors, RevokeAccountServiceKeyResponses, RevokeAuthorizedApplicationData, RevokeAuthorizedApplicationErrors, RevokeAuthorizedApplicationResponses, RevokeProjectApiKeyData, RevokeProjectApiKeyErrors, RevokeProjectApiKeyResponses, RotateVoiceProfileOutboundCredentialData, RotateVoiceProfileOutboundCredentialErrors, RotateVoiceProfileOutboundCredentialResponses, RotateWebhookSigningSecretData, RotateWebhookSigningSecretErrors, RotateWebhookSigningSecretResponses, StartAccountPhoneVerificationData, StartAccountPhoneVerificationErrors, StartAccountPhoneVerificationResponses, StartEnterpriseLoginData, StartEnterpriseLoginErrors, StartEnterpriseLoginResponses, UnassignSmsLineCampaignData, UnassignSmsLineCampaignErrors, UnassignSmsLineCampaignResponses, UnassignVoiceLineProfileData, UnassignVoiceLineProfileErrors, UnassignVoiceLineProfileResponses, UpdateAccountData, UpdateAccountErrors, UpdateAccountResponses, UpdateAgentProfileData, UpdateAgentProfileErrors, UpdateAgentProfileResponses, UpdateDefaultVoiceProfileData, UpdateDefaultVoiceProfileErrors, UpdateDefaultVoiceProfileResponses, UpdateOrganizationSsoPolicyData, UpdateOrganizationSsoPolicyErrors, UpdateOrganizationSsoPolicyResponses, UpdateProjectApiKeyData, UpdateProjectApiKeyErrors, UpdateProjectApiKeyResponses, UpdateProjectData, UpdateProjectErrors, UpdateProjectResponses, UpdateVoiceProfileData, UpdateVoiceProfileErrors, UpdateVoiceProfileInboundData, UpdateVoiceProfileInboundErrors, UpdateVoiceProfileInboundResponses, UpdateVoiceProfileOutboundAuthenticationData, UpdateVoiceProfileOutboundAuthenticationErrors, UpdateVoiceProfileOutboundAuthenticationResponses, UpdateVoiceProfileResponses, UpdateWebhookDestinationData, UpdateWebhookDestinationErrors, UpdateWebhookDestinationResponses, UploadAttachmentData, UploadAttachmentErrors, UploadAttachmentResponses } from './types.gen.js'; +import { zAssignSmsLineCampaignResult, zAssignVoiceLineProfileResult, zBatchUpdateVoiceLineProfileAssignmentsResult, zBeginInvitationSsoResult, zBeginOrganizationAuthenticationResult, zBeginOrganizationClosureAuthenticationResult, zBeginOrganizationSsoAdmissionResult, zCancelOperationResult, zCancelSubscriptionResult, zChangePlanResult, zCheckProjectSlugAvailabilityResult, zCommitAccountProfilePictureResult, zCommitAgentProfileAvatarResult, zConfigureVoiceProfileOutboundResult, zConfirmAccountPhoneVerificationResult, zConnectEmailDomainResult, zConnectTelegramBotResult, zConnectWhatsappBusinessResult, zCountProjectsResult, zCreateAccountProfilePictureUploadResult, zCreateAccountServiceKeyResult, zCreateAgentProfileAvatarUploadResult, zCreateAppInstallationRequestResult, zCreateDefaultVoiceProfileResult, zCreateOrganizationPaymentMethodCheckoutResult, zCreateOrganizationSetupIntentResult, zCreateOrganizationSsoPortalLinkResult, zCreateProjectApiKeyResult, zCreateProjectResult, zCreateSharedLineAssignmentResult, zCreateVoiceProfileResult, zCreateWebhookDestinationResult, zCreateWhatsappSharedLineAssignmentResult, zCreateWhatsappVoipSenderResult, zDeleteAccountResult, zDeleteProjectResult, zDeleteVoiceProfileInboundResult, zDeleteVoiceProfileOutboundResult, zDeleteVoiceProfileResult, zDeleteWebhookDestinationResult, zDeviceAuthorizeResult, zDeviceTokenResult, zDisableOrganizationSsoResult, zDisconnectWhatsappBusinessAccountResult, zDownloadAttachmentResult, zGetAccountResult, zGetAgentProfileResult, zGetAttachmentResult, zGetBillingOperationResult, zGetBillingOverviewResult, zGetDefaultVoiceProfileResult, zGetMessageMetricsBackfillResult, zGetMessageMetricsSqlSchemaResult, zGetOperationResult, zGetOrganizationBillingOverviewResult, zGetOrganizationConnectionStatusResult, zGetOrganizationPaymentMethodResult, zGetOrganizationSsoConfigurationResult, zGetProjectClosureStatusResult, zGetProjectImessagePlatformResult, zGetProjectResult, zGetProjectWhatsappPlatformResult, zGetResourceResult, zGetSharedLineAssignmentResult, zGetSmsLineCampaignAssignmentResult, zGetVoiceLineProfileAssignmentResult, zGetVoiceProfileResult, zGetWebhookDestinationResult, zGetWebhookEventSchemaResult, zGetWhatsappBusinessAccountResult, zGetWhatsappBusinessVerificationCodeResult, zGetWhatsappSharedLineAssignmentResult, zGetWhatsappSignupConfigResult, zListAccountServiceKeysResult, zListAttachmentsResult, zListAuthorizedApplicationsResult, zListBillingPlansResult, zListInvoicesResult, zListNumberAreaCodesResult, zListNumberCountriesResult, zListOauthScopesResult, zListOperationsResult, zListProjectApiKeysResult, zListProjectPlatformsResult, zListProjectsResult, zListResourcesResult, zListSharedLineAssignmentsResult, zListVoiceProfilesResult, zListWebhookApiVersionsResult, zListWebhookDestinationsResult, zListWebhookEgressAddressesResult, zListWebhookEventTypesResult, zListWhatsappAccountPhoneNumbersResult, zListWhatsappSharedLineAssignmentsResult, zProvisionImessageDedicatedLineResult, zProvisionWhatsappDedicatedLineResult, zPurchaseSmsNumberResult, zQueryMessageMetricsResult, zRedeemAppInstallationDeliveryResult, zRefreshOrganizationSsoConnectionResult, zReleaseImessageDedicatedLineResult, zReleaseResourceResult, zReleaseSharedLineAssignmentResult, zReleaseWhatsappDedicatedLineResult, zReleaseWhatsappSharedLineAssignmentResult, zReplaceVoiceProfileInboundResult, zResetAccountProfilePictureResult, zResetAgentProfileAvatarResult, zResumeSubscriptionResult, zRetryOrganizationConnectionSyncResult, zRevokeAccountServiceKeyResult, zRevokeAuthorizedApplicationResult, zRevokeProjectApiKeyResult, zRotateVoiceProfileOutboundCredentialResult, zRotateWebhookSigningSecretResult, zStartAccountPhoneVerificationResult, zStartEnterpriseLoginResult, zUnassignSmsLineCampaignResult, zUnassignVoiceLineProfileResult, zUpdateAccountResult, zUpdateAgentProfileResult, zUpdateDefaultVoiceProfileResult, zUpdateOrganizationSsoPolicyResult, zUpdateProjectApiKeyResult, zUpdateProjectResult, zUpdateVoiceProfileInboundResult, zUpdateVoiceProfileOutboundAuthenticationResult, zUpdateVoiceProfileResult, zUpdateWebhookDestinationResult, zUploadAttachmentResult } from './zod.gen.js'; export type Options = Options2 & { /** @@ -332,6 +332,21 @@ export const beginOrganizationClosureAuthentication = (options: Options): RequestResult => options.client.post({ + responseValidator: async (data) => await zDisableOrganizationSsoResult.parseAsync(data), + url: '/v1/auth/organizations/{orgId}/sso/disable', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + /** * Authenticate to an invitation's organization SSO connection * @@ -579,6 +594,7 @@ export const listAttachments = (options: O * Uploads a file and returns its Attachment once ready to download. */ export const uploadAttachment = (options: Options): RequestResult => options.client.post({ + bodySerializer: null, responseValidator: async (data) => await zUploadAttachmentResult.parseAsync(data), url: '/v1/projects/{id}/attachments', ...options @@ -694,7 +710,7 @@ export const getSharedLineAssignment = (op /** * Provision dedicated iMessage line * - * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. + * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. */ export const provisionImessageDedicatedLine = (options: Options): RequestResult => options.client.post({ responseValidator: async (data) => await zProvisionImessageDedicatedLineResult.parseAsync(data), @@ -705,7 +721,7 @@ export const provisionImessageDedicatedLine = (options: Options): RequestResult => options.client.delete({ responseValidator: async (data) => await zReleaseImessageDedicatedLineResult.parseAsync(data), @@ -716,7 +732,7 @@ export const releaseImessageDedicatedLine = (options: Options): RequestResult => options.client.get({ responseValidator: async (data) => await zListOperationsResult.parseAsync(data), @@ -727,7 +743,7 @@ export const listOperations = (options: Op /** * Get operation * - * Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. + * Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. */ export const getOperation = (options: Options): RequestResult => options.client.get({ responseValidator: async (data) => await zGetOperationResult.parseAsync(data), @@ -738,7 +754,7 @@ export const getOperation = (options: Opti /** * Cancel operation * - * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. + * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. */ export const cancelOperation = (options: Options): RequestResult => options.client.post({ responseValidator: async (data) => await zCancelOperationResult.parseAsync(data), @@ -793,7 +809,7 @@ export const unassignSmsLineCampaign = (op /** * Read SMS line campaign assignment * - * Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. + * Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. */ export const getSmsLineCampaignAssignment = (options: Options): RequestResult => options.client.get({ responseValidator: async (data) => await zGetSmsLineCampaignAssignmentResult.parseAsync(data), @@ -856,7 +872,7 @@ export const listNumberCountries = (option /** * Connect Telegram bot * - * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. + * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. */ export const connectTelegramBot = (options: Options): RequestResult => options.client.post({ responseValidator: async (data) => await zConnectTelegramBotResult.parseAsync(data), @@ -1268,7 +1284,7 @@ export const getWhatsappSharedLineAssignment = (options: Options): RequestResult => options.client.post({ responseValidator: async (data) => await zProvisionWhatsappDedicatedLineResult.parseAsync(data), @@ -1279,7 +1295,7 @@ export const provisionWhatsappDedicatedLine = (options: Options): RequestResult => options.client.delete({ responseValidator: async (data) => await zReleaseWhatsappDedicatedLineResult.parseAsync(data), @@ -1393,6 +1409,8 @@ export const createAgentProfileAvatarUpload = (options: Options): RequestResult => options.client.get({ responseValidator: async (data) => await zListProjectApiKeysResult.parseAsync(data), @@ -1464,7 +1482,7 @@ export const getBillingOperation = (option }); /** - * List billing plans available to a project + * List available billing plans * * Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan. */ diff --git a/packages/typescript/src/generated/types.gen.ts b/packages/typescript/src/generated/types.gen.ts index 49f8399..78ce23b 100644 --- a/packages/typescript/src/generated/types.gen.ts +++ b/packages/typescript/src/generated/types.gen.ts @@ -4,1517 +4,1293 @@ export type ClientOptions = { baseUrl: 'https://api.photon.codes' | (string & {}); }; -export type AssignSmsLineCampaignRequestApplicationJson = { - campaignId: string; - expectedVersion: number; -}; - -export type AssignSmsLineCampaignResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type AssignSmsLineCampaignResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; +export type Account = { + accountId: string; + createdAt: string | null; + deletedAt: string | null; + email: string; + firstName: string | null; + lastName: string | null; + phoneNumber: string | null; + phoneVerifiedAt: string | null; + pictureUrl: string; + updatedAt: string | null; + [key: string]: unknown; }; -export type AssignSmsLineCampaignResponse400ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_INVALID_REQUEST'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid SMS campaign request'; - type: 'https://photon.codes/docs/problems/sms-campaign-invalid-request'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; +export type AccountDeletedProblem = { + code: 'ACCOUNT_DELETED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; + status: 410; + title: 'Account Deleted'; + type: 'https://photon.codes/docs/problems/account-deleted'; + [key: string]: JsonValue | 'ACCOUNT_DELETED' | string | never | 410 | 'Account Deleted' | 'https://photon.codes/docs/problems/account-deleted' | undefined; }; -export type AssignSmsLineCampaignResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; +export type AccountNotFoundProblem = { + code: 'ACCOUNT_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -} | { - code: 'SMS_CAMPAIGN_ORGANIZATION_MISMATCH'; + status: 404; + title: 'Account Not Found'; + type: 'https://photon.codes/docs/problems/account-not-found'; + [key: string]: JsonValue | 'ACCOUNT_NOT_FOUND' | string | never | 404 | 'Account Not Found' | 'https://photon.codes/docs/problems/account-not-found' | undefined; +}; + +export type AccountOwnsOrganizationsProblem = { + code: 'ACCOUNT_OWNS_ORGANIZATIONS'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Campaign belongs to another organization'; - type: 'https://photon.codes/docs/problems/sms-campaign-organization-mismatch'; + status: 409; + title: 'Account Owns Organizations'; + type: 'https://photon.codes/docs/problems/account-owns-organizations'; + [key: string]: JsonValue | 'ACCOUNT_OWNS_ORGANIZATIONS' | string | never | 409 | 'Account Owns Organizations' | 'https://photon.codes/docs/problems/account-owns-organizations' | undefined; }; -export type AssignSmsLineCampaignResponse404ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_NOT_FOUND'; +export type AccountServiceKey = { + accountId: string; + createdAt: string; + expiresAt: string | null; + name: string; + revokedAt: string | null; + serviceKeyId: string; +}; + +export type AccountServiceKeyLimitReachedProblem = { + code: 'ACCOUNT_SERVICE_KEY_LIMIT_REACHED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 404; - title: 'Campaign not found'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-found'; -} | { - code: 'SMS_LINE_NOT_FOUND'; + status: 409; + title: 'Account Service Key Limit Reached'; + type: 'https://photon.codes/docs/problems/account-service-key-limit-reached'; + [key: string]: JsonValue | 'ACCOUNT_SERVICE_KEY_LIMIT_REACHED' | string | never | 409 | 'Account Service Key Limit Reached' | 'https://photon.codes/docs/problems/account-service-key-limit-reached' | undefined; +}; + +export type AccountServiceKeyNotFoundProblem = { + code: 'ACCOUNT_SERVICE_KEY_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 404; - title: 'SMS line not found'; - type: 'https://photon.codes/docs/problems/sms-line-not-found'; + title: 'Account Service Key Not Found'; + type: 'https://photon.codes/docs/problems/account-service-key-not-found'; + [key: string]: JsonValue | 'ACCOUNT_SERVICE_KEY_NOT_FOUND' | string | never | 404 | 'Account Service Key Not Found' | 'https://photon.codes/docs/problems/account-service-key-not-found' | undefined; }; -export type AssignSmsLineCampaignResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; +export type AgentProfile = { + avatarUrl: string; + firstName: string; + lastName: string | null; +}; + +export type AgentProfileAvatarContentType = 'image/jpeg' | 'image/png' | 'image/webp' | (string & {}); + +export type AgentProfileAvatarUpload = { + expiresAt: string; + formFields: AgentProfileAvatarUploadFormFields; + uploadId: string; + uploadUrl: string; +}; + +export type AgentProfileAvatarUploadFormFields = { + [key: string]: string; +}; + +export type AllWebhookEvents = Array; + +export type ApiKey = { + apiKeyId: string; + createdAt: string; + createdByAccountId: string; + expiresAt: string | null; + name: string; + permissions: Array; + permissionsUpdatedAt: string | null; + projectId: string; + revokedAt: string | null; +}; + +export type ApiKeyLimitReachedProblem = { + code: 'API_KEY_LIMIT_REACHED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'SMS_LINE_UNSUPPORTED'; + title: 'API Key Limit Reached'; + type: 'https://photon.codes/docs/problems/api-key-limit-reached'; + [key: string]: JsonValue | 'API_KEY_LIMIT_REACHED' | string | never | 409 | 'API Key Limit Reached' | 'https://photon.codes/docs/problems/api-key-limit-reached' | undefined; +}; + +export type ApiKeyNotFoundProblem = { + code: 'API_KEY_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 409; - title: 'SMS line unsupported'; - type: 'https://photon.codes/docs/problems/sms-line-unsupported'; -} | { - code: 'SMS_CAMPAIGN_NOT_READY'; + status: 404; + title: 'API Key Not Found'; + type: 'https://photon.codes/docs/problems/api-key-not-found'; + [key: string]: JsonValue | 'API_KEY_NOT_FOUND' | string | never | 404 | 'API Key Not Found' | 'https://photon.codes/docs/problems/api-key-not-found' | undefined; +}; + +export type ApiKeyPermission = 'events:read' | 'events:write' | 'platforms:read' | 'platforms:write' | 'project:read' | 'project:write' | (string & {}); + +export type ApiKeyRevokedProblem = { + code: 'API_KEY_REVOKED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Campaign not ready'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-ready'; -} | { - code: 'SMS_CAMPAIGN_VERSION_CONFLICT'; + title: 'API Key Revoked'; + type: 'https://photon.codes/docs/problems/api-key-revoked'; + [key: string]: JsonValue | 'API_KEY_REVOKED' | string | never | 409 | 'API Key Revoked' | 'https://photon.codes/docs/problems/api-key-revoked' | undefined; +}; + +export type AppInstallationAssertionInvalidProblem = { + code: 'APP_INSTALLATION_ASSERTION_INVALID'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 409; - title: 'Assignment version conflict'; - type: 'https://photon.codes/docs/problems/sms-campaign-version-conflict'; -} | { - code: 'SMS_CAMPAIGN_MUTATION_IN_PROGRESS'; + status: 401; + title: 'Invalid Installation Client Assertion'; + type: 'https://photon.codes/docs/problems/app-installation-assertion-invalid'; + [key: string]: JsonValue | 'APP_INSTALLATION_ASSERTION_INVALID' | string | never | 401 | 'Invalid Installation Client Assertion' | 'https://photon.codes/docs/problems/app-installation-assertion-invalid' | undefined; +}; + +export type AppInstallationAssertionReplayedProblem = { + code: 'APP_INSTALLATION_ASSERTION_REPLAYED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Assignment mutation in progress'; - type: 'https://photon.codes/docs/problems/sms-campaign-mutation-in-progress'; -} | { - code: 'SMS_CAMPAIGN_CAPACITY_EXCEEDED'; + title: 'Installation Assertion Already Used'; + type: 'https://photon.codes/docs/problems/app-installation-assertion-replayed'; + [key: string]: JsonValue | 'APP_INSTALLATION_ASSERTION_REPLAYED' | string | never | 409 | 'Installation Assertion Already Used' | 'https://photon.codes/docs/problems/app-installation-assertion-replayed' | undefined; +}; + +export type AppInstallationConfigChangedProblem = { + code: 'APP_INSTALLATION_CONFIG_CHANGED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Campaign number capacity exhausted'; - type: 'https://photon.codes/docs/problems/sms-campaign-capacity-exceeded'; -} | { - code: 'SMS_CAMPAIGN_RECONCILIATION_REQUIRED'; + title: 'Installation App Configuration Changed'; + type: 'https://photon.codes/docs/problems/app-installation-config-changed'; + [key: string]: JsonValue | 'APP_INSTALLATION_CONFIG_CHANGED' | string | never | 409 | 'Installation App Configuration Changed' | 'https://photon.codes/docs/problems/app-installation-config-changed' | undefined; +}; + +export type AppInstallationDeliveryUnavailableProblem = { + code: 'APP_INSTALLATION_DELIVERY_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Campaign reconciliation required'; - type: 'https://photon.codes/docs/problems/sms-campaign-reconciliation-required'; + title: 'Installation Delivery Unavailable'; + type: 'https://photon.codes/docs/problems/app-installation-delivery-unavailable'; + [key: string]: JsonValue | 'APP_INSTALLATION_DELIVERY_UNAVAILABLE' | string | never | 409 | 'Installation Delivery Unavailable' | 'https://photon.codes/docs/problems/app-installation-delivery-unavailable' | undefined; }; -export type AssignSmsLineCampaignResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; +export type AssignSmsLineCampaignBadRequestProblem = SmsCampaignInvalidRequestProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type AssignSmsLineCampaignConflictProblem = ProjectClosingProblem | SmsLineUnsupportedProblem | SmsCampaignNotReadyProblem | SmsCampaignVersionConflictProblem | SmsCampaignCapacityExceededProblem | SmsCampaignReconciliationRequiredProblem | SmsCampaignMutationInProgressProblem; + +export type AssignSmsLineCampaignForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem | SmsCampaignOrganizationMismatchProblem; + +export type AssignSmsLineCampaignGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type AssignSmsLineCampaignInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type AssignSmsLineCampaignNotFoundProblem = SmsCampaignNotFoundProblem | SmsLineNotFoundProblem; + +export type AssignSmsLineCampaignRequest = { + campaignId: string; + expectedVersion: number; +}; + +export type AssignSmsLineCampaignServiceUnavailableProblem = SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem; + +export type AssignVoiceLineProfileConflictProblem = ProjectClosingProblem | VoiceDefaultProfileAssignmentForbiddenProblem | VoiceProfileVersionConflictProblem; + +export type AssignVoiceLineProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type AssignVoiceLineProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type AssignVoiceLineProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type AssignVoiceLineProfileNotFoundProblem = ResourceNotFoundProblem | VoiceProfileNotFoundProblem; + +export type AssignVoiceLineProfileRequest = { + expectedVersion: number; + profileId: string; +}; + +export type AssignmentExistsProblem = { + code: 'ASSIGNMENT_EXISTS'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; + status: 409; + title: 'Assignment Exists'; + type: 'https://photon.codes/docs/problems/assignment-exists'; + [key: string]: JsonValue | 'ASSIGNMENT_EXISTS' | string | never | 409 | 'Assignment Exists' | 'https://photon.codes/docs/problems/assignment-exists' | undefined; }; -export type AssignSmsLineCampaignResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; +export type AssignmentNotFoundProblem = { + code: 'ASSIGNMENT_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; + status: 404; + title: 'Assignment Not Found'; + type: 'https://photon.codes/docs/problems/assignment-not-found'; + [key: string]: JsonValue | 'ASSIGNMENT_NOT_FOUND' | string | never | 404 | 'Assignment Not Found' | 'https://photon.codes/docs/problems/assignment-not-found' | undefined; }; -export type AssignSmsLineCampaignResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; +export type Attachment = { + contentType: string; + createdAt: string; + filename?: string; + id: string; + metadata?: { + [key: string]: unknown; + }; + projectId: string; + sizeBytes: number; + updatedAt: string; +}; + +export type AttachmentConflictProblem = { + code: 'ATTACHMENT_CONFLICT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; + status: 409; + title: 'Attachment Conflict'; + type: 'https://photon.codes/docs/problems/attachment-conflict'; + [key: string]: JsonValue | 'ATTACHMENT_CONFLICT' | string | never | 409 | 'Attachment Conflict' | 'https://photon.codes/docs/problems/attachment-conflict' | undefined; }; -export type AssignSmsLineCampaignResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type AttachmentNotFoundProblem = { + code: 'ATTACHMENT_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 404; + title: 'Attachment Not Found'; + type: 'https://photon.codes/docs/problems/attachment-not-found'; + [key: string]: JsonValue | 'ATTACHMENT_NOT_FOUND' | string | never | 404 | 'Attachment Not Found' | 'https://photon.codes/docs/problems/attachment-not-found' | undefined; }; -export type AssignSmsLineCampaignResponse503ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'; +export type AttachmentNotReadyProblem = { + code: 'ATTACHMENT_NOT_READY'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Campaign context unavailable'; - type: 'https://photon.codes/docs/problems/sms-campaign-context-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 409; + title: 'Attachment Not Ready'; + type: 'https://photon.codes/docs/problems/attachment-not-ready'; + [key: string]: JsonValue | 'ATTACHMENT_NOT_READY' | string | never | 409 | 'Attachment Not Ready' | 'https://photon.codes/docs/problems/attachment-not-ready' | undefined; }; -export type AssignSmsLineCampaignResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; +export type AttachmentNotReadyRetryAfter = '5'; + +export type AttachmentPage = { + items: Array; + /** + * Continue with this token, even if items is empty. Omitted when no more pages remain. + */ + nextPageToken?: string; +}; + +export type AttachmentUploadNotReadyProblem = { + code: 'ATTACHMENT_UPLOAD_NOT_READY'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; + status: 409; + title: 'Attachment Upload Not Ready'; + type: 'https://photon.codes/docs/problems/attachment-upload-not-ready'; + [key: string]: JsonValue | 'ATTACHMENT_UPLOAD_NOT_READY' | string | never | 409 | 'Attachment Upload Not Ready' | 'https://photon.codes/docs/problems/attachment-upload-not-ready' | undefined; }; -export type AssignVoiceLineProfileRequestApplicationJson = { - expectedVersion: number; - profileId: string; +export type AuthorizedApplication = { + application: AuthorizedOAuthApplication; + /** + * Identifier of the user's authorization grant for this application. + */ + authorizationId: string; + /** + * OAuth scope slugs the user has granted to this application. + */ + grantedScopes: Array; + /** + * OAuth resource associated with the grant, or null when no resource is specified. + */ + oauthResource: string | null; + [key: string]: unknown; }; -export type AssignVoiceLineProfileResponse200ApplicationJson = { - profileId?: string; - profileVersion?: number; - projectId: string; - resourceId: string; - resourceVersion: number; +/** + * The OAuth application authorized by the authenticated user. + */ +export type AuthorizedOAuthApplication = { + /** + * OAuth application type reported by the authorization server. + */ + applicationType: string; + /** + * OAuth client identifier used by the application in authorization requests. + */ + clientId: string; + /** + * UTC timestamp when the application was created, in RFC 3339 format. + */ + createdAt: string; + /** + * Application description, or null when no description is set. + */ + description: string | null; + /** + * Application identifier to pass as applicationId when revoking this application's grant. + */ + id: string; + /** + * Whether the application is classified as first-party by the authorization server. + */ + isFirstParty: boolean; + /** + * Display name of the authorized application. + */ + name: string; + /** + * Registered OAuth callback URLs for the application. + */ + redirectUris: Array; + /** + * OAuth scope slugs configured for the application; grantedScopes records what the user authorized. + */ + scopes: Array; + /** + * UTC timestamp when the application was last updated, in RFC 3339 format. + */ updatedAt: string; + /** + * Whether the application uses Proof Key for Code Exchange (PKCE). + */ + usesPkce: boolean; + [key: string]: unknown; }; -export type AssignVoiceLineProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type AuthorizedOAuthApplicationRedirectUri = { + /** + * Whether this is the application's default redirect URI. + */ + default: boolean; + /** + * Registered OAuth callback URL for the application. + */ + uri: string; + [key: string]: unknown; }; -export type AssignVoiceLineProfileResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -} | { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; +export type AvailableProjectSlug = { + available: true; + slug: string; }; -export type AssignVoiceLineProfileResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Default Profile Assignment Forbidden'; - type: 'https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -}; +export type BatchUpdateVoiceLineProfileAssignmentsConflictProblem = ProjectClosingProblem | VoiceDefaultProfileAssignmentForbiddenProblem | VoiceProfileVersionConflictProblem; -export type AssignVoiceLineProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type AssignVoiceLineProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem = ResourceNotFoundProblem | VoiceProfileNotFoundProblem; + +export type BatchUpdateVoiceLineProfileAssignmentsRequest = { + updates: Array; }; -export type AssignVoiceLineProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type BatchUpdateVoiceLineProfileAssignmentsResponse = { + assignments: Array; }; -export type AssignVoiceLineProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type BeginInvitationSsoBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type BeginInvitationSsoForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type BeginInvitationSsoGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type BeginInvitationSsoInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type BeginInvitationSsoPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type BeginInvitationSsoRequest = { + returnTo: string; + token: string; }; -export type AssignVoiceLineProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type BeginOrganizationAuthenticationBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type BeginOrganizationAuthenticationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type BeginOrganizationAuthenticationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type BeginOrganizationAuthenticationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type BeginOrganizationAuthenticationPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type BeginOrganizationClosureAuthenticationBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type BeginOrganizationClosureAuthenticationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type BeginOrganizationClosureAuthenticationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type BeginOrganizationClosureAuthenticationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type BeginOrganizationClosureAuthenticationPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type BeginOrganizationSsoAdmissionBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type BeginOrganizationSsoAdmissionForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type BeginOrganizationSsoAdmissionGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type BeginOrganizationSsoAdmissionInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type BeginOrganizationSsoAdmissionPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type BillingNotProvisionedProblem = { + code: 'BILLING_NOT_PROVISIONED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + title: 'Billing Not Provisioned'; + type: 'https://photon.codes/docs/problems/billing-not-provisioned'; + [key: string]: JsonValue | 'BILLING_NOT_PROVISIONED' | string | never | 503 | 'Billing Not Provisioned' | 'https://photon.codes/docs/problems/billing-not-provisioned' | undefined; }; -export type AssignVoiceLineProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; +/** + * Authoritative provisioning state. Poll the operation route while pending. + */ +export type BillingOperation = PendingBillingOperation | SucceededBillingOperation | FailedBillingOperation; -export type Authorization_Problem_INSUFFICIENT_SCOPE_403 = { - code: 'INSUFFICIENT_SCOPE'; - detail?: string; - instance?: string; - requestId?: string; - status: 403; - title: 'Insufficient Scope'; - type: 'https://photon.codes/docs/problems/insufficient-scope'; +export type BillingOperationFailure = { + code: BillingOperationFailureCode; + detail: BillingOperationFailureDetail | null; + retryable: boolean; }; -export type BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson = { - updates: Array<{ - expectedVersion: number; - profileId: string | null; - resourceId: string; - }>; +/** + * Stable provider-neutral failure category. + */ +export type BillingOperationFailureCode = 'payment_method_required' | 'payment_failed' | 'not_provisioned' | 'invalid_target' | 'internal' | (string & {}); + +export type BillingOperationFailureDetail = 'cancellation_scheduled' | 'feature_not_sold_by_plan' | 'feature_not_found' | 'payment_timeout' | 'plan_activation_timeout' | 'plan_not_found' | 'quantity_out_of_range' | 'target_rejected' | (string & {}); + +export type BillingOperationKind = 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); + +export type BillingOperationResult = { + type: 'version'; + version: string; }; -export type BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson = { - assignments: Array<{ - profileId?: string; - profileVersion?: number; - projectId: string; - resourceId: string; - resourceVersion: number; - updatedAt: string; - }>; +export type BillingPlan = { + /** + * Recurring base price in whole cents. + */ + baseAmountCents: number; + /** + * Display name for the subscription category; absent or null when unconfigured. + */ + categoryDisplayName?: string | null; + /** + * ISO currency code. + */ + currency: string; + description: string | null; + entitlements: Array; + fixedCharges: Array; + interval: BillingPlanInterval; + name: string; + payInAdvance: boolean; + planCode: string; + usageCharges: Array; }; -export type BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type BillingPlanEntitlement = { + featureKey: string; + value: string; }; -export type BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -} | { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; +export type BillingPlanInterval = 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly' | (string & {}); -export type BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Default Profile Assignment Forbidden'; - type: 'https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -}; +export type CancelOperationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type CancelOperationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; +export type CancelOperationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; +export type CancelSubscriptionBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; +export type CancelSubscriptionConflictProblem = FailedPreconditionProblem | IdempotencyRequestInProgressProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; +export type CancelSubscriptionForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; +export type CancelSubscriptionGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; -export type BeginInvitationSsoRequestApplicationJson = { - returnTo: string; - token: string; -}; +export type CancelSubscriptionInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; -export type BeginInvitationSsoResponse200ApplicationJson = { - url: string; +export type CancelSubscriptionRequest = { + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; }; -export type BeginInvitationSsoResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; +export type CancelSubscriptionResponse = { + /** + * False when the category held no active subscription. + */ + cancellationScheduled: boolean; + /** + * End of the final paid period, ISO 8601. + */ + cancelsAt: string | null; + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; }; -export type BeginInvitationSsoResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; +export type CancelSubscriptionServiceUnavailableProblem = IdempotencyUnavailableProblem | UpstreamUnavailableProblem; -export type BeginInvitationSsoResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; -}; +export type CancelSubscriptionUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type BeginInvitationSsoResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; +export type CaptchaProvider = 'turnstile' | 'hcaptcha' | (string & {}); -export type BeginInvitationSsoResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; +export type CaptchaRequiredProblem = { + challengeContext: string; + code: 'CAPTCHA_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + provider: CaptchaProvider; + remediation?: never; requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; + siteKey: string; + status: 403; + title: 'Captcha Required'; + type: 'https://photon.codes/docs/problems/captcha-required'; + [key: string]: JsonValue | string | 'CAPTCHA_REQUIRED' | CaptchaProvider | never | 403 | 'Captcha Required' | 'https://photon.codes/docs/problems/captcha-required' | undefined; }; -export type BeginInvitationSsoResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type ChangePlanBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; -export type BeginInvitationSsoResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type ChangePlanConflictProblem = FailedPreconditionProblem | IdempotencyRequestInProgressProblem; + +export type ChangePlanForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ChangePlanGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ChangePlanInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ChangePlanRequest = { + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; + /** + * Plan to subscribe to, e.g. analytics_pro. + */ + planCode: string; }; -export type BeginInvitationSsoResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type ChangePlanServiceUnavailableProblem = IdempotencyUnavailableProblem | UpstreamUnavailableProblem; + +export type ChangePlanUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CheckProjectSlugAvailabilityForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CheckProjectSlugAvailabilityGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CheckProjectSlugAvailabilityResponse = AvailableProjectSlug | UnavailableProjectSlug; + +export type ClickHouseSqlQueryRequest = { + parameters?: { + [key: string]: string; + }; + sql: string; }; -export type BeginInvitationSsoResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type CommitAccountProfilePictureBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; + +export type CommitAccountProfilePictureForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CommitAccountProfilePictureGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CommitAccountProfilePictureInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CommitAccountProfilePictureRequest = { + uploadId: string; }; -export type BeginInvitationSsoResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type CommitAccountProfilePictureUnprocessableEntityProblem = IdempotencyKeyReusedProblem | ValidationFailedProblem; + +export type CommitAgentProfileAvatarBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type CommitAgentProfileAvatarForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CommitAgentProfileAvatarGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CommitAgentProfileAvatarRequest = { + uploadId: string; }; -export type BeginOrganizationAuthenticationRequestApplicationJson = { - returnTo: string; +export type CommitAgentProfileAvatarUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type ConfigureVoiceProfileOutboundBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ConfigureVoiceProfileOutboundConflictProblem = ProjectClosingProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem | VoiceOutboundConfiguredProblem; + +export type ConfigureVoiceProfileOutboundForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ConfigureVoiceProfileOutboundGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ConfigureVoiceProfileOutboundInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ConfigureVoiceProfileOutboundRequest = { + authentication: SipOutboundAuthenticationPolicy; + expectedVersion: number; }; -export type BeginOrganizationAuthenticationResponse200ApplicationJson = { - url: string; +export type ConfigureVoiceProfileOutboundResponse = { + outbound: SipOutboundConfiguration; + password: string | null; + profileVersion: number; }; -export type BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; +export type ConfigureVoiceProfileOutboundUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type ConfirmAccountPhoneVerificationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ConfirmAccountPhoneVerificationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ConfirmAccountPhoneVerificationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ConfirmAccountPhoneVerificationRequest = { + code: string; + phoneNumber: string; }; -export type BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; +export type ConnectEmailDomainBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; -export type BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; -}; +export type ConnectEmailDomainConflictProblem = ProjectClosingProblem | EmailDomainAlreadyConnectedProblem | EmailDomainCapExceededProblem; -export type BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; +export type ConnectEmailDomainForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; -}; +export type ConnectEmailDomainGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; -export type BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type ConnectEmailDomainInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; -export type BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type ConnectEmailDomainRequest = { + domain: string; }; -export type BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; +export type ConnectEmailDomainServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; -export type BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; +export type ConnectEmailDomainUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; +export type ConnectTelegramBotBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; -export type BeginOrganizationClosureAuthenticationRequestApplicationJson = { - returnTo: string; -}; +export type ConnectTelegramBotConflictProblem = TelegramProjectDeletedProblem | ProjectClosingProblem | TelegramProvisionInProgressProblem; -export type BeginOrganizationClosureAuthenticationResponse200ApplicationJson = { - url: string; -}; +export type ConnectTelegramBotForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; +export type ConnectTelegramBotGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ConnectTelegramBotInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ConnectTelegramBotRequest = Record; + +export type ConnectTelegramBotUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type ConnectWhatsappBusinessBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ConnectWhatsappBusinessForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ConnectWhatsappBusinessGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ConnectWhatsappBusinessInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ConnectWhatsappBusinessRequest = { + code: string; + phoneNumberId: string; + wabaId: string; }; -export type BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; +export type ConnectWhatsappBusinessServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; -export type BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; +export type ConnectWhatsappBusinessUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CountProjectsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CountProjectsGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateAccountProfilePictureUploadForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateAccountProfilePictureUploadGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateAccountProfilePictureUploadInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateAccountServiceKeyBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; + +export type CreateAccountServiceKeyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateAccountServiceKeyGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateAccountServiceKeyInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateAccountServiceKeyRequest = { + expiresAt?: string; + name: string; }; -export type BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; +export type CreateAccountServiceKeyResponse = { + secret: string; + serviceKey: AccountServiceKey; }; -export type BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; +export type CreateAccountServiceKeyUnprocessableEntityProblem = IdempotencyKeyReusedProblem | ValidationFailedProblem; + +export type CreateAgentProfileAvatarUploadForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateAgentProfileAvatarUploadGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateAgentProfileAvatarUploadRequest = { + contentType: AgentProfileAvatarContentType; }; -export type BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; +export type CreateAppInstallationRequestConflictProblem = AppInstallationAssertionReplayedProblem | AppInstallationConfigChangedProblem; + +export type CreateAppInstallationRequestGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateAppInstallationRequestRequest = { + appId: string; + clientAssertion: string; + redirectUri: string; + state: string; }; -export type BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type CreateAppInstallationRequestResponse = { + appId: string; + appVersion: string; + createdAt: string; + redirectUri: string; + requestId: string; + state: string; + [key: string]: unknown; }; -export type BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type CreateDefaultVoiceProfileConflictProblem = ProjectClosingProblem | VoiceDefaultProfileExistsProblem; + +export type CreateDefaultVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateDefaultVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateDefaultVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateDefaultVoiceProfileRequest = { + mediaEncryption?: VoiceProfileMediaEncryption; + protocol: 'sip'; }; -export type BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type CreateOrganizationPaymentMethodCheckoutBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type CreateOrganizationPaymentMethodCheckoutForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateOrganizationPaymentMethodCheckoutResponse = { + /** + * Hosted Stripe page; send the user here. + */ + checkoutUrl: string; }; -export type BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem = PaymentProviderNotReadyProblem | UpstreamUnavailableProblem; + +export type CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CreateOrganizationSetupIntentBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type CreateOrganizationSetupIntentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateOrganizationSetupIntentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateOrganizationSetupIntentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateOrganizationSetupIntentResponse = { + /** + * Stripe SetupIntent client secret. + */ + clientSecret: string; + /** + * Publishable key for the Stripe account backing billing. + */ + publishableKey: string; }; -export type BeginOrganizationSsoAdmissionRequestApplicationJson = { +export type CreateOrganizationSetupIntentUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CreateOrganizationSsoPortalLinkBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type CreateOrganizationSsoPortalLinkForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type CreateOrganizationSsoPortalLinkGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type CreateOrganizationSsoPortalLinkInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateOrganizationSsoPortalLinkPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type CreateOrganizationSsoPortalLinkRequest = { + intent?: CreateOrganizationSsoPortalLinkRequestIntent; returnTo: string; }; -export type BeginOrganizationSsoAdmissionResponse200ApplicationJson = { +/** + * @default "sso" + */ +export type CreateOrganizationSsoPortalLinkRequestIntent = 'sso' | 'domain_verification' | (string & {}); + +export type CreateOrganizationSsoPortalLinkResponse = { url: string; + [key: string]: unknown; }; -export type BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; +export type CreateProjectApiKeyBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; -export type BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; +export type CreateProjectApiKeyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; +export type CreateProjectApiKeyRequest = { + expiresAt?: string; + name: string; + permissions: Array; }; -export type BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; +export type CreateProjectApiKeyResponse = { + apiKey: ApiKey; + secret: string; }; -export type BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; -}; +export type CreateProjectApiKeyUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type CreateProjectBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; -export type BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; +export type CreateProjectForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; +export type CreateProjectGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; -export type BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type CreateProjectRequest = { + name: string; + slug: string; }; -export type BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; +export type CreateProjectUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type CancelOperationResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; +export type CreateSharedLineAssignmentBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type CreateSharedLineAssignmentConflictProblem = ProjectClosingProblem | ImessageModeDedicatedProblem | SharedLineCapExceededProblem | AssignmentExistsProblem; + +export type CreateSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateSharedLineAssignmentRequest = { + email?: string; + firstName?: string; + handle: ImessageHandle; + lastName?: string; }; -export type CancelOperationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type CreateSharedLineAssignmentServiceUnavailableProblem = BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem; + +export type CreateSharedLineAssignmentUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CreateVoiceProfileConflictProblem = ProjectClosingProblem | VoiceDefaultProfileRequiredProblem; + +export type CreateVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateVoiceProfileRequest = { + mediaEncryption?: VoiceProfileMediaEncryption; + name: string; + protocol: 'sip'; }; -export type CancelOperationResponse404ApplicationProblemPlusJson = { - code: 'OPERATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Operation Not Found'; - type: 'https://photon.codes/docs/problems/operation-not-found'; +export type CreateWebhookDestinationBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type CreateWebhookDestinationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateWebhookDestinationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateWebhookDestinationRequest = { + apiVersion: string; + description?: string; + enabledEvents: WebhookEventSelection; + name: string; + /** + * @default "enabled" + */ + status?: WebhookDestinationStatus; + /** + * HTTPS URL without credentials or a fragment. + */ + url: string; }; -export type CancelOperationResponse409ApplicationProblemPlusJson = { - code: 'OPERATION_NOT_CANCELLABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Operation Not Cancellable'; - type: 'https://photon.codes/docs/problems/operation-not-cancellable'; +export type CreateWebhookDestinationResponse = { + destination: WebhookDestination; + signingSecret: string; }; -export type CancelOperationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; +export type CreateWebhookDestinationUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CreateWhatsappSharedLineAssignmentBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type CreateWhatsappSharedLineAssignmentConflictProblem = ProjectClosingProblem | WhatsappModeDedicatedProblem | SharedLineCapExceededProblem | AssignmentExistsProblem; + +export type CreateWhatsappSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateWhatsappSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateWhatsappSharedLineAssignmentRequest = { + email?: string; + firstName?: string; + handle: string; + lastName?: string; }; -export type CancelOperationResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type CreateWhatsappSharedLineAssignmentServiceUnavailableProblem = BillingNotProvisionedProblem | SharedLinePoolExhaustedProblem | UpstreamUnavailableProblem; + +export type CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type CreateWhatsappVoipSenderBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type CreateWhatsappVoipSenderConflictProblem = ProjectClosingProblem | WhatsappAccountDisconnectingProblem | WhatsappAccountProvisioningProblem | WhatsappSenderConnectedProblem | WhatsappSenderProvisioningProblem | WhatsappVoipSourceReleasingProblem; + +export type CreateWhatsappVoipSenderForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type CreateWhatsappVoipSenderGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type CreateWhatsappVoipSenderInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type CreateWhatsappVoipSenderNotFoundProblem = WhatsappWabaNotConnectedProblem | WhatsappVoipSourceNotEligibleProblem; + +export type CreateWhatsappVoipSenderRequest = { + displayName?: string; + voipResourceId: string; }; -export type CancelOperationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type CreateWhatsappVoipSenderServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type CreateWhatsappVoipSenderUnprocessableEntityProblem = ValidationFailedProblem | WhatsappDisplayNameUnavailableProblem | IdempotencyKeyReusedProblem; + +export type CreatedAppInstallationDelivery = { + clientId: string; + clientSecret: string; + installationId: string; + status: 'created'; }; -export type CancelOperationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type DedicatedProjectPlatformSettings = { + mode: 'dedicated'; }; -export type CancelOperationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type DeleteAccountForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteAccountGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type DeleteAccountInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DeleteProjectBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type DeleteProjectForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteProjectGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type DeleteProjectUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type DeleteVoiceProfileConflictProblem = VoiceProfileInUseProblem | VoiceDefaultProfileDeletionForbiddenProblem | VoiceProfileVersionConflictProblem; + +export type DeleteVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteVoiceProfileForceInput = 'true' | 'false' | (string & {}); + +export type DeleteVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type DeleteVoiceProfileInboundConflictProblem = VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem; + +export type DeleteVoiceProfileInboundForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteVoiceProfileInboundGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type DeleteVoiceProfileInboundInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DeleteVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DeleteVoiceProfileOutboundConflictProblem = VoiceProfileVersionConflictProblem | VoiceOutboundNotConfiguredProblem; + +export type DeleteVoiceProfileOutboundForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteVoiceProfileOutboundGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type DeleteVoiceProfileOutboundInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DeleteVoiceProfileOutboundResponse = { + outbound: null; + profileVersion: number; }; -export type CancelOperationResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; +export type DeleteWebhookDestinationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DeleteWebhookDestinationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type DeprecatedWebhookApiVersion = { + retirement: WebhookApiVersionRetirement; + selectable: false; + status: 'deprecated'; + successor: string | null; + version: string; }; -export type CancelSubscriptionRequestApplicationJson = { - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; +export type DeprecatedWebhookEventCatalog = { + apiVersion: string; + contractNamespace: '@photon-hq/contracts'; + events: Array; + packageVersion: string; + retirement: WebhookApiVersionRetirement; + selectable: false; + status: 'deprecated'; + successor: string | null; }; -export type CancelSubscriptionResponse200ApplicationJson = { +export type DeviceAuthorizeResponse = { /** - * False when the category held no active subscription. + * Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. */ - cancellationScheduled: boolean; + device_code: string; /** - * End of the final paid period, ISO 8601. + * Lifetime of the device code and user code, in seconds. */ - cancelsAt: string | null; + expires_in: number; /** - * Category slug, e.g. analytics or messaging. + * Minimum number of seconds to wait between token polling requests. */ - category: string; + interval: number; + /** + * Code the user enters at verification_uri to authorize this device. + */ + user_code: string; + /** + * Browser URL where the user enters user_code and authorizes the device. + */ + verification_uri: string; + /** + * Browser URL with user_code included, ready to open or encode as a QR code. + */ + verification_uri_complete: string; + [key: string]: unknown; }; -export type CancelSubscriptionResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; +export type DeviceCodeGrantRequest = { + /** + * device_code returned by POST /v1/auth/device/code. Required for a device-code grant. + */ + device_code: string; + /** + * Selects the device authorization grant to poll or exchange a device code. + */ + grant_type: 'urn:ietf:params:oauth:grant-type:device_code'; }; -export type CancelSubscriptionResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type DeviceTokenBadRequestResponse = { + /** + * OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. + */ + error: string; + /** + * Optional human-readable explanation of the OAuth error. + */ + error_description?: string; + [key: string]: unknown; }; -export type CancelSubscriptionResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -} | { - code: 'IDEMPOTENCY_REQUEST_IN_PROGRESS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Idempotency Request In Progress'; - type: 'https://photon.codes/docs/problems/idempotency-request-in-progress'; +export type DeviceTokenRequest = DeviceCodeGrantRequest | RefreshTokenGrantRequest; + +export type DeviceTokenResponse = { + /** + * Bearer access token for authenticated Photon API requests. + */ + access_token: string; + /** + * Authentication method used for the device login, when returned. Omitted for refresh grants. + */ + authentication_method?: string; + /** + * Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. + */ + expires_in: number; + /** + * Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. + */ + refresh_token: string; + user: DeviceTokenResponseUser; + [key: string]: unknown; }; -export type CancelSubscriptionResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; +/** + * Profile of the authenticated user. + */ +export type DeviceTokenResponseUser = { + /** + * Authenticated user's email address. + */ + email: string; + /** + * User's first name, or null when not set. + */ + first_name: string | null; + /** + * Authenticated user's identity identifier; distinct from the Photon Account ID. + */ + id: string; + /** + * User's last name, or null when not set. + */ + last_name: string | null; + [key: string]: unknown; }; -export type CancelSubscriptionResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type DisableOrganizationSsoBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type DisableOrganizationSsoForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type DisableOrganizationSsoGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type DisableOrganizationSsoInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DisableOrganizationSsoPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type DisableOrganizationSsoRequest = { + /** + * @default [] + */ + domains?: Array; + expectedVersion: string; }; -export type CancelSubscriptionResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type DisableOrganizationSsoUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type DisconnectWhatsappBusinessAccountBadRequestProblem = IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; + +export type DisconnectWhatsappBusinessAccountConflictProblem = WhatsappAccountDisconnectingProblem | WhatsappAccountProvisioningProblem; + +export type DisconnectWhatsappBusinessAccountForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DisconnectWhatsappBusinessAccountGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type DisconnectWhatsappBusinessAccountInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DisconnectWhatsappBusinessAccountUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type DownloadAttachmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type DownloadAttachmentGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type DownloadAttachmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type DownloadAttachmentResponse = unknown; + +export type EmailDomainAlreadyConnectedProblem = { + code: 'EMAIL_DOMAIN_ALREADY_CONNECTED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 409; + title: 'Email Domain Already Connected'; + type: 'https://photon.codes/docs/problems/email-domain-already-connected'; + [key: string]: JsonValue | 'EMAIL_DOMAIN_ALREADY_CONNECTED' | string | never | 409 | 'Email Domain Already Connected' | 'https://photon.codes/docs/problems/email-domain-already-connected' | undefined; }; -export type CancelSubscriptionResponse503ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Idempotency Unavailable'; - type: 'https://photon.codes/docs/problems/idempotency-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; +export type EmailDomainCapExceededProblem = { + code: 'EMAIL_DOMAIN_CAP_EXCEEDED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 409; + title: 'Email Domain Cap Exceeded'; + type: 'https://photon.codes/docs/problems/email-domain-cap-exceeded'; + [key: string]: JsonValue | 'EMAIL_DOMAIN_CAP_EXCEEDED' | string | never | 409 | 'Email Domain Cap Exceeded' | 'https://photon.codes/docs/problems/email-domain-cap-exceeded' | undefined; }; -export type CancelSubscriptionResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; +export type EntitlementRequiredProblem = { + code: 'ENTITLEMENT_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; + status: 402; + title: 'Entitlement Required'; + type: 'https://photon.codes/docs/problems/entitlement-required'; + [key: string]: JsonValue | 'ENTITLEMENT_REQUIRED' | string | never | 402 | 'Entitlement Required' | 'https://photon.codes/docs/problems/entitlement-required' | undefined; }; -export type ChangePlanRequestApplicationJson = { - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; - /** - * Plan to subscribe to, e.g. analytics_pro. - */ - planCode: string; +export type ExistingAppInstallationDelivery = { + installationId: string; + status: ExistingAppInstallationDeliveryStatus; }; -export type ChangePlanResponse200ApplicationJson = { - failure: null; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); - /** - * Stable handle for this provisioning action. - */ - operationId: string; - resolvedAt: string | null; - result: { - type: 'version'; - version: string; - }; - /** - * Terminal. The result is authoritative. - */ - status: 'succeeded'; - submittedAt: string | null; -} | { - failure: { - /** - * Stable provider-neutral failure category. - */ - code: 'payment_method_required' | 'payment_failed' | 'not_provisioned' | 'invalid_target' | 'internal' | (string & {}); - detail: 'cancellation_scheduled' | 'feature_not_sold_by_plan' | 'feature_not_found' | 'payment_timeout' | 'plan_activation_timeout' | 'plan_not_found' | 'quantity_out_of_range' | 'target_rejected' | (string & {}) | null; - retryable: boolean; - }; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); +export type ExistingAppInstallationDeliveryStatus = 'delivery_consumed' | 'recovery_required' | 'revocation_pending' | 'revoked' | (string & {}); + +export type FailedBillingOperation = { + failure: BillingOperationFailure; + kind: BillingOperationKind; /** * Stable handle for this provisioning action. */ @@ -1528,16312 +1304,2415 @@ export type ChangePlanResponse200ApplicationJson = { submittedAt: string | null; }; -export type ChangePlanResponse202ApplicationJson = { - failure: null; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); - /** - * Stable handle for this provisioning action. - */ - operationId: string; - resolvedAt: null; - result: null; - /** - * Accepted and still executing. Poll the operation route. - */ - status: 'pending'; - submittedAt: string | null; -}; - -export type ChangePlanResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; +export type FailedPreconditionProblem = { + code: 'FAILED_PRECONDITION'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; + status: 409; + title: 'Failed Precondition'; + type: 'https://photon.codes/docs/problems/failed-precondition'; + [key: string]: JsonValue | 'FAILED_PRECONDITION' | string | never | 409 | 'Failed Precondition' | 'https://photon.codes/docs/problems/failed-precondition' | undefined; +}; + +export type FixedCharge = { + chargeModel: FixedChargeModel; + displayName: string; + fixedChargeCode: string; + payInAdvance: boolean; + pricing: FixedChargePricing; + prorated: boolean; + quantity: number; +}; + +export type FixedChargeModel = 'graduated' | 'standard' | 'volume' | (string & {}); + +export type FixedChargePricing = { + amount: string | null; + tiers: Array; +}; + +export type FixedChargeTier = { + flatAmount: string | null; + fromUnit: number; + perUnitAmount: string | null; + toUnit: number | null; +}; + +export type ForbiddenProblem = { + code: 'FORBIDDEN'; detail?: string; instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ChangePlanResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 403; title: 'Forbidden'; type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + [key: string]: JsonValue | 'FORBIDDEN' | string | never | 403 | 'Forbidden' | 'https://photon.codes/docs/problems/forbidden' | undefined; }; -export type ChangePlanResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -} | { - code: 'IDEMPOTENCY_REQUEST_IN_PROGRESS'; +export type GetAccountForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetAccountGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetAccountInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetAgentProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetAgentProfileGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetAttachmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetAttachmentGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetAttachmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetBillingOperationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetBillingOperationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetBillingOperationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetBillingOverviewForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetBillingOverviewGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetBillingOverviewInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetBillingOverviewResponse = { + /** + * Bumps on every entitlement change in any category. + */ + entitlementsVersion: number; + /** + * One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. + */ + subscriptions: Array; + /** + * Current-period metered usage, priced. + */ + usage: Array; +}; + +export type GetDefaultVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetDefaultVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetDefaultVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetMessageMetricsBackfillForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetMessageMetricsBackfillResponse = { + failedWrites: number; + lastVerifiedAt: string | null; + processedWrites: number; + state: MessageMetricsBackfillState; + version: string; + [key: string]: unknown; +}; + +export type GetMessageMetricsSqlSchemaForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetMessageMetricsSqlSchemaResponse = { + capabilities: MessageMetricsSqlCapabilities; + dialect: string; + limits: MessageMetricsSqlLimits; + projectScoped: true; + tables: Array; + version: string; +}; + +export type GetOperationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetOperationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetOperationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetOperationResponse = { + operation: Operation; + resource?: Resource; +}; + +export type GetOrganizationBillingOverviewForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetOrganizationBillingOverviewGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetOrganizationBillingOverviewInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetOrganizationBillingOverviewResponse = { + /** + * Bumps on every entitlement change for the organization. + */ + entitlementsVersion: number; + /** + * The organization-owned subscription, or null when billing was never opened or has ended. + */ + subscription: OrganizationSubscription | null; +}; + +export type GetOrganizationConnectionStatusForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type GetOrganizationConnectionStatusGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetOrganizationConnectionStatusInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetOrganizationPaymentMethodForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetOrganizationPaymentMethodGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetOrganizationPaymentMethodInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetOrganizationPaymentMethodResponse = { + /** + * True once a card is captured for the payer. + */ + cardOnFile: boolean; + /** + * Metadata for the default card, or null. + */ + paymentMethod: PaymentMethod | null; +}; + +export type GetOrganizationSsoConfigurationBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type GetOrganizationSsoConfigurationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type GetOrganizationSsoConfigurationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetOrganizationSsoConfigurationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetOrganizationSsoConfigurationPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type GetProjectClosureStatusForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetProjectClosureStatusGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetProjectClosureStatusResponse = { + deletionOperationId: string | null; + domains: Array; + organizationId: string; + projectId: string; + ready: boolean; + [key: string]: unknown; +}; + +export type GetProjectForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetProjectGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type GetProjectImessagePlatformForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetProjectImessagePlatformGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetProjectImessagePlatformInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetProjectImessagePlatformServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type GetProjectWhatsappPlatformForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetProjectWhatsappPlatformGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetProjectWhatsappPlatformInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetProjectWhatsappPlatformServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type GetResourceForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetResourceGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetResourceInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetSmsLineCampaignAssignmentConflictProblem = ProjectClosingProblem | SmsLineUnsupportedProblem | SmsCampaignNotReadyProblem | SmsCampaignVersionConflictProblem | SmsCampaignCapacityExceededProblem | SmsCampaignReconciliationRequiredProblem | SmsCampaignMutationInProgressProblem; + +export type GetSmsLineCampaignAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem | SmsCampaignOrganizationMismatchProblem; + +export type GetSmsLineCampaignAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetSmsLineCampaignAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetSmsLineCampaignAssignmentNotFoundProblem = SmsCampaignNotFoundProblem | SmsLineNotFoundProblem; + +export type GetSmsLineCampaignAssignmentResponse = { + campaign: SmsLineCampaign | null; + eligibility: SmsLineCampaignEligibility; + reasonCode: string | null; + resourceId: string; + version: number; + [key: string]: unknown; +}; + +export type GetSmsLineCampaignAssignmentServiceUnavailableProblem = SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem; + +export type GetVoiceLineProfileAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetVoiceLineProfileAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetVoiceLineProfileAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetWebhookDestinationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWebhookDestinationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetWebhookEventSchemaForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWebhookEventSchemaGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetWhatsappBusinessAccountForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWhatsappBusinessAccountGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetWhatsappBusinessAccountInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetWhatsappBusinessVerificationCodeForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetWhatsappBusinessVerificationCodeInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetWhatsappBusinessVerificationCodeNotFoundProblem = ResourceNotFoundProblem | WhatsappVerificationCodeNotFoundProblem; + +export type GetWhatsappBusinessVerificationCodeResponse = { + code: string; + receivedAt: string; +}; + +export type GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem = ValidationFailedProblem | WhatsappVerificationWindowExpiredProblem; + +export type GetWhatsappSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWhatsappSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type GetWhatsappSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetWhatsappSignupConfigForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type GetWhatsappSignupConfigInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type GetWhatsappSignupConfigResponse = { + configId: string; + graphVersion: string; + scopes: Array; +}; + +export type HttpErrorProblem = { + code: 'HTTP_ERROR'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 409; - title: 'Idempotency Request In Progress'; - type: 'https://photon.codes/docs/problems/idempotency-request-in-progress'; + status: 400; + title: 'Request Failed'; + type: 'https://photon.codes/docs/problems/http-error'; + [key: string]: JsonValue | 'HTTP_ERROR' | string | never | 400 | 'Request Failed' | 'https://photon.codes/docs/problems/http-error' | undefined; }; -export type ChangePlanResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; +export type IdempotencyKeyInvalidProblem = { + code: 'IDEMPOTENCY_KEY_INVALID'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; + status: 400; + title: 'Idempotency Key Invalid'; + type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; + [key: string]: JsonValue | 'IDEMPOTENCY_KEY_INVALID' | string | never | 400 | 'Idempotency Key Invalid' | 'https://photon.codes/docs/problems/idempotency-key-invalid' | undefined; }; -export type ChangePlanResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type IdempotencyKeyRequiredProblem = { + code: 'IDEMPOTENCY_KEY_REQUIRED'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { + status: 400; + title: 'Idempotency Key Required'; + type: 'https://photon.codes/docs/problems/idempotency-key-required'; + [key: string]: JsonValue | 'IDEMPOTENCY_KEY_REQUIRED' | string | never | 400 | 'Idempotency Key Required' | 'https://photon.codes/docs/problems/idempotency-key-required' | undefined; +}; + +export type IdempotencyKeyReusedProblem = { code: 'IDEMPOTENCY_KEY_REUSED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 422; title: 'Idempotency Key Reused'; type: 'https://photon.codes/docs/problems/idempotency-key-reused'; + [key: string]: JsonValue | 'IDEMPOTENCY_KEY_REUSED' | string | never | 422 | 'Idempotency Key Reused' | 'https://photon.codes/docs/problems/idempotency-key-reused' | undefined; }; -export type ChangePlanResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ChangePlanResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type IdempotencyRequestInProgressProblem = { + code: 'IDEMPOTENCY_REQUEST_IN_PROGRESS'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 409; + title: 'Idempotency Request In Progress'; + type: 'https://photon.codes/docs/problems/idempotency-request-in-progress'; + [key: string]: JsonValue | 'IDEMPOTENCY_REQUEST_IN_PROGRESS' | string | never | 409 | 'Idempotency Request In Progress' | 'https://photon.codes/docs/problems/idempotency-request-in-progress' | undefined; }; -export type ChangePlanResponse503ApplicationProblemPlusJson = { +export type IdempotencyUnavailableProblem = { code: 'IDEMPOTENCY_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 503; title: 'Idempotency Unavailable'; type: 'https://photon.codes/docs/problems/idempotency-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; + [key: string]: JsonValue | 'IDEMPOTENCY_UNAVAILABLE' | string | never | 503 | 'Idempotency Unavailable' | 'https://photon.codes/docs/problems/idempotency-unavailable' | undefined; +}; + +export type ImessageHandle = string; + +export type ImessageModeDedicatedProblem = { + code: 'IMESSAGE_MODE_DEDICATED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 409; + title: 'iMessage Mode Is Dedicated'; + type: 'https://photon.codes/docs/problems/imessage-mode-dedicated'; + [key: string]: JsonValue | 'IMESSAGE_MODE_DEDICATED' | string | never | 409 | 'iMessage Mode Is Dedicated' | 'https://photon.codes/docs/problems/imessage-mode-dedicated' | undefined; }; -export type ChangePlanResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; +export type InsufficientScopeProblem = { + code: 'INSUFFICIENT_SCOPE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; + status: 403; + title: 'Insufficient Scope'; + type: 'https://photon.codes/docs/problems/insufficient-scope'; + [key: string]: JsonValue | 'INSUFFICIENT_SCOPE' | string | never | 403 | 'Insufficient Scope' | 'https://photon.codes/docs/problems/insufficient-scope' | undefined; +}; + +export type InternalErrorProblem = { + code: 'INTERNAL_ERROR'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CheckProjectSlugAvailabilityResponse200ApplicationJson = { - available: true; - slug: string; -} | { - available: false; - reason: 'reserved' | 'retired' | 'taken' | 'too_short' | (string & {}); - slug: string; - suggestion?: string; + status: 500; + title: 'Internal Server Error'; + type: 'https://photon.codes/docs/problems/internal-error'; + [key: string]: JsonValue | 'INTERNAL_ERROR' | string | never | 500 | 'Internal Server Error' | 'https://photon.codes/docs/problems/internal-error' | undefined; }; -export type CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson = { +export type InvalidArgumentProblem = { code: 'INVALID_ARGUMENT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 400; title: 'Invalid Argument'; type: 'https://photon.codes/docs/problems/invalid-argument'; + [key: string]: JsonValue | 'INVALID_ARGUMENT' | string | never | 400 | 'Invalid Argument' | 'https://photon.codes/docs/problems/invalid-argument' | undefined; }; -export type CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; +export type InvalidAttachmentRequestProblem = { + code: 'INVALID_ATTACHMENT_REQUEST'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + status: 400; + title: 'Invalid Attachment Request'; + type: 'https://photon.codes/docs/problems/invalid-attachment-request'; + [key: string]: JsonValue | 'INVALID_ATTACHMENT_REQUEST' | string | never | 400 | 'Invalid Attachment Request' | 'https://photon.codes/docs/problems/invalid-attachment-request' | undefined; }; -export type CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type InvalidAuthContextProblem = { + code: 'INVALID_AUTH_CONTEXT'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; + status: 500; + title: 'Invalid Authentication Context'; + type: 'https://photon.codes/docs/problems/invalid-auth-context'; + [key: string]: JsonValue | 'INVALID_AUTH_CONTEXT' | string | never | 500 | 'Invalid Authentication Context' | 'https://photon.codes/docs/problems/invalid-auth-context' | undefined; }; -export type CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type InvalidReturnToProblem = { + code: 'INVALID_RETURN_TO'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 400; + title: 'Invalid Return To'; + type: 'https://photon.codes/docs/problems/invalid-return-to'; + [key: string]: JsonValue | 'INVALID_RETURN_TO' | string | never | 400 | 'Invalid Return To' | 'https://photon.codes/docs/problems/invalid-return-to' | undefined; }; -export type CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type InvitationEnterpriseLoginRequest = { + invitationToken: string; + returnTo: string; }; -export type CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type Invoice = { + /** + * ISO currency code. + */ + currency: string; + /** + * Invoice id. + */ + invoiceId: string; + /** + * Issue date, ISO 8601. + */ + issuedAt: string | null; + kind: InvoiceKind; + /** + * Human invoice number. + */ + number: string; + paymentStatus: InvoicePaymentStatus; + /** + * Downloadable PDF link. + */ + pdfUrl: string | null; + /** + * Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. + */ + subjects: Array; + /** + * Invoice total in cents. + */ + totalCents: number; }; -export type ClickHouseSqlQueryRequest = { - parameters?: { - [key: string]: string; - }; - sql: string; +/** + * What produced the invoice. + */ +export type InvoiceKind = 'subscription' | 'one_off' | 'credit' | (string & {}); + +/** + * Provider-neutral payment status. + */ +export type InvoicePaymentStatus = 'pending' | 'succeeded' | 'failed' | (string & {}); + +export type InvoiceSubject = ProjectInvoiceSubject | OrganizationInvoiceSubject; + +export type JsonValue = string | number | boolean | null | Array | { + [key: string]: JsonValue; }; -export type CommitAccountProfilePictureRequestApplicationJson = { - uploadId: string; +export type ListAccountServiceKeysForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListAccountServiceKeysGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ListAccountServiceKeysInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListAccountServiceKeysResponse = { + serviceKeys: Array; }; -export type CommitAccountProfilePictureResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; +export type ListAttachmentsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListAttachmentsGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ListAttachmentsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListAuthorizedApplicationsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type ListAuthorizedApplicationsGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ListAuthorizedApplicationsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListAuthorizedApplicationsOrder = 'normal' | 'desc' | 'asc' | (string & {}); + +export type ListAuthorizedApplicationsResponse = { + /** + * One page of applications authorized by the authenticated user. + */ + authorizedApplications: Array; + listMetadata: ListAuthorizedApplicationsResponseListMetadata; [key: string]: unknown; }; -export type CommitAccountProfilePictureResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; +/** + * Pagination cursors to pass as after or before in the next list request. + */ +export type ListAuthorizedApplicationsResponseListMetadata = { + /** + * Cursor for the next page, or null when there is no next page. + */ + after: string | null; + /** + * Cursor for the previous page, or null when there is no previous page. + */ + before: string | null; + [key: string]: unknown; }; -export type CommitAccountProfilePictureResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; +export type ListBillingPlansForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type CommitAccountProfilePictureResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; +export type ListBillingPlansGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; -export type CommitAccountProfilePictureResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; +export type ListBillingPlansInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; -export type CommitAccountProfilePictureResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; +export type ListBillingPlansResponse = { + /** + * Plans grouped by valid metadata type and explicitly published with visible="true". + */ + plans: { + [key: string]: Array; + }; }; -export type CommitAccountProfilePictureResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type ListInvoicesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type CommitAccountProfilePictureResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type ListInvoicesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListInvoicesInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListInvoicesResponse = { + invoices: Array; }; -export type CommitAccountProfilePictureResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type ListNumberAreaCodesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListNumberAreaCodesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListNumberAreaCodesInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListNumberAreaCodesResponse = { + areaCodes: Array; + countryCode: 'US'; }; -export type CommitAccountProfilePictureResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type ListNumberCountriesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListNumberCountriesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListNumberCountriesInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListNumberCountriesResponse = { + countries: Array; }; -export type CommitAccountProfilePictureResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type ListOauthScopesGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ListOauthScopesResponse = { + /** + * Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. + */ + scopes: Array; + [key: string]: unknown; }; -export type CommitAgentProfileAvatarRequestApplicationJson = { - uploadId: string; +export type ListOperationsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListOperationsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListOperationsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListProjectApiKeysForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListProjectApiKeysResponse = { + apiKeys: Array; }; -export type CommitAgentProfileAvatarResponse200ApplicationJson = { - avatarUrl: string; - firstName: string; - lastName: string | null; +export type ListProjectPlatformsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListProjectPlatformsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListProjectPlatformsResponse = { + platforms: Array; }; -export type CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; +export type ListProjectsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; +export type ListProjectsGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; -export type CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; +export type ListResourcesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListResourcesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListResourcesInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListSharedLineAssignmentsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListSharedLineAssignmentsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListSharedLineAssignmentsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListVoiceProfilesDefaultInput = 'true' | 'false' | (string & {}); + +export type ListVoiceProfilesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListVoiceProfilesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListVoiceProfilesInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListWebhookApiVersionsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWebhookApiVersionsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListWebhookApiVersionsResponse = { + apiVersions: Array; + contractNamespace: '@photon-hq/contracts'; + packageVersion: string; }; -export type CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; +export type ListWebhookDestinationsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWebhookDestinationsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListWebhookEgressAddressesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWebhookEgressAddressesResponse = { + /** + * Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. + */ + ipAddresses: Array; }; -export type CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; +export type ListWebhookEventTypesForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWebhookEventTypesGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListWebhookEventTypesResponse = SelectableWebhookEventCatalog | DeprecatedWebhookEventCatalog; + +export type ListWhatsappAccountPhoneNumbersForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListWhatsappAccountPhoneNumbersInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ListWhatsappAccountPhoneNumbersResponse = { + phoneNumbers: Array; + wabaId: string; }; -export type CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; +export type ListWhatsappSharedLineAssignmentsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ListWhatsappSharedLineAssignmentsInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type MessageMetricsBackfillState = 'disabled' | 'pending' | 'running' | 'verifying' | 'completed' | 'paused' | 'failed' | (string & {}); + +export type MessageMetricsDirection = 'addressed' | 'received' | (string & {}); + +export type MessageMetricsJsonCatalog = { + readonly commonPaths: Array; + readonly discriminators: Array; + readonly platforms: Array; + resource: MessageMetricsJsonResource; }; -export type CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type MessageMetricsJsonDiscriminator = MessageMetricsJsonPathDiscriminator | MessageMetricsJsonOneOfPathsDiscriminator; + +export type MessageMetricsJsonOneOfPathsDiscriminator = { + readonly oneOfPaths: Array; }; -export type CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type MessageMetricsJsonPath = { + additionalProperties?: true; + readonly contentTypes?: Array; + readonly directions?: Array; + expression: string; + readonly itemTypes?: Array; + path: string; + required: boolean; + type: string; + readonly values?: Array; }; -export type CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type MessageMetricsJsonPathDiscriminator = { + path: string; + readonly values: Array; }; -export type ConfigureVoiceProfileOutboundRequestApplicationJson = { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - }; - expectedVersion: number; +export type MessageMetricsJsonPathValue = boolean | number | string; + +export type MessageMetricsJsonResource = { + contractsVersion: string; + type: 'message'; }; -export type ConfigureVoiceProfileOutboundResponse200ApplicationJson = { - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - }; - password: string | null; - profileVersion: number; +export type MessageMetricsPlatform = 'email' | 'imessage' | 'sms' | 'telegram' | 'voice' | 'whatsapp' | 'whatsapp_business' | (string & {}); + +export type MessageMetricsPlatformJsonPaths = { + name: MessageMetricsPlatform; + readonly paths: Array; }; -export type ConfigureVoiceProfileOutboundResponse201ApplicationJson = { - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - }; - password: string | null; - profileVersion: number; +export type MessageMetricsQueryColumn = { + name: string; + type: string; }; -export type ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; +export type MessageMetricsQueryStatistics = { + bytesRead: number; + elapsedSeconds: number; + rowsRead: number; }; -export type ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type MessageMetricsSqlCapabilities = { + arrayJoin: boolean; + ctes: boolean; + joins: boolean; + parameters: boolean; + selectWithoutFrom: boolean; + subqueries: boolean; + unions: boolean; }; -export type ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; +export type MessageMetricsSqlColumn = { + description: string; + json?: MessageMetricsJsonCatalog; + name: string; + type: string; }; -export type ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; -} | { - code: 'VOICE_OUTBOUND_CONFIGURED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Already Configured'; - type: 'https://photon.codes/docs/problems/voice-outbound-configured'; +export type MessageMetricsSqlLimits = { + maximumParameterValueBytes: number; + maximumParameters: number; + maximumSqlBytes: number; + maximumTotalParameterBytes: number; }; -export type ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; +export type MessageMetricsSqlTable = { + columns: Array; + currentState: string; + description: string; + name: MessageMetricsSqlTableName; }; -export type ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type MessageMetricsSqlTableName = 'message_events'; + +export type MeteredUsage = { + /** + * Cost accrued so far. + */ + amountCents: number; + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; + /** + * Display name for the subscription category; absent or null when unconfigured. + */ + categoryDisplayName?: string | null; + /** + * ISO currency code. + */ + currency: string; + /** + * Display name for this usage item. + */ + displayName: string; + /** + * Metered thing, e.g. imessage_message. + */ + metricCode: string; + /** + * Units consumed this period. + */ + units: number; }; -export type ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; +export type NotAuthenticatedProblem = { + code: 'NOT_AUTHENTICATED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; + status: 401; + title: 'Not Authenticated'; + type: 'https://photon.codes/docs/problems/not-authenticated'; + [key: string]: JsonValue | 'NOT_AUTHENTICATED' | string | never | 401 | 'Not Authenticated' | 'https://photon.codes/docs/problems/not-authenticated' | undefined; }; -export type ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type NumberCountry = { + callingCode: string; + countryCode: string; + displayName: string; }; -export type ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ConfirmAccountPhoneVerificationRequestApplicationJson = { - code: string; - phoneNumber: string; -}; - -export type ConfirmAccountPhoneVerificationResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; - [key: string]: unknown; -}; - -export type ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ConnectEmailDomainRequestApplicationJson = { - domain: string; -}; - -export type ConnectEmailDomainResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ConnectEmailDomainResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ConnectEmailDomainResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type ConnectEmailDomainResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ConnectEmailDomainResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'EMAIL_DOMAIN_ALREADY_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Email Domain Already Connected'; - type: 'https://photon.codes/docs/problems/email-domain-already-connected'; -} | { - code: 'EMAIL_DOMAIN_CAP_EXCEEDED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Email Domain Cap Exceeded'; - type: 'https://photon.codes/docs/problems/email-domain-cap-exceeded'; -}; - -export type ConnectEmailDomainResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ConnectEmailDomainResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ConnectEmailDomainResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ConnectEmailDomainResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ConnectEmailDomainResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ConnectEmailDomainResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ConnectTelegramBotRequestApplicationJson = Record; - -export type ConnectTelegramBotResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ConnectTelegramBotResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ConnectTelegramBotResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ConnectTelegramBotResponse409ApplicationProblemPlusJson = { - code: 'TELEGRAM_PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Telegram Project Deleted'; - type: 'https://photon.codes/docs/problems/telegram-project-deleted'; -} | { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'TELEGRAM_PROVISION_IN_PROGRESS'; - detail?: string; - instance?: string; - operationId: string; - operationUrl: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Telegram Provision In Progress'; - type: 'https://photon.codes/docs/problems/telegram-provision-in-progress'; -}; - -export type ConnectTelegramBotResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ConnectTelegramBotResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ConnectTelegramBotResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ConnectTelegramBotResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ConnectTelegramBotResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ConnectTelegramBotResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ConnectWhatsappBusinessRequestApplicationJson = { - code: string; - phoneNumberId: string; - wabaId: string; -}; - -export type ConnectWhatsappBusinessResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -}; - -export type ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CountProjectsResponse200ApplicationJson = { - count: number; -}; - -export type CountProjectsResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CountProjectsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CountProjectsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CountProjectsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CountProjectsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CountProjectsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateAccountProfilePictureUploadRequestApplicationJson = { - contentType: 'image/jpeg' | 'image/png' | 'image/webp' | (string & {}); -}; - -export type CreateAccountProfilePictureUploadResponse201ApplicationJson = { - expiresAt: string; - formFields: { - [key: string]: string; - }; - uploadId: string; - uploadUrl: string; -}; - -export type CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateAccountServiceKeyRequestApplicationJson = { - expiresAt?: string; - name: string; -}; - -export type CreateAccountServiceKeyResponse201ApplicationJson = { - secret: string; - serviceKey: { - accountId: string; - createdAt: string; - expiresAt: string | null; - name: string; - revokedAt: string | null; - serviceKeyId: string; - }; -}; - -export type CreateAccountServiceKeyResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -}; - -export type CreateAccountServiceKeyResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateAccountServiceKeyResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type CreateAccountServiceKeyResponse409ApplicationProblemPlusJson = { - code: 'ACCOUNT_SERVICE_KEY_LIMIT_REACHED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Account Service Key Limit Reached'; - type: 'https://photon.codes/docs/problems/account-service-key-limit-reached'; -}; - -export type CreateAccountServiceKeyResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type CreateAccountServiceKeyResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type CreateAccountServiceKeyResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateAccountServiceKeyResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateAccountServiceKeyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateAccountServiceKeyResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateAccountServiceKeyResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateAgentProfileAvatarUploadRequestApplicationJson = { - contentType: 'image/jpeg' | 'image/png' | 'image/webp' | (string & {}); -}; - -export type CreateAgentProfileAvatarUploadResponse201ApplicationJson = { - expiresAt: string; - formFields: { - [key: string]: string; - }; - uploadId: string; - uploadUrl: string; -}; - -export type CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateAppInstallationRequestRequestApplicationJson = { - appId: string; - clientAssertion: string; - redirectUri: string; - state: string; -}; - -export type CreateAppInstallationRequestResponse201ApplicationJson = { - appId: string; - appVersion: string; - createdAt: string; - redirectUri: string; - requestId: string; - state: string; -}; - -export type CreateAppInstallationRequestResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateAppInstallationRequestResponse401ApplicationProblemPlusJson = { - code: 'APP_INSTALLATION_ASSERTION_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 401; - title: 'Invalid Installation Client Assertion'; - type: 'https://photon.codes/docs/problems/app-installation-assertion-invalid'; -}; - -export type CreateAppInstallationRequestResponse409ApplicationProblemPlusJson = { - code: 'APP_INSTALLATION_ASSERTION_REPLAYED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Installation Assertion Already Used'; - type: 'https://photon.codes/docs/problems/app-installation-assertion-replayed'; -} | { - code: 'APP_INSTALLATION_CONFIG_CHANGED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Installation App Configuration Changed'; - type: 'https://photon.codes/docs/problems/app-installation-config-changed'; -}; - -export type CreateAppInstallationRequestResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateAppInstallationRequestResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateAppInstallationRequestResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateAppInstallationRequestResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateDefaultVoiceProfileRequestApplicationJson = { - mediaEncryption?: 'auto' | 'srtp' | (string & {}); - protocol: 'sip'; -}; - -export type CreateDefaultVoiceProfileResponse200ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; -}; - -export type CreateDefaultVoiceProfileResponse201ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; -}; - -export type CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_DEFAULT_PROFILE_EXISTS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Default Profile Exists'; - type: 'https://photon.codes/docs/problems/voice-default-profile-exists'; -}; - -export type CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson = { - /** - * Hosted Stripe page; send the user here. - */ - checkoutUrl: string; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson = { - code: 'PAYMENT_PROVIDER_NOT_READY'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Payment Provider Not Ready'; - type: 'https://photon.codes/docs/problems/payment-provider-not-ready'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateOrganizationSetupIntentResponse200ApplicationJson = { - /** - * Stripe SetupIntent client secret. - */ - clientSecret: string; - /** - * Publishable key for the Stripe account backing billing. - */ - publishableKey: string; -}; - -export type CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateOrganizationSsoPortalLinkRequestApplicationJson = { - /** - * @default "sso" - */ - intent?: 'sso' | 'domain_verification' | (string & {}); - returnTo: string; -}; - -export type CreateOrganizationSsoPortalLinkResponse200ApplicationJson = { - url: string; -}; - -export type CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; -}; - -export type CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; - -export type CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; -}; - -export type CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateProjectApiKeyRequestApplicationJson = { - expiresAt?: string; - name: string; - permissions: Array<'events:read' | 'events:write' | 'platforms:read' | 'platforms:write' | 'project:read' | 'project:write' | (string & {})>; -}; - -export type CreateProjectApiKeyResponse201ApplicationJson = { - apiKey: { - apiKeyId: string; - createdAt: string; - createdByAccountId: string; - expiresAt: string | null; - name: string; - permissions: Array; - permissionsUpdatedAt: string | null; - projectId: string; - revokedAt: string | null; - }; - secret: string; -}; - -export type CreateProjectApiKeyResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateProjectApiKeyResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateProjectApiKeyResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type CreateProjectApiKeyResponse409ApplicationProblemPlusJson = { - code: 'API_KEY_LIMIT_REACHED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'API Key Limit Reached'; - type: 'https://photon.codes/docs/problems/api-key-limit-reached'; -}; - -export type CreateProjectApiKeyResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type CreateProjectApiKeyResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type CreateProjectApiKeyResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateProjectApiKeyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateProjectApiKeyResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateProjectRequestApplicationJson = { - name: string; - slug: string; -}; - -export type CreateProjectResponse201ApplicationJson = { - agentProfile: { - avatarUrl: string; - firstName: string; - lastName: string | null; - }; - billingInitialization?: 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); - createdAt: string; - createdByAccountId: string | null; - createdByActorId: string | null; - createdByActorKind: 'account' | 'service_identity' | (string & {}) | null; - deletedAt: string | null; - name: string; - organizationId: string; - projectId: string; - slug: string; - updatedAt: string; -}; - -export type CreateProjectResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateProjectResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateProjectResponse409ApplicationProblemPlusJson = { - code: 'SLUG_TAKEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - suggestion?: string; - title: 'Slug Already Taken'; - type: 'https://photon.codes/docs/problems/slug-taken'; -}; - -export type CreateProjectResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type CreateProjectResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateProjectResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateProjectResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateProjectResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type CreateSharedLineAssignmentRequestApplicationJson = { - email?: string; - firstName?: string; - handle: string; - lastName?: string; -}; - -export type CreateSharedLineAssignmentResponse201ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'IMESSAGE_MODE_DEDICATED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'iMessage Mode Is Dedicated'; - type: 'https://photon.codes/docs/problems/imessage-mode-dedicated'; -} | { - code: 'SHARED_LINE_CAP_EXCEEDED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Shared Line Cap Exceeded'; - type: 'https://photon.codes/docs/problems/shared-line-cap-exceeded'; -} | { - code: 'ASSIGNMENT_EXISTS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment Exists'; - type: 'https://photon.codes/docs/problems/assignment-exists'; -}; - -export type CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'SHARED_LINE_POOL_EXHAUSTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Shared Line Pool Exhausted'; - type: 'https://photon.codes/docs/problems/shared-line-pool-exhausted'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateVoiceProfileRequestApplicationJson = { - mediaEncryption?: 'auto' | 'srtp' | (string & {}); - name: string; - protocol: 'sip'; -}; - -export type CreateVoiceProfileResponse201ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; -}; - -export type CreateVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateVoiceProfileResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_DEFAULT_PROFILE_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Default Profile Required'; - type: 'https://photon.codes/docs/problems/voice-default-profile-required'; -}; - -export type CreateVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type CreateVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type CreateVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateWebhookDestinationRequestApplicationJson = { - apiVersion: string; - description?: string; - enabledEvents: Array | Array; - name: string; - /** - * @default "enabled" - */ - status?: 'enabled' | 'disabled' | (string & {}); - /** - * HTTPS URL without credentials or a fragment. - */ - url: string; -}; - -export type CreateWebhookDestinationResponse201ApplicationJson = { - destination: { - apiVersion: string; - createdAt: string; - deletedAt: string | null; - description: string | null; - destinationId: string; - enabledEvents: Array | Array; - name: string; - projectId: string; - status: 'enabled' | 'disabled' | (string & {}); - updatedAt: string; - url: string; - }; - signingSecret: string; -}; - -export type CreateWebhookDestinationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type CreateWebhookDestinationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateWebhookDestinationResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateWebhookDestinationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateWebhookDestinationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateWebhookDestinationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateWhatsappSharedLineAssignmentRequestApplicationJson = { - email?: string; - firstName?: string; - handle: string; - lastName?: string; -}; - -export type CreateWhatsappSharedLineAssignmentResponse201ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'WHATSAPP_MODE_DEDICATED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Mode Is Dedicated'; - type: 'https://photon.codes/docs/problems/whatsapp-mode-dedicated'; -} | { - code: 'SHARED_LINE_CAP_EXCEEDED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Shared Line Cap Exceeded'; - type: 'https://photon.codes/docs/problems/shared-line-cap-exceeded'; -} | { - code: 'ASSIGNMENT_EXISTS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment Exists'; - type: 'https://photon.codes/docs/problems/assignment-exists'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'SHARED_LINE_POOL_EXHAUSTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Shared Line Pool Exhausted'; - type: 'https://photon.codes/docs/problems/shared-line-pool-exhausted'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type CreateWhatsappVoipSenderRequestApplicationJson = { - displayName?: string; - voipResourceId: string; -}; - -export type CreateWhatsappVoipSenderResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson = { - code: 'WHATSAPP_WABA_NOT_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp Business Account Not Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-waba-not-connected'; -} | { - code: 'WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp VoIP Source Not Eligible'; - type: 'https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible'; -}; - -export type CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'WHATSAPP_ACCOUNT_DISCONNECTING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Business Account Disconnecting'; - type: 'https://photon.codes/docs/problems/whatsapp-account-disconnecting'; -} | { - code: 'WHATSAPP_ACCOUNT_PROVISIONING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Business Account Has Provisioning Numbers'; - type: 'https://photon.codes/docs/problems/whatsapp-account-provisioning'; -} | { - code: 'WHATSAPP_SENDER_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Sender Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-sender-connected'; -} | { - code: 'WHATSAPP_SENDER_PROVISIONING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Sender Provisioning'; - type: 'https://photon.codes/docs/problems/whatsapp-sender-provisioning'; -} | { - code: 'WHATSAPP_VOIP_SOURCE_RELEASING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp VoIP Source Releasing'; - type: 'https://photon.codes/docs/problems/whatsapp-voip-source-releasing'; -}; - -export type CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'WHATSAPP_DISPLAY_NAME_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'WhatsApp Display Name Unavailable'; - type: 'https://photon.codes/docs/problems/whatsapp-display-name-unavailable'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DeleteAccountResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; - [key: string]: unknown; -}; - -export type DeleteAccountResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteAccountResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type DeleteAccountResponse409ApplicationProblemPlusJson = { - code: 'ACCOUNT_OWNS_ORGANIZATIONS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Account Owns Organizations'; - type: 'https://photon.codes/docs/problems/account-owns-organizations'; -}; - -export type DeleteAccountResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DeleteAccountResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteAccountResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteAccountResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type DeleteProjectResponse200ApplicationJson = { - agentProfile: { - avatarUrl: string; - firstName: string; - lastName: string | null; - }; - billingInitialization?: 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); - createdAt: string; - createdByAccountId: string | null; - createdByActorId: string | null; - createdByActorKind: 'account' | 'service_identity' | (string & {}) | null; - deletedAt: string | null; - name: string; - organizationId: string; - projectId: string; - slug: string; - updatedAt: string; -}; - -export type DeleteProjectResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type DeleteProjectResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteProjectResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type DeleteProjectResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type DeleteProjectResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type DeleteProjectResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteProjectResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteProjectResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type DeleteVoiceProfileInboundResponse200ApplicationJson = { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - profileVersion: number; -}; - -export type DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; -}; - -export type DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DeleteVoiceProfileOutboundResponse200ApplicationJson = { - outbound: null; - profileVersion: number; -}; - -export type DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_NOT_CONFIGURED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Not Configured'; - type: 'https://photon.codes/docs/problems/voice-outbound-not-configured'; -}; - -export type DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DeleteVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteVoiceProfileResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type DeleteVoiceProfileResponse409ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_IN_USE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile In Use'; - type: 'https://photon.codes/docs/problems/voice-profile-in-use'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -}; - -export type DeleteVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type DeleteVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type DeleteVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DeleteVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DeleteWebhookDestinationResponse200ApplicationJson = { - apiVersion: string; - createdAt: string; - deletedAt: string | null; - description: string | null; - destinationId: string; - enabledEvents: Array | Array; - name: string; - projectId: string; - status: 'enabled' | 'disabled' | (string & {}); - updatedAt: string; - url: string; -}; - -export type DeleteWebhookDestinationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DeleteWebhookDestinationResponse404ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Webhook Destination Not Found'; - type: 'https://photon.codes/docs/problems/webhook-destination-not-found'; -}; - -export type DeleteWebhookDestinationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DeleteWebhookDestinationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DeleteWebhookDestinationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DeviceAuthorizeResponse200ApplicationJson = { - /** - * Opaque device code to exchange at POST /v1/auth/device/token while waiting for the user to authorize. - */ - device_code: string; - /** - * Lifetime of the device code and user code, in seconds. - */ - expires_in: number; - /** - * Minimum number of seconds to wait between token polling requests. - */ - interval: number; - /** - * Code the user enters at verification_uri to authorize this device. - */ - user_code: string; - /** - * Browser URL where the user enters user_code and authorizes the device. - */ - verification_uri: string; - /** - * Browser URL with user_code included, ready to open or encode as a QR code. - */ - verification_uri_complete: string; -}; - -export type DeviceTokenRequestApplicationForm = { - /** - * device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - */ - device_code: string; - /** - * Selects the device authorization grant to poll or exchange a device code. - */ - grant_type: 'urn:ietf:params:oauth:grant-type:device_code'; -} | { - /** - * Selects the refresh-token grant to obtain a new token pair. - */ - grant_type: 'refresh_token'; - /** - * Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - */ - refresh_token: string; -}; - -export type DeviceTokenRequestApplicationJson = { - /** - * device_code returned by POST /v1/auth/device/code. Required for a device-code grant. - */ - device_code: string; - /** - * Selects the device authorization grant to poll or exchange a device code. - */ - grant_type: 'urn:ietf:params:oauth:grant-type:device_code'; -} | { - /** - * Selects the refresh-token grant to obtain a new token pair. - */ - grant_type: 'refresh_token'; - /** - * Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. - */ - refresh_token: string; -}; - -export type DeviceTokenResponse200ApplicationJson = { - /** - * Bearer access token for authenticated Photon API requests. - */ - access_token: string; - /** - * Authentication method used for the device login, when returned. Omitted for refresh grants. - */ - authentication_method?: string; - /** - * Access-token validity in seconds, derived from its expiry and issue times; defaults to 300 when unavailable. - */ - expires_in: number; - /** - * Refresh token for the next refresh grant. Tokens rotate on every grant; replace the stored value with this one. - */ - refresh_token: string; - /** - * Profile of the authenticated user. - */ - user: { - /** - * Authenticated user's email address. - */ - email: string; - /** - * User's first name, or null when not set. - */ - first_name: string | null; - /** - * Authenticated user's identity identifier; distinct from the Photon Account ID. - */ - id: string; - /** - * User's last name, or null when not set. - */ - last_name: string | null; - }; -}; - -export type DeviceTokenResponse400ApplicationJson = { - /** - * OAuth error code. During device polling, authorization_pending means authorization is incomplete and slow_down requests a longer polling interval. - */ - error: string; - /** - * Optional human-readable explanation of the OAuth error. - */ - error_description?: string; -}; - -export type DisconnectWhatsappBusinessAccountResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type DisconnectWhatsappBusinessAccountResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -}; - -export type DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson = { - code: 'WHATSAPP_WABA_NOT_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp Business Account Not Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-waba-not-connected'; -}; - -export type DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson = { - code: 'WHATSAPP_ACCOUNT_DISCONNECTING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Business Account Disconnecting'; - type: 'https://photon.codes/docs/problems/whatsapp-account-disconnecting'; -} | { - code: 'WHATSAPP_ACCOUNT_PROVISIONING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Business Account Has Provisioning Numbers'; - type: 'https://photon.codes/docs/problems/whatsapp-account-provisioning'; -}; - -export type DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type DownloadAttachmentResponse200ApplicationOctetStream = unknown; - -export type DownloadAttachmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type DownloadAttachmentResponse404ApplicationProblemPlusJson = { - code: 'ATTACHMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Attachment Not Found'; - type: 'https://photon.codes/docs/problems/attachment-not-found'; -}; - -export type DownloadAttachmentResponse409ApplicationProblemPlusJson = { - code: 'ATTACHMENT_NOT_READY'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Attachment Not Ready'; - type: 'https://photon.codes/docs/problems/attachment-not-ready'; -}; - -export type DownloadAttachmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type DownloadAttachmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type DownloadAttachmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type DownloadAttachmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type DownloadAttachmentResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetAccountResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; - [key: string]: unknown; -}; - -export type GetAccountResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetAccountResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type GetAccountResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type GetAccountResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetAccountResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetAccountResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetAccountResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetAgentProfileResponse200ApplicationJson = { - avatarUrl: string; - firstName: string; - lastName: string | null; -}; - -export type GetAgentProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetAgentProfileResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type GetAgentProfileResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type GetAgentProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetAgentProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetAgentProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetAgentProfileResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetAttachmentResponse200ApplicationJson = { - contentType: string; - createdAt: string; - filename?: string; - id: string; - metadata?: { - [key: string]: unknown; - }; - projectId: string; - sizeBytes: number; - updatedAt: string; -}; - -export type GetAttachmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetAttachmentResponse404ApplicationProblemPlusJson = { - code: 'ATTACHMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Attachment Not Found'; - type: 'https://photon.codes/docs/problems/attachment-not-found'; -}; - -export type GetAttachmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetAttachmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetAttachmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetAttachmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetAttachmentResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -/** - * Authoritative provisioning state. Poll the operation route while pending. - */ -export type GetBillingOperationResponse200ApplicationJson = { - failure: null; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); - /** - * Stable handle for this provisioning action. - */ - operationId: string; - resolvedAt: null; - result: null; - /** - * Accepted and still executing. Poll the operation route. - */ - status: 'pending'; - submittedAt: string | null; -} | { - failure: null; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); - /** - * Stable handle for this provisioning action. - */ - operationId: string; - resolvedAt: string | null; - result: { - type: 'version'; - version: string; - }; - /** - * Terminal. The result is authoritative. - */ - status: 'succeeded'; - submittedAt: string | null; -} | { - failure: { - /** - * Stable provider-neutral failure category. - */ - code: 'payment_method_required' | 'payment_failed' | 'not_provisioned' | 'invalid_target' | 'internal' | (string & {}); - detail: 'cancellation_scheduled' | 'feature_not_sold_by_plan' | 'feature_not_found' | 'payment_timeout' | 'plan_activation_timeout' | 'plan_not_found' | 'quantity_out_of_range' | 'target_rejected' | (string & {}) | null; - retryable: boolean; - }; - kind: 'change_plan' | 'adjust_fixed_charge_quantity' | (string & {}); - /** - * Stable handle for this provisioning action. - */ - operationId: string; - resolvedAt: string | null; - result: null; - /** - * Terminal. Failure contains a stable code and retryability. - */ - status: 'failed'; - submittedAt: string | null; -}; - -export type GetBillingOperationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetBillingOperationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetBillingOperationResponse404ApplicationProblemPlusJson = { - code: 'OPERATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Operation Not Found'; - type: 'https://photon.codes/docs/problems/operation-not-found'; -}; - -export type GetBillingOperationResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type GetBillingOperationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetBillingOperationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetBillingOperationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetBillingOperationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetBillingOperationResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetBillingOverviewResponse200ApplicationJson = { - /** - * Bumps on every entitlement change in any category. - */ - entitlementsVersion: number; - /** - * One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened. - */ - subscriptions: Array<{ - /** - * When the subscription will end instead of renewing, ISO 8601. - */ - cancelsAt: string | null; - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; - /** - * Display name for the subscription category; absent or null when unconfigured. - */ - categoryDisplayName?: string | null; - /** - * End of the current billing period, ISO 8601. - */ - currentPeriodEnd: string | null; - /** - * Feature gates granted by this category's plan. - */ - entitlements: Array<{ - /** - * Feature gate key, e.g. imessage_shared_lines.max_user_assignments. - */ - featureKey: string; - /** - * Gate value as a string. - */ - value: string; - }>; - /** - * Fixed charges defined by this category's current plan. Quantity is the plan default. - */ - fixedCharges: Array<{ - chargeModel: 'graduated' | 'standard' | 'volume' | (string & {}); - displayName: string; - fixedChargeCode: string; - payInAdvance: boolean; - pricing: { - amount: string | null; - tiers: Array<{ - flatAmount: string | null; - fromUnit: number; - perUnitAmount: string | null; - toUnit: number | null; - }>; - }; - prorated: boolean; - quantity: number; - }>; - /** - * This category's plan; display only. - */ - planCode: string; - /** - * State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - */ - status: 'active' | 'past_due' | 'terminated' | (string & {}); - }>; - /** - * Current-period metered usage, priced. - */ - usage: Array<{ - /** - * Cost accrued so far. - */ - amountCents: number; - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; - /** - * Display name for the subscription category; absent or null when unconfigured. - */ - categoryDisplayName?: string | null; - /** - * ISO currency code. - */ - currency: string; - /** - * Display name for this usage item. - */ - displayName: string; - /** - * Metered thing, e.g. imessage_message. - */ - metricCode: string; - /** - * Units consumed this period. - */ - units: number; - }>; -}; - -export type GetBillingOverviewResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetBillingOverviewResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetBillingOverviewResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type GetBillingOverviewResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetBillingOverviewResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetBillingOverviewResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetBillingOverviewResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetBillingOverviewResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetDefaultVoiceProfileResponse200ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; -}; - -export type GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetMessageMetricsBackfillResponse200ApplicationJson = { - failedWrites: number; - lastVerifiedAt: string | null; - processedWrites: number; - state: 'disabled' | 'pending' | 'running' | 'verifying' | 'completed' | 'paused' | 'failed' | (string & {}); - version: string; -}; - -export type GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetMessageMetricsSqlSchemaResponse200ApplicationJson = { - capabilities: { - arrayJoin: boolean; - ctes: boolean; - joins: boolean; - parameters: boolean; - selectWithoutFrom: boolean; - subqueries: boolean; - unions: boolean; - }; - dialect: string; - limits: { - maximumParameterValueBytes: number; - maximumParameters: number; - maximumSqlBytes: number; - maximumTotalParameterBytes: number; - }; - projectScoped: true; - tables: Array<{ - columns: Array<{ - description: string; - json?: { - readonly commonPaths: Array<{ - additionalProperties?: true; - readonly contentTypes?: Array; - readonly directions?: Array<'addressed' | 'received' | (string & {})>; - expression: string; - readonly itemTypes?: Array; - path: string; - required: boolean; - type: string; - readonly values?: Array; - }>; - readonly discriminators: Array<{ - path: string; - readonly values: Array; - } | { - readonly oneOfPaths: Array; - }>; - readonly platforms: Array<{ - name: 'email' | 'imessage' | 'sms' | 'telegram' | 'voice' | 'whatsapp' | 'whatsapp_business' | (string & {}); - readonly paths: Array<{ - additionalProperties?: true; - readonly contentTypes?: Array; - readonly directions?: Array<'addressed' | 'received' | (string & {})>; - expression: string; - readonly itemTypes?: Array; - path: string; - required: boolean; - type: string; - readonly values?: Array; - }>; - }>; - resource: { - contractsVersion: string; - type: 'message'; - }; - }; - name: string; - type: string; - }>; - currentState: string; - description: string; - name: 'message_events'; - }>; - version: string; -}; - -export type GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetOperationResponse200ApplicationJson = { - operation: { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; - }; - resource?: { - abilities: Array; - createdAt: string; - detail: { - [key: string]: unknown; - }; - projectId: string; - resourceId: string; - retiredAt?: string; - state: 'unallocated' | 'active' | 'retired' | (string & {}); - type: string; - updatedAt: string; - }; -}; - -export type GetOperationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetOperationResponse404ApplicationProblemPlusJson = { - code: 'OPERATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Operation Not Found'; - type: 'https://photon.codes/docs/problems/operation-not-found'; -}; - -export type GetOperationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetOperationResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetOperationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetOperationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetOperationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetOperationResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetOrganizationBillingOverviewResponse200ApplicationJson = { - /** - * Bumps on every entitlement change for the organization. - */ - entitlementsVersion: number; - /** - * The organization-owned subscription, or null when billing was never opened or has ended. - */ - subscription: { - /** - * When the subscription will end, ISO 8601. - */ - cancelsAt: string | null; - /** - * End of the current billing period, ISO 8601. - */ - currentPeriodEnd: string | null; - entitlements: Array<{ - /** - * Feature gate key. - */ - featureKey: string; - /** - * Gate value as a string. - */ - value: string; - }>; - /** - * Fixed charges defined by the organization's current plan. Quantity is the plan default. - */ - fixedCharges: Array<{ - chargeModel: 'graduated' | 'standard' | 'volume' | (string & {}); - displayName: string; - fixedChargeCode: string; - payInAdvance: boolean; - pricing: { - amount: string | null; - tiers: Array<{ - flatAmount: string | null; - fromUnit: number; - perUnitAmount: string | null; - toUnit: number | null; - }>; - }; - prorated: boolean; - quantity: number; - }>; - /** - * The organization's plan; display only. - */ - planCode: string; - /** - * State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. - */ - status: 'active' | 'past_due' | 'terminated' | (string & {}); - } | null; -}; - -export type GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetOrganizationConnectionStatusResponse200ApplicationJson = { - membership: { - errorCode: string | null; - retryAt: string | null; - status: 'pending' | 'syncing' | 'ready' | 'error' | 'blocked' | (string & {}); - }; - organization: { - errorCode: string | null; - status: 'pending' | 'syncing' | 'ready' | 'error' | 'blocked' | (string & {}); - }; - organizationId: string; - synchronized: boolean; -}; - -export type GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_CONNECTION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization Connection Not Found'; - type: 'https://photon.codes/docs/problems/organization-connection-not-found'; -}; - -export type GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SYNC_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization Synchronization Unavailable'; - type: 'https://photon.codes/docs/problems/organization-sync-unavailable'; -}; - -export type GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetOrganizationPaymentMethodResponse200ApplicationJson = { - /** - * True once a card is captured for the payer. - */ - cardOnFile: boolean; - /** - * Metadata for the default card, or null. - */ - paymentMethod: { - /** - * Card network brand, e.g. visa. - */ - brand: string | null; - /** - * Card expiration month. - */ - expiresMonth: number | null; - /** - * Four-digit card expiration year. - */ - expiresYear: number | null; - /** - * Last four card digits. - */ - last4: string | null; - } | null; -}; - -export type GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetOrganizationSsoConfigurationResponse200ApplicationJson = { - connectionChangedAt: string | null; - connectionGeneration: string; - connectionState: 'not_configured' | 'configuring' | 'ready' | 'error' | (string & {}); - connectionType?: string; - desiredSsoEnforced: boolean; - domains?: Array<{ - domain: string; - state: 'verified' | 'pending' | 'failed' | (string & {}); - }>; - organizationId: string; - policySyncStatus: 'synced' | 'manual_required' | (string & {}); - providerAvailable?: boolean; - ssoEnforced: boolean; - ssoJitEnabled: boolean; - version: string; -}; - -export type GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; -}; - -export type GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; - -export type GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; -}; - -export type GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetProjectClosureStatusResponse200ApplicationJson = { - deletionOperationId: string | null; - domains: Array<{ - blockers: Array; - domain: 'projects' | 'billing' | 'platforms' | 'call_registry' | (string & {}); - ready: boolean; - }>; - organizationId: string; - projectId: string; - ready: boolean; -}; - -export type GetProjectClosureStatusResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetProjectClosureStatusResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetProjectClosureStatusResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type GetProjectClosureStatusResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetProjectClosureStatusResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetProjectClosureStatusResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetProjectClosureStatusResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetProjectImessagePlatformResponse200ApplicationJson = { - maxUserAssignments: number; - mode: 'shared'; -} | { - mode: 'dedicated'; -}; - -export type GetProjectImessagePlatformResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetProjectImessagePlatformResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetProjectImessagePlatformResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetProjectImessagePlatformResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetProjectImessagePlatformResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetProjectImessagePlatformResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetProjectResponse200ApplicationJson = { - agentProfile: { - avatarUrl: string; - firstName: string; - lastName: string | null; - }; - billingInitialization?: 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); - createdAt: string; - createdByAccountId: string | null; - createdByActorId: string | null; - createdByActorKind: 'account' | 'service_identity' | (string & {}) | null; - deletedAt: string | null; - name: string; - organizationId: string; - projectId: string; - slug: string; - updatedAt: string; -}; - -export type GetProjectResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetProjectResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type GetProjectResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type GetProjectResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetProjectResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetProjectResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetProjectResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type GetProjectWhatsappPlatformResponse200ApplicationJson = { - maxUserAssignments: number; - mode: 'shared'; -} | { - mode: 'dedicated'; -}; - -export type GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetResourceResponse200ApplicationJson = { - abilities: Array; - createdAt: string; - detail: { - [key: string]: unknown; - }; - projectId: string; - resourceId: string; - retiredAt?: string; - state: 'unallocated' | 'active' | 'retired' | (string & {}); - type: string; - updatedAt: string; -}; - -export type GetResourceResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetResourceResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -}; - -export type GetResourceResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetResourceResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetResourceResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetResourceResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetResourceResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetResourceResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetSharedLineAssignmentResponse200ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type GetSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetSharedLineAssignmentResponse404ApplicationProblemPlusJson = { - code: 'ASSIGNMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Assignment Not Found'; - type: 'https://photon.codes/docs/problems/assignment-not-found'; -}; - -export type GetSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetSmsLineCampaignAssignmentResponse200ApplicationJson = { - campaign: { - id: string; - organizationId: string; - } | null; - campaignObservedAt: string | null; - eligibility: 'eligible' | 'blocked' | 'unknown' | (string & {}); - observedAt: string | null; - operationId: string | null; - providerAssignmentStatus: string | null; - reasonCode: string | null; - requestedCampaignId: string | null; - resourceId: string; - version: number; -}; - -export type GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_INVALID_REQUEST'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid SMS campaign request'; - type: 'https://photon.codes/docs/problems/sms-campaign-invalid-request'; -}; - -export type GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -} | { - code: 'SMS_CAMPAIGN_ORGANIZATION_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Campaign belongs to another organization'; - type: 'https://photon.codes/docs/problems/sms-campaign-organization-mismatch'; -}; - -export type GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Campaign not found'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-found'; -} | { - code: 'SMS_LINE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'SMS line not found'; - type: 'https://photon.codes/docs/problems/sms-line-not-found'; -}; - -export type GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'SMS_LINE_UNSUPPORTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'SMS line unsupported'; - type: 'https://photon.codes/docs/problems/sms-line-unsupported'; -} | { - code: 'SMS_CAMPAIGN_NOT_READY'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign not ready'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-ready'; -} | { - code: 'SMS_CAMPAIGN_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment version conflict'; - type: 'https://photon.codes/docs/problems/sms-campaign-version-conflict'; -} | { - code: 'SMS_CAMPAIGN_MUTATION_IN_PROGRESS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment mutation in progress'; - type: 'https://photon.codes/docs/problems/sms-campaign-mutation-in-progress'; -} | { - code: 'SMS_CAMPAIGN_CAPACITY_EXCEEDED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign number capacity exhausted'; - type: 'https://photon.codes/docs/problems/sms-campaign-capacity-exceeded'; -} | { - code: 'SMS_CAMPAIGN_RECONCILIATION_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign reconciliation required'; - type: 'https://photon.codes/docs/problems/sms-campaign-reconciliation-required'; -}; - -export type GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Campaign context unavailable'; - type: 'https://photon.codes/docs/problems/sms-campaign-context-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetVoiceLineProfileAssignmentResponse200ApplicationJson = { - profileId?: string; - profileVersion?: number; - projectId: string; - resourceId: string; - resourceVersion: number; - updatedAt: string; -}; - -export type GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -}; - -export type GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetVoiceProfileResponse200ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; -}; - -export type GetVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetVoiceProfileResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type GetVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWebhookDestinationResponse200ApplicationJson = { - apiVersion: string; - createdAt: string; - deletedAt: string | null; - description: string | null; - destinationId: string; - enabledEvents: Array | Array; - name: string; - projectId: string; - status: 'enabled' | 'disabled' | (string & {}); - updatedAt: string; - url: string; -}; - -export type GetWebhookDestinationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWebhookDestinationResponse404ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Webhook Destination Not Found'; - type: 'https://photon.codes/docs/problems/webhook-destination-not-found'; -}; - -export type GetWebhookDestinationResponse410ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Webhook Destination Deleted'; - type: 'https://photon.codes/docs/problems/webhook-destination-deleted'; -}; - -export type GetWebhookDestinationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetWebhookDestinationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetWebhookDestinationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson = { - [key: string]: __schema0; -}; - -export type GetWebhookEventSchemaResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type GetWebhookEventSchemaResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWebhookEventSchemaResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetWebhookEventSchemaResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetWebhookEventSchemaResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWhatsappBusinessAccountResponse200ApplicationJson = { - accountName: string | null; - alerts: Array<{ - description: string; - entityId: string; - entityType: string; - observedAt: string; - severity: string; - status: string; - type: string; - }>; - businessId: string; - businessName: string | null; - connectedAt: string; - maxPhoneNumbersPerBusiness?: number; - outboundCapacity: '50' | '250' | '1000' | '2000' | '10000' | '100000' | 'UNLIMITED' | 'UNTIERED' | 'UNKNOWN' | (string & {}); - restriction: { - observedAt: string; - status: 'FLAGGED' | 'DISABLED' | 'REINSTATED' | 'UNKNOWN' | (string & {}); - } | null; - reviewStatus: 'PENDING' | 'APPROVED' | 'REJECTED' | 'UNKNOWN' | (string & {}); - senderCount: number; - subscribedAt?: string; - wabaId: string; -}; - -export type GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson = { - code: 'WHATSAPP_WABA_NOT_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp Business Account Not Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-waba-not-connected'; -}; - -export type GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse200ApplicationJson = { - code: string; - receivedAt: string; -}; - -export type GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -} | { - code: 'WHATSAPP_VERIFICATION_CODE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp Verification Code Not Found'; - type: 'https://photon.codes/docs/problems/whatsapp-verification-code-not-found'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'WHATSAPP_VERIFICATION_WINDOW_EXPIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'WhatsApp Verification Window Expired'; - type: 'https://photon.codes/docs/problems/whatsapp-verification-window-expired'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWhatsappSharedLineAssignmentResponse200ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson = { - code: 'ASSIGNMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Assignment Not Found'; - type: 'https://photon.codes/docs/problems/assignment-not-found'; -}; - -export type GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type GetWhatsappSignupConfigResponse200ApplicationJson = { - configId: string; - graphVersion: string; - scopes: Array; -}; - -export type GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListAccountServiceKeysResponse200ApplicationJson = { - serviceKeys: Array<{ - accountId: string; - createdAt: string; - expiresAt: string | null; - name: string; - revokedAt: string | null; - serviceKeyId: string; - }>; -}; - -export type ListAccountServiceKeysResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListAccountServiceKeysResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type ListAccountServiceKeysResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type ListAccountServiceKeysResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListAccountServiceKeysResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListAccountServiceKeysResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListAccountServiceKeysResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListAttachmentsResponse200ApplicationJson = { - items: Array<{ - contentType: string; - createdAt: string; - filename?: string; - id: string; - metadata?: { - [key: string]: unknown; - }; - projectId: string; - sizeBytes: number; - updatedAt: string; - }>; - /** - * Continue with this token, even if items is empty. Omitted when no more pages remain. - */ - nextPageToken?: string; -}; - -export type ListAttachmentsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListAttachmentsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListAttachmentsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListAttachmentsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListAttachmentsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListAttachmentsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListAuthorizedApplicationsResponse200ApplicationJson = { - /** - * One page of applications authorized by the authenticated user. - */ - authorizedApplications: Array<{ - /** - * The OAuth application authorized by the authenticated user. - */ - application: { - /** - * OAuth application type reported by the authorization server. - */ - applicationType: string; - /** - * OAuth client identifier used by the application in authorization requests. - */ - clientId: string; - /** - * UTC timestamp when the application was created, in RFC 3339 format. - */ - createdAt: string; - /** - * Application description, or null when no description is set. - */ - description: string | null; - /** - * Application identifier to pass as applicationId when revoking this application's grant. - */ - id: string; - /** - * Whether the application is classified as first-party by the authorization server. - */ - isFirstParty: boolean; - /** - * Display name of the authorized application. - */ - name: string; - /** - * Registered OAuth callback URLs for the application. - */ - redirectUris: Array<{ - /** - * Whether this is the application's default redirect URI. - */ - default: boolean; - /** - * Registered OAuth callback URL for the application. - */ - uri: string; - }>; - /** - * OAuth scope slugs configured for the application; grantedScopes records what the user authorized. - */ - scopes: Array; - /** - * UTC timestamp when the application was last updated, in RFC 3339 format. - */ - updatedAt: string; - /** - * Whether the application uses Proof Key for Code Exchange (PKCE). - */ - usesPkce: boolean; - }; - /** - * Identifier of the user's authorization grant for this application. - */ - authorizationId: string; - /** - * OAuth scope slugs the user has granted to this application. - */ - grantedScopes: Array; - /** - * OAuth resource associated with the grant, or null when no resource is specified. - */ - oauthResource: string | null; - }>; - /** - * Pagination cursors to pass as after or before in the next list request. - */ - listMetadata: { - /** - * Cursor for the next page, or null when there is no next page. - */ - after: string | null; - /** - * Cursor for the previous page, or null when there is no previous page. - */ - before: string | null; - }; -}; - -export type ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListBillingPlansResponse200ApplicationJson = { - /** - * Plans grouped by valid metadata type and explicitly published with visible="true". - */ - plans: { - [key: string]: Array<{ - /** - * Recurring base price in whole cents. - */ - baseAmountCents: number; - /** - * Display name for the subscription category; absent or null when unconfigured. - */ - categoryDisplayName?: string | null; - /** - * ISO currency code. - */ - currency: string; - description: string | null; - entitlements: Array<{ - featureKey: string; - value: string; - }>; - fixedCharges: Array<{ - chargeModel: 'graduated' | 'standard' | 'volume' | (string & {}); - displayName: string; - fixedChargeCode: string; - payInAdvance: boolean; - pricing: { - amount: string | null; - tiers: Array<{ - flatAmount: string | null; - fromUnit: number; - perUnitAmount: string | null; - toUnit: number | null; - }>; - }; - prorated: boolean; - quantity: number; - }>; - interval: 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly' | (string & {}); - name: string; - payInAdvance: boolean; - planCode: string; - usageCharges: Array<{ - chargeCode: string | null; - chargeModel: 'dynamic' | 'graduated' | 'graduated_percentage' | 'package' | 'percentage' | 'standard' | 'volume' | (string & {}); - displayName: string | null; - filters: Array<{ - displayName: string | null; - pricing: { - amount: string | null; - fixedAmount: string | null; - freeUnits: number | null; - freeUnitsPerEvents: number | null; - freeUnitsPerTotalAggregation: string | null; - packageSize: number | null; - perTransactionMaxAmount: string | null; - perTransactionMinAmount: string | null; - pricingGroupKeys: Array; - rate: string | null; - tiers: Array<{ - flatAmount: string | null; - fromUnit: number; - perUnitAmount: string | null; - rate: string | null; - toUnit: number | null; - }>; - }; - values: Array<{ - key: string; - values: Array; - }>; - }>; - invoiceable: boolean; - metricCode: string; - minimumAmountCents: number; - payInAdvance: boolean; - pricing: { - amount: string | null; - fixedAmount: string | null; - freeUnits: number | null; - freeUnitsPerEvents: number | null; - freeUnitsPerTotalAggregation: string | null; - packageSize: number | null; - perTransactionMaxAmount: string | null; - perTransactionMinAmount: string | null; - pricingGroupKeys: Array; - rate: string | null; - tiers: Array<{ - flatAmount: string | null; - fromUnit: number; - perUnitAmount: string | null; - rate: string | null; - toUnit: number | null; - }>; - }; - prorated: boolean; - }>; - }>; - }; -}; - -export type ListBillingPlansResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListBillingPlansResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListBillingPlansResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type ListBillingPlansResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListBillingPlansResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListBillingPlansResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListBillingPlansResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListBillingPlansResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListInvoicesResponse200ApplicationJson = { - invoices: Array<{ - /** - * ISO currency code. - */ - currency: string; - /** - * Invoice id. - */ - invoiceId: string; - /** - * Issue date, ISO 8601. - */ - issuedAt: string | null; - /** - * What produced the invoice. - */ - kind: 'subscription' | 'one_off' | 'credit' | (string & {}); - /** - * Human invoice number. - */ - number: string; - /** - * Provider-neutral payment status. - */ - paymentStatus: 'pending' | 'succeeded' | 'failed' | (string & {}); - /** - * Downloadable PDF link. - */ - pdfUrl: string | null; - /** - * Known associated billing subjects, deduplicated. Empty means no known association, not organization-level charges. - */ - subjects: Array<{ - projectId: string; - type: 'project'; - } | { - organizationId: string; - type: 'organization'; - }>; - /** - * Invoice total in cents. - */ - totalCents: number; - }>; -}; - -export type ListInvoicesResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListInvoicesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListInvoicesResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -}; - -export type ListInvoicesResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListInvoicesResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListInvoicesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListInvoicesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListInvoicesResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListNumberAreaCodesResponse200ApplicationJson = { - areaCodes: Array; - countryCode: 'US'; -}; - -export type ListNumberAreaCodesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListNumberAreaCodesResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListNumberAreaCodesResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListNumberAreaCodesResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListNumberAreaCodesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListNumberAreaCodesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListNumberAreaCodesResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListNumberCountriesResponse200ApplicationJson = { - countries: Array<{ - callingCode: string; - countryCode: string; - displayName: string; - }>; -}; - -export type ListNumberCountriesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListNumberCountriesResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListNumberCountriesResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListNumberCountriesResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListNumberCountriesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListNumberCountriesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListNumberCountriesResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListOauthScopesResponse200ApplicationJson = { - /** - * Business permissions an OAuth application can be configured with. Client creation and scope updates accept only these values. OIDC protocol scopes (openid, profile, email, offline_access) are not included. - */ - scopes: Array; -}; - -export type ListOauthScopesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListOauthScopesResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListOperationsResponse200ApplicationJson = { - nextPageToken?: string; - operations: Array<{ - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; - }>; -}; - -export type ListOperationsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListOperationsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListOperationsResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListOperationsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListOperationsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListOperationsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListOperationsResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListProjectApiKeysResponse200ApplicationJson = { - apiKeys: Array<{ - apiKeyId: string; - createdAt: string; - createdByAccountId: string; - expiresAt: string | null; - name: string; - permissions: Array; - permissionsUpdatedAt: string | null; - projectId: string; - revokedAt: string | null; - }>; -}; - -export type ListProjectApiKeysResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListProjectApiKeysResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListProjectApiKeysResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type ListProjectApiKeysResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type ListProjectApiKeysResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListProjectApiKeysResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListProjectApiKeysResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListProjectPlatformsResponse200ApplicationJson = { - platforms: Array<{ - description: string; - displayName: string; - type: string; - }>; -}; - -export type ListProjectPlatformsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListProjectPlatformsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListProjectPlatformsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListProjectPlatformsResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListProjectsResponse200ApplicationJson = { - nextPageToken?: string; - projects: Array<{ - agentProfile: { - avatarUrl: string; - firstName: string; - lastName: string | null; - }; - billingInitialization?: 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); - createdAt: string; - createdByAccountId: string | null; - createdByActorId: string | null; - createdByActorKind: 'account' | 'service_identity' | (string & {}) | null; - deletedAt: string | null; - name: string; - organizationId: string; - projectId: string; - slug: string; - updatedAt: string; - }>; -}; - -export type ListProjectsResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListProjectsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListProjectsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListProjectsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListProjectsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListProjectsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ListResourcesResponse200ApplicationJson = { - nextPageToken?: string; - resources: Array<{ - abilities: Array; - createdAt: string; - detail: { - [key: string]: unknown; - }; - projectId: string; - resourceId: string; - retiredAt?: string; - state: 'unallocated' | 'active' | 'retired' | (string & {}); - type: string; - updatedAt: string; - }>; -}; - -export type ListResourcesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListResourcesResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListResourcesResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListResourcesResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListResourcesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListResourcesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListResourcesResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListSharedLineAssignmentsResponse200ApplicationJson = { - assignments: Array<{ - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; - }>; - nextPageToken?: string; -}; - -export type ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListVoiceProfilesResponse200ApplicationJson = { - nextPageToken?: string; - profiles: Array<{ - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; - createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; - projectId: string; - protocol: 'sip'; - updatedAt: string; - version: number; - }>; -}; - -export type ListVoiceProfilesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListVoiceProfilesResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListVoiceProfilesResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListVoiceProfilesResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListVoiceProfilesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListVoiceProfilesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListVoiceProfilesResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListWebhookApiVersionsResponse200ApplicationJson = { - apiVersions: Array<{ - retirement: { - migrationGuide: string; - reason: string; - } | null; - selectable: true; - status: 'preview' | 'latest' | 'maintain' | (string & {}); - successor: string | null; - version: string; - } | { - retirement: { - migrationGuide: string; - reason: string; - }; - selectable: false; - status: 'deprecated'; - successor: string | null; - version: string; - }>; - contractNamespace: '@photon-hq/contracts'; - packageVersion: string; -}; - -export type ListWebhookApiVersionsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWebhookApiVersionsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListWebhookApiVersionsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListWebhookApiVersionsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListWebhookDestinationsResponse200ApplicationJson = { - destinations: Array<{ - apiVersion: string; - createdAt: string; - deletedAt: string | null; - description: string | null; - destinationId: string; - enabledEvents: Array | Array; - name: string; - projectId: string; - status: 'enabled' | 'disabled' | (string & {}); - updatedAt: string; - url: string; - }>; - nextPageToken?: string; -}; - -export type ListWebhookDestinationsResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListWebhookDestinationsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWebhookDestinationsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListWebhookDestinationsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListWebhookDestinationsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListWebhookEgressAddressesResponse200ApplicationJson = { - /** - * Every public IPv4 address webhook deliveries can originate from. Allow-list all of them; deliveries are spread across every address. - */ - ipAddresses: Array; -}; - -export type ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWebhookEventTypesResponse200ApplicationJson = { - apiVersion: string; - contractNamespace: '@photon-hq/contracts'; - events: Array<{ - audience: 'agent' | 'infrastructure' | (string & {}); - description: string; - schemaProfile: 'reader'; - schemaUrl: string; - type: string; - }>; - packageVersion: string; - retirement: { - migrationGuide: string; - reason: string; - } | null; - selectable: true; - status: 'preview' | 'latest' | 'maintain' | (string & {}); - successor: string | null; -} | { - apiVersion: string; - contractNamespace: '@photon-hq/contracts'; - events: Array<{ - audience: 'agent' | 'infrastructure' | (string & {}); - description: string; - schemaProfile: 'reader'; - schemaUrl: string; - type: string; - }>; - packageVersion: string; - retirement: { - migrationGuide: string; - reason: string; - }; - selectable: false; - status: 'deprecated'; - successor: string | null; -}; - -export type ListWebhookEventTypesResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type ListWebhookEventTypesResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWebhookEventTypesResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListWebhookEventTypesResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListWebhookEventTypesResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse200ApplicationJson = { - phoneNumbers: Array<{ - displayName: string | null; - ownership: 'photon' | 'meta' | (string & {}); - phoneNumber: string; - phoneNumberId: string; - }>; - wabaId: string; -}; - -export type ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson = { - code: 'WHATSAPP_WABA_NOT_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'WhatsApp Business Account Not Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-waba-not-connected'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse200ApplicationJson = { - assignments: Array<{ - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; - }>; - nextPageToken?: string; -}; - -export type ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type PhotonProblem_FORBIDDEN_403 = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -}; - -export type PhotonProblem_INTERNAL_ERROR_500 = { - code: 'INTERNAL_ERROR'; - detail?: string; - instance?: string; - requestId?: string; - status: 500; - title: 'Internal Server Error'; - type: 'https://photon.codes/docs/problems/internal-error'; -}; - -export type PhotonProblem_NOT_AUTHENTICATED_401 = { - code: 'NOT_AUTHENTICATED'; - detail?: string; - instance?: string; - requestId?: string; - status: 401; - title: 'Not Authenticated'; - type: 'https://photon.codes/docs/problems/not-authenticated'; -}; - -export type PhotonProblem_UPSTREAM_UNAVAILABLE_503 = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ProvisionImessageDedicatedLineResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -}; - -export type ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ProvisionWhatsappDedicatedLineResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -}; - -export type ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type PurchaseSmsNumberRequestApplicationJson = { - areaCode?: string; - countryCode: 'US'; -}; - -export type PurchaseSmsNumberResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type PurchaseSmsNumberResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type PurchaseSmsNumberResponse402ApplicationProblemPlusJson = { - code: 'ENTITLEMENT_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 402; - title: 'Entitlement Required'; - type: 'https://photon.codes/docs/problems/entitlement-required'; -}; - -export type PurchaseSmsNumberResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type PurchaseSmsNumberResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -}; - -export type PurchaseSmsNumberResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type PurchaseSmsNumberResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type PurchaseSmsNumberResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type PurchaseSmsNumberResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type PurchaseSmsNumberResponse503ApplicationProblemPlusJson = { - code: 'BILLING_NOT_PROVISIONED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Billing Not Provisioned'; - type: 'https://photon.codes/docs/problems/billing-not-provisioned'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type PurchaseSmsNumberResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type QueryMessageMetricsResponse200ApplicationJson = { - columns: Array<{ - name: string; - type: string; - }>; - rows: Array>; - statistics: { - bytesRead: number; - elapsedSeconds: number; - rowsRead: number; - }; -}; - -export type QueryMessageMetricsResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type QueryMessageMetricsResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type QueryMessageMetricsResponse422ApplicationProblemPlusJson = { - code: 'QUERY_RESOURCE_LIMIT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Query Resource Limit'; - type: 'https://photon.codes/docs/problems/query-resource-limit'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type QueryMessageMetricsResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type QueryMessageMetricsResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type QueryMessageMetricsResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RedeemAppInstallationDeliveryRequestApplicationJson = { - appId: string; - clientAssertion: string; - code: string; -}; - -export type RedeemAppInstallationDeliveryResponse200ApplicationJson = { - clientId: string; - clientSecret: string; - installationId: string; - status: 'created'; -} | { - installationId: string; - status: 'delivery_consumed' | 'recovery_required' | 'revocation_pending' | 'revoked' | (string & {}); -}; - -export type RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson = { - code: 'APP_INSTALLATION_ASSERTION_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 401; - title: 'Invalid Installation Client Assertion'; - type: 'https://photon.codes/docs/problems/app-installation-assertion-invalid'; -}; - -export type RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson = { - code: 'APP_INSTALLATION_DELIVERY_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Installation Delivery Unavailable'; - type: 'https://photon.codes/docs/problems/app-installation-delivery-unavailable'; -}; - -export type RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RefreshOrganizationSsoConnectionResponse200ApplicationJson = { - connectionChangedAt: string | null; - connectionGeneration: string; - connectionState: 'not_configured' | 'configuring' | 'ready' | 'error' | (string & {}); - connectionType?: string; - desiredSsoEnforced: boolean; - domains?: Array<{ - domain: string; - state: 'verified' | 'pending' | 'failed' | (string & {}); - }>; - organizationId: string; - policySyncStatus: 'synced' | 'manual_required' | (string & {}); - providerAvailable?: boolean; - ssoEnforced: boolean; - ssoJitEnabled: boolean; - version: string; -}; - -export type RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; -}; - -export type RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; - -export type RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; -}; - -export type RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ReleaseImessageDedicatedLineResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseImessageDedicatedLineResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -}; - -export type ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ReleaseResourceResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseResourceResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseResourceResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReleaseResourceResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -}; - -export type ReleaseResourceResponse409ApplicationProblemPlusJson = { - code: 'WHATSAPP_SENDER_CONNECTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Sender Connected'; - type: 'https://photon.codes/docs/problems/whatsapp-sender-connected'; -} | { - code: 'WHATSAPP_SENDER_PROVISIONING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'WhatsApp Sender Provisioning'; - type: 'https://photon.codes/docs/problems/whatsapp-sender-provisioning'; -}; - -export type ReleaseResourceResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReleaseResourceResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReleaseResourceResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReleaseResourceResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReleaseResourceResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReleaseResourceResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ReleaseSharedLineAssignmentResponse200ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson = { - code: 'ASSIGNMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Assignment Not Found'; - type: 'https://photon.codes/docs/problems/assignment-not-found'; -}; - -export type ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ReleaseWhatsappDedicatedLineResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseWhatsappDedicatedLineResponse202ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; -}; - -export type ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson = { - assignedPhoneNumber: string; - assignmentId: string; - createdAt: string; - email?: string; - firstName?: string; - handle: string; - lastName?: string; - platform: 'imessage' | 'whatsapp' | (string & {}); - projectId: string; - releasedAt?: string; - updatedAt: string; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson = { - code: 'ASSIGNMENT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Assignment Not Found'; - type: 'https://photon.codes/docs/problems/assignment-not-found'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ReplaceVoiceProfileInboundRequestApplicationJson = { - credentials: { - password: string; - username: string; - } | null; - destinationUri: string; - expectedVersion: number; -}; - -export type ReplaceVoiceProfileInboundResponse200ApplicationJson = { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - profileVersion: number; -}; - -export type ReplaceVoiceProfileInboundResponse201ApplicationJson = { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - profileVersion: number; -}; - -export type ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; -}; - -export type ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type ResetAccountProfilePictureResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; - [key: string]: unknown; -}; - -export type ResetAccountProfilePictureResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -}; - -export type ResetAccountProfilePictureResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ResetAccountProfilePictureResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type ResetAccountProfilePictureResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type ResetAccountProfilePictureResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type ResetAccountProfilePictureResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ResetAccountProfilePictureResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ResetAccountProfilePictureResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ResetAccountProfilePictureResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ResetAccountProfilePictureResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ResetAgentProfileAvatarResponse200ApplicationJson = { - avatarUrl: string; - firstName: string; - lastName: string | null; -}; - -export type ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -}; - -export type ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type ResumeSubscriptionRequestApplicationJson = { - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; -}; - -export type ResumeSubscriptionResponse200ApplicationJson = { - /** - * Category slug, e.g. analytics or messaging. - */ - category: string; - /** - * False when the subscription was not scheduled to cancel. - */ - resumed: boolean; -}; - -export type ResumeSubscriptionResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type ResumeSubscriptionResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type ResumeSubscriptionResponse409ApplicationProblemPlusJson = { - code: 'FAILED_PRECONDITION'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Failed Precondition'; - type: 'https://photon.codes/docs/problems/failed-precondition'; -} | { - code: 'IDEMPOTENCY_REQUEST_IN_PROGRESS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Idempotency Request In Progress'; - type: 'https://photon.codes/docs/problems/idempotency-request-in-progress'; -}; - -export type ResumeSubscriptionResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type ResumeSubscriptionResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type ResumeSubscriptionResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type ResumeSubscriptionResponse503ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Idempotency Unavailable'; - type: 'https://photon.codes/docs/problems/idempotency-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type ResumeSubscriptionResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type RetryOrganizationConnectionSyncResponse200ApplicationJson = { - membership: { - errorCode: string | null; - retryAt: string | null; - status: 'pending' | 'syncing' | 'ready' | 'error' | 'blocked' | (string & {}); - }; - organization: { - errorCode: string | null; - status: 'pending' | 'syncing' | 'ready' | 'error' | 'blocked' | (string & {}); - }; - organizationId: string; - synchronized: boolean; -}; - -export type RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_CONNECTION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization Connection Not Found'; - type: 'https://photon.codes/docs/problems/organization-connection-not-found'; -}; - -export type RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SYNC_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization Synchronization Unavailable'; - type: 'https://photon.codes/docs/problems/organization-sync-unavailable'; -}; - -export type RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RevokeAccountServiceKeyResponse200ApplicationJson = { - serviceKey: { - accountId: string; - createdAt: string; - expiresAt: string | null; - name: string; - revokedAt: string | null; - serviceKeyId: string; - }; -}; - -export type RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -}; - -export type RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -} | { - code: 'ACCOUNT_SERVICE_KEY_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Service Key Not Found'; - type: 'https://photon.codes/docs/problems/account-service-key-not-found'; -}; - -export type RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; - -export type RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RevokeProjectApiKeyResponse200ApplicationJson = { - apiKey: { - apiKeyId: string; - createdAt: string; - createdByAccountId: string; - expiresAt: string | null; - name: string; - permissions: Array; - permissionsUpdatedAt: string | null; - projectId: string; - revokedAt: string | null; - }; -}; - -export type RevokeProjectApiKeyResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type RevokeProjectApiKeyResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type RevokeProjectApiKeyResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -} | { - code: 'API_KEY_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'API Key Not Found'; - type: 'https://photon.codes/docs/problems/api-key-not-found'; -}; - -export type RevokeProjectApiKeyResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; -}; - -export type RevokeProjectApiKeyResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type RevokeProjectApiKeyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RevokeProjectApiKeyResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type RotateVoiceProfileOutboundCredentialRequestApplicationJson = { - expectedVersion: number; - mode: 'normal' | 'emergency' | (string & {}); -}; - -export type RotateVoiceProfileOutboundCredentialResponse200ApplicationJson = { - password: string | null; - previousPasswordValidUntil: string | null; - profileVersion: number; -}; - -export type RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; -} | { - code: 'VOICE_OUTBOUND_NOT_CONFIGURED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Not Configured'; - type: 'https://photon.codes/docs/problems/voice-outbound-not-configured'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type RotateWebhookSigningSecretRequestApplicationJson = { - /** - * @default 86400 - */ - overlapSeconds?: number; -}; - -export type RotateWebhookSigningSecretResponse200ApplicationJson = { - previousSecretExpiresAt: string | null; - signingSecret: string; -}; - -export type RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Webhook Destination Not Found'; - type: 'https://photon.codes/docs/problems/webhook-destination-not-found'; -}; - -export type RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Webhook Destination Deleted'; - type: 'https://photon.codes/docs/problems/webhook-destination-deleted'; -}; - -export type RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type StartAccountPhoneVerificationRequestApplicationJson = { - captcha?: { - challengeContext: string; - token: string; - }; - phoneNumber: string; -}; - -export type StartAccountPhoneVerificationResponse201ApplicationJson = { - channel: 'sms'; - expiresAt: string; - resendAvailableAt: string; -}; - -export type StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson = { - challengeContext: string; - code: 'CAPTCHA_REQUIRED'; - detail?: string; - instance?: string; - provider: 'turnstile' | 'hcaptcha' | (string & {}); - remediation?: unknown; - requestId?: string; - siteKey: string; - status: 403; - title: 'Captcha Required'; - type: 'https://photon.codes/docs/problems/captcha-required'; -} | { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; -}; - -export type StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; -}; - -export type StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; - -export type StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; - -export type StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type StartEnterpriseLoginRequestApplicationJson = { - invitationToken?: string; - organizationId: string; - returnTo: string; -} | { - invitationToken: string; - returnTo: string; -} | { - retryToken: string; -}; - -export type StartEnterpriseLoginResponse200ApplicationJson = { - url: string; -}; - -export type StartEnterpriseLoginResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -}; - -export type UnassignSmsLineCampaignResponse200ApplicationJson = { - cancellable: boolean; - createdAt: string; - detail?: { - [key: string]: unknown; - }; - endedAt?: string; - error?: { - code: string; - detail: string; - }; - operationId: string; - projectId: string; - resourceId?: string; - resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type UnassignSmsLineCampaignResponse202ApplicationJson = { +export type Operation = { cancellable: boolean; createdAt: string; detail?: { [key: string]: unknown; }; endedAt?: string; - error?: { - code: string; - detail: string; - }; + error?: OperationError; operationId: string; projectId: string; resourceId?: string; resourceType: string; - startedAt?: string; - state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); - type: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); - updatedAt: string; -}; - -export type UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_INVALID_REQUEST'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid SMS campaign request'; - type: 'https://photon.codes/docs/problems/sms-campaign-invalid-request'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -}; - -export type UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -} | { - code: 'SMS_CAMPAIGN_ORGANIZATION_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Campaign belongs to another organization'; - type: 'https://photon.codes/docs/problems/sms-campaign-organization-mismatch'; -}; - -export type UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Campaign not found'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-found'; -} | { - code: 'SMS_LINE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'SMS line not found'; - type: 'https://photon.codes/docs/problems/sms-line-not-found'; -}; - -export type UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'SMS_LINE_UNSUPPORTED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'SMS line unsupported'; - type: 'https://photon.codes/docs/problems/sms-line-unsupported'; -} | { - code: 'SMS_CAMPAIGN_NOT_READY'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign not ready'; - type: 'https://photon.codes/docs/problems/sms-campaign-not-ready'; -} | { - code: 'SMS_CAMPAIGN_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment version conflict'; - type: 'https://photon.codes/docs/problems/sms-campaign-version-conflict'; -} | { - code: 'SMS_CAMPAIGN_MUTATION_IN_PROGRESS'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Assignment mutation in progress'; - type: 'https://photon.codes/docs/problems/sms-campaign-mutation-in-progress'; -} | { - code: 'SMS_CAMPAIGN_CAPACITY_EXCEEDED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign number capacity exhausted'; - type: 'https://photon.codes/docs/problems/sms-campaign-capacity-exceeded'; -} | { - code: 'SMS_CAMPAIGN_RECONCILIATION_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Campaign reconciliation required'; - type: 'https://photon.codes/docs/problems/sms-campaign-reconciliation-required'; -}; - -export type UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -}; - -export type UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; -}; - -export type UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; - -export type UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; - -export type UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson = { - code: 'SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Campaign context unavailable'; - type: 'https://photon.codes/docs/problems/sms-campaign-context-unavailable'; -} | { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; - -export type UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -}; - -export type UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + startedAt?: string; + state: OperationState; + type: OperationType; + updatedAt: string; }; -export type UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson = { - code: 'RESOURCE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Resource Not Found'; - type: 'https://photon.codes/docs/problems/resource-not-found'; +export type OperationError = { + code: string; + detail: string; }; -export type UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; +export type OperationNotCancellableProblem = { + code: 'OPERATION_NOT_CANCELLABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; + title: 'Operation Not Cancellable'; + type: 'https://photon.codes/docs/problems/operation-not-cancellable'; + [key: string]: JsonValue | 'OPERATION_NOT_CANCELLABLE' | string | never | 409 | 'Operation Not Cancellable' | 'https://photon.codes/docs/problems/operation-not-cancellable' | undefined; }; -export type UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type OperationNotFoundProblem = { + code: 'OPERATION_NOT_FOUND'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; + status: 404; + title: 'Operation Not Found'; + type: 'https://photon.codes/docs/problems/operation-not-found'; + [key: string]: JsonValue | 'OPERATION_NOT_FOUND' | string | never | 404 | 'Operation Not Found' | 'https://photon.codes/docs/problems/operation-not-found' | undefined; }; -export type UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type OperationPage = { + nextPageToken?: string; + operations: Array; }; -export type UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type OperationState = 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | (string & {}); + +export type OperationType = 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); + +export type OrganizationAuthenticationRedirect = { + url: string; }; -export type UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type OrganizationAuthenticationRequest = { + returnTo: string; }; -export type UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type OrganizationConnectionNotFoundProblem = { + code: 'ORGANIZATION_CONNECTION_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 404; + title: 'Organization Connection Not Found'; + type: 'https://photon.codes/docs/problems/organization-connection-not-found'; + [key: string]: JsonValue | 'ORGANIZATION_CONNECTION_NOT_FOUND' | string | never | 404 | 'Organization Connection Not Found' | 'https://photon.codes/docs/problems/organization-connection-not-found' | undefined; }; -export type UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; +export type OrganizationConnectionStatus = { + membership: OrganizationConnectionStatusMembership; + organization: OrganizationConnectionStatusOrganization; + organizationId: string; + synchronized: boolean; + [key: string]: unknown; }; -export type UpdateAccountRequestApplicationJson = { - firstName?: string; - lastName?: string | null; +export type OrganizationConnectionStatusMembership = { + errorCode: string | null; + retryAt: string | null; + status: OrganizationConnectionSyncStatus; + [key: string]: unknown; }; -export type UpdateAccountResponse200ApplicationJson = { - accountId: string; - createdAt: string | null; - deletedAt: string | null; - email: string; - firstName: string | null; - lastName: string | null; - phoneNumber: string | null; - phoneVerifiedAt: string | null; - pictureUrl: string; - updatedAt: string | null; +export type OrganizationConnectionStatusOrganization = { + errorCode: string | null; + status: OrganizationConnectionSyncStatus; [key: string]: unknown; }; -export type UpdateAccountResponse400ApplicationProblemPlusJson = { - code: 'HTTP_ERROR'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Request Failed'; - type: 'https://photon.codes/docs/problems/http-error'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; +export type OrganizationConnectionSyncStatus = 'pending' | 'syncing' | 'ready' | 'error' | 'blocked' | (string & {}); + +export type OrganizationEnterpriseLoginRequest = { + invitationToken?: string; + organizationId: string; + returnTo: string; +}; + +export type OrganizationInvoiceSubject = { + organizationId: string; + type: 'organization'; +}; + +export type OrganizationSsoConfiguration = { + connectionChangedAt: string | null; + connectionGeneration: string; + connectionState: OrganizationSsoConfigurationConnectionState; + connectionType?: string; + desiredSsoEnforced: boolean; + domains?: Array; + organizationId: string; + policySyncStatus: OrganizationSsoConfigurationPolicySyncStatus; + providerAvailable?: boolean; + ssoEnforced: boolean; + ssoJitEnabled: boolean; + version: string; + [key: string]: unknown; +}; + +export type OrganizationSsoConfigurationConnectionState = 'not_configured' | 'configuring' | 'ready' | 'error' | (string & {}); + +export type OrganizationSsoConfigurationPolicySyncStatus = 'synced' | 'manual_required' | (string & {}); + +export type OrganizationSsoConflictProblem = { + code: 'ORGANIZATION_SSO_CONFLICT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'IDEMPOTENCY_KEY_REQUIRED'; + status: 409; + title: 'Organization SSO Conflict'; + type: 'https://photon.codes/docs/problems/organization-sso-conflict'; + [key: string]: JsonValue | 'ORGANIZATION_SSO_CONFLICT' | string | never | 409 | 'Organization SSO Conflict' | 'https://photon.codes/docs/problems/organization-sso-conflict' | undefined; +}; + +export type OrganizationSsoDomain = { + domain: string; + state: OrganizationSsoDomainState; + [key: string]: unknown; +}; + +export type OrganizationSsoDomainState = 'verified' | 'pending' | 'failed' | (string & {}); + +export type OrganizationSsoNotFoundProblem = { + code: 'ORGANIZATION_SSO_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; + status: 404; + title: 'Organization SSO Not Found'; + type: 'https://photon.codes/docs/problems/organization-sso-not-found'; + [key: string]: JsonValue | 'ORGANIZATION_SSO_NOT_FOUND' | string | never | 404 | 'Organization SSO Not Found' | 'https://photon.codes/docs/problems/organization-sso-not-found' | undefined; }; -export type UpdateAccountResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; +export type OrganizationSsoPreconditionFailedProblem = { + code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; + status: 412; + title: 'Organization SSO Precondition Failed'; + type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; + [key: string]: JsonValue | 'ORGANIZATION_SSO_PRECONDITION_FAILED' | string | never | 412 | 'Organization SSO Precondition Failed' | 'https://photon.codes/docs/problems/organization-sso-precondition-failed' | undefined; +}; + +export type OrganizationSsoRequiredProblem = { + code: 'ORGANIZATION_SSO_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + title: 'Organization SSO Required'; + type: 'https://photon.codes/docs/problems/organization-sso-required'; + [key: string]: JsonValue | 'ORGANIZATION_SSO_REQUIRED' | string | never | 403 | 'Organization SSO Required' | 'https://photon.codes/docs/problems/organization-sso-required' | undefined; }; -export type UpdateAccountResponse404ApplicationProblemPlusJson = { - code: 'ACCOUNT_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Account Not Found'; - type: 'https://photon.codes/docs/problems/account-not-found'; +export type OrganizationSubscription = { + /** + * When the subscription will end, ISO 8601. + */ + cancelsAt: string | null; + /** + * End of the current billing period, ISO 8601. + */ + currentPeriodEnd: string | null; + entitlements: Array; + /** + * Fixed charges defined by the organization's current plan. Quantity is the plan default. + */ + fixedCharges: Array; + /** + * The organization's plan; display only. + */ + planCode: string; + status: SubscriptionStatus; }; -export type UpdateAccountResponse410ApplicationProblemPlusJson = { - code: 'ACCOUNT_DELETED'; +export type OrganizationSubscriptionEntitlement = { + /** + * Feature gate key. + */ + featureKey: string; + /** + * Gate value as a string. + */ + value: string; +}; + +export type OrganizationSyncUnavailableProblem = { + code: 'ORGANIZATION_SYNC_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 410; - title: 'Account Deleted'; - type: 'https://photon.codes/docs/problems/account-deleted'; + status: 409; + title: 'Organization Synchronization Unavailable'; + type: 'https://photon.codes/docs/problems/organization-sync-unavailable'; + [key: string]: JsonValue | 'ORGANIZATION_SYNC_UNAVAILABLE' | string | never | 409 | 'Organization Synchronization Unavailable' | 'https://photon.codes/docs/problems/organization-sync-unavailable' | undefined; }; -export type UpdateAccountResponse413ApplicationProblemPlusJson = { +export type PayloadTooLargeProblem = { code: 'PAYLOAD_TOO_LARGE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 413; title: 'Payload Too Large'; type: 'https://photon.codes/docs/problems/payload-too-large'; + [key: string]: JsonValue | 'PAYLOAD_TOO_LARGE' | string | never | 413 | 'Payload Too Large' | 'https://photon.codes/docs/problems/payload-too-large' | undefined; }; -export type UpdateAccountResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; -} | { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; +export type PaymentMethod = { + /** + * Card network brand, e.g. visa. + */ + brand: string | null; + /** + * Card expiration month. + */ + expiresMonth: number | null; + /** + * Four-digit card expiration year. + */ + expiresYear: number | null; + /** + * Last four card digits. + */ + last4: string | null; }; -export type UpdateAccountResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; +export type PaymentProviderNotReadyProblem = { + code: 'PAYMENT_PROVIDER_NOT_READY'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; + status: 503; + title: 'Payment Provider Not Ready'; + type: 'https://photon.codes/docs/problems/payment-provider-not-ready'; + [key: string]: JsonValue | 'PAYMENT_PROVIDER_NOT_READY' | string | never | 503 | 'Payment Provider Not Ready' | 'https://photon.codes/docs/problems/payment-provider-not-ready' | undefined; +}; + +export type PendingBillingOperation = { + failure: null; + kind: BillingOperationKind; + /** + * Stable handle for this provisioning action. + */ + operationId: string; + resolvedAt: null; + result: null; + /** + * Accepted and still executing. Poll the operation route. + */ + status: 'pending'; + submittedAt: string | null; +}; + +export type PhoneVerificationCaptcha = { + challengeContext: string; + token: string; +}; + +export type ProfilePictureContentType = 'image/jpeg' | 'image/png' | 'image/webp' | (string & {}); + +export type ProfilePictureUpload = { + expiresAt: string; + formFields: ProfilePictureUploadFormFields; + uploadId: string; + uploadUrl: string; +}; + +export type ProfilePictureUploadFormFields = { + [key: string]: string; +}; + +export type ProfilePictureUploadRequest = { + contentType: ProfilePictureContentType; +}; + +export type Project = { + agentProfile: AgentProfile; + billingInitialization?: ProjectBillingInitialization; + createdAt: string; + createdByAccountId: string | null; + createdByActorId: string | null; + createdByActorKind: ProjectCreatedByActorKind | null; + deletedAt: string | null; + name: string; + organizationId: string; + projectId: string; + slug: string; + updatedAt: string; }; -export type UpdateAccountResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type ProjectApiKeyResponse = { + apiKey: ApiKey; }; -export type UpdateAccountResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; +export type ProjectBillingInitialization = 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); -export type UpdateAccountResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; +export type ProjectClosingProblem = { + code: 'PROJECT_CLOSING'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; + status: 409; + title: 'Project Is Closing'; + type: 'https://photon.codes/docs/problems/project-closing'; + [key: string]: JsonValue | 'PROJECT_CLOSING' | string | never | 409 | 'Project Is Closing' | 'https://photon.codes/docs/problems/project-closing' | undefined; }; -export type UpdateAgentProfileRequestApplicationJson = { - firstName?: string; - lastName?: string | null; +export type ProjectClosureDomain = 'projects' | 'billing' | 'platforms' | 'call_registry' | (string & {}); + +export type ProjectClosureDomainStatus = { + blockers: Array; + domain: ProjectClosureDomain; + ready: boolean; + [key: string]: unknown; }; -export type UpdateAgentProfileResponse200ApplicationJson = { - avatarUrl: string; - firstName: string; - lastName: string | null; +export type ProjectCount = { + count: number; }; -export type UpdateAgentProfileResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; +export type ProjectCreatedByActorKind = 'account' | 'service_identity' | (string & {}); + +export type ProjectDeletedProblem = { + code: 'PROJECT_DELETED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; + status: 410; + title: 'Project Deleted'; + type: 'https://photon.codes/docs/problems/project-deleted'; + [key: string]: JsonValue | 'PROJECT_DELETED' | string | never | 410 | 'Project Deleted' | 'https://photon.codes/docs/problems/project-deleted' | undefined; }; -export type UpdateAgentProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type ProjectInvoiceSubject = { + projectId: string; + type: 'project'; }; -export type UpdateAgentProfileResponse404ApplicationProblemPlusJson = { +export type ProjectNotFoundProblem = { code: 'PROJECT_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 404; title: 'Project Not Found'; type: 'https://photon.codes/docs/problems/project-not-found'; + [key: string]: JsonValue | 'PROJECT_NOT_FOUND' | string | never | 404 | 'Project Not Found' | 'https://photon.codes/docs/problems/project-not-found' | undefined; }; -export type UpdateAgentProfileResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; +export type ProjectPage = { + nextPageToken?: string; + projects: Array; }; -export type UpdateAgentProfileResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; +export type ProjectPlatformSettings = SharedProjectPlatformSettings | DedicatedProjectPlatformSettings; + +export type ProjectSubscription = { + /** + * When the subscription will end instead of renewing, ISO 8601. + */ + cancelsAt: string | null; + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; + /** + * Display name for the subscription category; absent or null when unconfigured. + */ + categoryDisplayName?: string | null; + /** + * End of the current billing period, ISO 8601. + */ + currentPeriodEnd: string | null; + /** + * Feature gates granted by this category's plan. + */ + entitlements: Array; + /** + * Fixed charges defined by this category's current plan. Quantity is the plan default. + */ + fixedCharges: Array; + /** + * This category's plan; display only. + */ + planCode: string; + status: SubscriptionStatus; }; -export type UpdateAgentProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type ProjectSubscriptionEntitlement = { + /** + * Feature gate key, e.g. imessage_shared_lines.max_user_assignments. + */ + featureKey: string; + /** + * Gate value as a string. + */ + value: string; +}; + +export type ProvisionImessageDedicatedLineBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ProvisionImessageDedicatedLineForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ProvisionImessageDedicatedLineGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ProvisionImessageDedicatedLineInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ProvisionImessageDedicatedLineServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type ProvisionImessageDedicatedLineUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type ProvisionWhatsappDedicatedLineBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ProvisionWhatsappDedicatedLineForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ProvisionWhatsappDedicatedLineGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ProvisionWhatsappDedicatedLineInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ProvisionWhatsappDedicatedLineServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type ProvisionWhatsappDedicatedLineUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type PurchaseSmsNumberBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type PurchaseSmsNumberForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type PurchaseSmsNumberGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type PurchaseSmsNumberInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type PurchaseSmsNumberRequest = { + areaCode?: string; + countryCode: 'US'; +}; + +export type PurchaseSmsNumberServiceUnavailableProblem = BillingNotProvisionedProblem | UpstreamUnavailableProblem; + +export type PurchaseSmsNumberUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type QueryConcurrencyLimitProblem = { + code: 'QUERY_CONCURRENCY_LIMIT'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; + status: 429; + title: 'Query Concurrency Limit'; + type: 'https://photon.codes/docs/problems/query-concurrency-limit'; + [key: string]: JsonValue | 'QUERY_CONCURRENCY_LIMIT' | string | never | 429 | 'Query Concurrency Limit' | 'https://photon.codes/docs/problems/query-concurrency-limit' | undefined; +}; + +export type QueryMessageMetricsForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type QueryMessageMetricsGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type QueryMessageMetricsResponse = { + columns: Array; + rows: Array>; + statistics: MessageMetricsQueryStatistics; +}; + +export type QueryMessageMetricsUnprocessableEntityProblem = QueryResourceLimitProblem | ValidationFailedProblem; + +export type QueryResourceLimitProblem = { + code: 'QUERY_RESOURCE_LIMIT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; + title: 'Query Resource Limit'; + type: 'https://photon.codes/docs/problems/query-resource-limit'; + [key: string]: JsonValue | 'QUERY_RESOURCE_LIMIT' | string | never | 422 | 'Query Resource Limit' | 'https://photon.codes/docs/problems/query-resource-limit' | undefined; }; -export type UpdateAgentProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type RateLimitedProblem = { + code: 'RATE_LIMITED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 429; + title: 'Too Many Requests'; + type: 'https://photon.codes/docs/problems/rate-limited'; + [key: string]: JsonValue | 'RATE_LIMITED' | string | never | 429 | 'Too Many Requests' | 'https://photon.codes/docs/problems/rate-limited' | undefined; }; -export type UpdateAgentProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type RedeemAppInstallationDeliveryGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type RedeemAppInstallationDeliveryRequest = { + appId: string; + clientAssertion: string; + code: string; }; -export type UpdateAgentProfileResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { +export type RedeemAppInstallationDeliveryResponse = CreatedAppInstallationDelivery | ExistingAppInstallationDelivery; + +export type RefreshOrganizationSsoConnectionBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type RefreshOrganizationSsoConnectionForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type RefreshOrganizationSsoConnectionGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type RefreshOrganizationSsoConnectionInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type RefreshOrganizationSsoConnectionPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type RefreshTokenGrantRequest = { + /** + * Selects the refresh-token grant to obtain a new token pair. + */ + grant_type: 'refresh_token'; + /** + * Most recently issued refresh token. Required for a refresh grant; replace it with the returned refresh_token after success. + */ + refresh_token: string; +}; + +export type ReleaseImessageDedicatedLineForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReleaseImessageDedicatedLineGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReleaseImessageDedicatedLineInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReleaseResourceConflictProblem = WhatsappSenderConnectedProblem | WhatsappSenderProvisioningProblem; + +export type ReleaseResourceForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReleaseResourceGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReleaseResourceInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReleaseSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReleaseSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReleaseSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReleaseWhatsappDedicatedLineForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReleaseWhatsappDedicatedLineGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReleaseWhatsappDedicatedLineInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReleaseWhatsappSharedLineAssignmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReplaceVoiceProfileInboundConflictProblem = ProjectClosingProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem; + +export type ReplaceVoiceProfileInboundForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ReplaceVoiceProfileInboundGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ReplaceVoiceProfileInboundInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ReplaceVoiceProfileInboundRequest = { + credentials: SipInboundCredentialsWithPassword | null; + destinationUri: string; + expectedVersion: number; +}; + +export type RequestTimeoutProblem = { code: 'REQUEST_TIMEOUT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 504; title: 'Request Timeout'; type: 'https://photon.codes/docs/problems/request-timeout'; + [key: string]: JsonValue | 'REQUEST_TIMEOUT' | string | never | 504 | 'Request Timeout' | 'https://photon.codes/docs/problems/request-timeout' | undefined; }; -export type UpdateDefaultVoiceProfileRequestApplicationJson = { - expectedVersion: number; - mediaEncryption?: 'auto' | 'srtp' | (string & {}); - protocol?: 'sip'; -}; +export type ResetAccountProfilePictureBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; -export type UpdateDefaultVoiceProfileResponse200ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; +export type ResetAccountProfilePictureForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ResetAccountProfilePictureGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ResetAccountProfilePictureInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ResetAccountProfilePictureUnprocessableEntityProblem = IdempotencyKeyReusedProblem | ValidationFailedProblem; + +export type ResetAgentProfileAvatarBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ResetAgentProfileAvatarForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ResetAgentProfileAvatarGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type ResetAgentProfileAvatarUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type Resource = { + abilities: Array; createdAt: string; - isDefault: boolean; - lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); - name: string; - profileId: string; + detail: { + [key: string]: unknown; + }; projectId: string; - protocol: 'sip'; + resourceId: string; + retiredAt?: string; + state: ResourceState; + type: string; updatedAt: string; - version: number; -}; - -export type UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { +}; + +export type ResourceMismatchProblem = { code: 'RESOURCE_MISMATCH'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 403; title: 'Resource Mismatch'; type: 'https://photon.codes/docs/problems/resource-mismatch'; + [key: string]: JsonValue | 'RESOURCE_MISMATCH' | string | never | 403 | 'Resource Mismatch' | 'https://photon.codes/docs/problems/resource-mismatch' | undefined; }; -export type UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; +export type ResourceNotFoundProblem = { + code: 'RESOURCE_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; + title: 'Resource Not Found'; + type: 'https://photon.codes/docs/problems/resource-not-found'; + [key: string]: JsonValue | 'RESOURCE_NOT_FOUND' | string | never | 404 | 'Resource Not Found' | 'https://photon.codes/docs/problems/resource-not-found' | undefined; }; -export type UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_DIRECTION_CONFIGURED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Direction Configured'; - type: 'https://photon.codes/docs/problems/voice-profile-direction-configured'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; +export type ResourcePage = { + nextPageToken?: string; + resources: Array; }; -export type UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -}; +export type ResourceState = 'unallocated' | 'active' | 'retired' | (string & {}); -export type UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type ResumeSubscriptionBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type ResumeSubscriptionConflictProblem = FailedPreconditionProblem | IdempotencyRequestInProgressProblem; + +export type ResumeSubscriptionForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type ResumeSubscriptionGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type ResumeSubscriptionInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type ResumeSubscriptionRequest = { + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; }; -export type UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type ResumeSubscriptionResponse = { + /** + * Category slug, e.g. analytics or messaging. + */ + category: string; + /** + * False when the subscription was not scheduled to cancel. + */ + resumed: boolean; }; -export type UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type ResumeSubscriptionServiceUnavailableProblem = IdempotencyUnavailableProblem | UpstreamUnavailableProblem; + +export type ResumeSubscriptionUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type RetryEnterpriseLoginRequest = { + retryToken: string; }; -export type UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type RetryOrganizationConnectionSyncForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type RetryOrganizationConnectionSyncGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type RetryOrganizationConnectionSyncInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type RevokeAccountServiceKeyBadRequestProblem = InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; + +export type RevokeAccountServiceKeyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type RevokeAccountServiceKeyGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type RevokeAccountServiceKeyInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type RevokeAccountServiceKeyNotFoundProblem = AccountNotFoundProblem | AccountServiceKeyNotFoundProblem; + +export type RevokeAccountServiceKeyResponse = { + serviceKey: AccountServiceKey; }; -export type UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; +export type RevokeAccountServiceKeyUnprocessableEntityProblem = IdempotencyKeyReusedProblem | ValidationFailedProblem; + +export type RevokeAuthorizedApplicationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type RevokeAuthorizedApplicationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type RevokeAuthorizedApplicationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type RevokeProjectApiKeyBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type RevokeProjectApiKeyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type RevokeProjectApiKeyNotFoundProblem = ProjectNotFoundProblem | ApiKeyNotFoundProblem; + +export type RevokeProjectApiKeyUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type RotateVoiceProfileOutboundCredentialBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type RotateVoiceProfileOutboundCredentialConflictProblem = ProjectClosingProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem | VoiceOutboundNotConfiguredProblem; + +export type RotateVoiceProfileOutboundCredentialForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type RotateVoiceProfileOutboundCredentialInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type RotateVoiceProfileOutboundCredentialRequest = { + expectedVersion: number; + mode: VoiceOutboundCredentialRotationMode; }; -export type UpdateOrganizationSsoPolicyRequestApplicationJson = { - expectedVersion: string; - ssoJitEnabled: boolean; +export type RotateVoiceProfileOutboundCredentialResponse = { + password: string | null; + previousPasswordValidUntil: string | null; + profileVersion: number; }; -export type UpdateOrganizationSsoPolicyResponse200ApplicationJson = { - connectionChangedAt: string | null; - connectionGeneration: string; - connectionState: 'not_configured' | 'configuring' | 'ready' | 'error' | (string & {}); - connectionType?: string; - desiredSsoEnforced: boolean; - domains?: Array<{ - domain: string; - state: 'verified' | 'pending' | 'failed' | (string & {}); - }>; - organizationId: string; - policySyncStatus: 'synced' | 'manual_required' | (string & {}); - providerAvailable?: boolean; - ssoEnforced: boolean; - ssoJitEnabled: boolean; - version: string; +export type RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type RotateWebhookSigningSecretBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type RotateWebhookSigningSecretForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type RotateWebhookSigningSecretGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type RotateWebhookSigningSecretRequest = { + /** + * @default 86400 + */ + overlapSeconds?: number; }; -export type UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson = { - code: 'INVALID_RETURN_TO'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Return To'; - type: 'https://photon.codes/docs/problems/invalid-return-to'; -} | { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; +export type RotateWebhookSigningSecretResponse = { + previousSecretExpiresAt: string | null; + signingSecret: string; }; -export type UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson = PhotonProblem_FORBIDDEN_403 | Authorization_Problem_INSUFFICIENT_SCOPE_403; +export type RotateWebhookSigningSecretUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Organization SSO Not Found'; - type: 'https://photon.codes/docs/problems/organization-sso-not-found'; +export type SelectableWebhookApiVersion = { + retirement: WebhookApiVersionRetirement | null; + selectable: true; + status: SelectableWebhookApiVersionStatus; + successor: string | null; + version: string; }; -export type UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Organization SSO Conflict'; - type: 'https://photon.codes/docs/problems/organization-sso-conflict'; -}; +export type SelectableWebhookApiVersionStatus = 'preview' | 'latest' | 'maintain' | (string & {}); -export type UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson = { - code: 'ORGANIZATION_SSO_PRECONDITION_FAILED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 412; - title: 'Organization SSO Precondition Failed'; - type: 'https://photon.codes/docs/problems/organization-sso-precondition-failed'; +export type SelectableWebhookEventCatalog = { + apiVersion: string; + contractNamespace: '@photon-hq/contracts'; + events: Array; + packageVersion: string; + retirement: WebhookApiVersionRetirement | null; + selectable: true; + status: SelectableWebhookApiVersionStatus; + successor: string | null; }; -export type UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; +export type SharedLineAssignment = { + assignedPhoneNumber: string; + assignmentId: string; + createdAt: string; + email?: string; + firstName?: string; + handle: string; + lastName?: string; + platform: SharedLineAssignmentPlatform; + projectId: string; + releasedAt?: string; + updatedAt: string; }; -export type UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type SharedLineAssignmentPage = { + assignments: Array; + nextPageToken?: string; }; -export type UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type SharedLineAssignmentPlatform = 'imessage' | 'whatsapp' | (string & {}); + +export type SharedLineCapExceededProblem = { + code: 'SHARED_LINE_CAP_EXCEEDED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 409; + title: 'Shared Line Cap Exceeded'; + type: 'https://photon.codes/docs/problems/shared-line-cap-exceeded'; + [key: string]: JsonValue | 'SHARED_LINE_CAP_EXCEEDED' | string | never | 409 | 'Shared Line Cap Exceeded' | 'https://photon.codes/docs/problems/shared-line-cap-exceeded' | undefined; }; -export type UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type SharedLinePoolExhaustedProblem = { + code: 'SHARED_LINE_POOL_EXHAUSTED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + title: 'Shared Line Pool Exhausted'; + type: 'https://photon.codes/docs/problems/shared-line-pool-exhausted'; + [key: string]: JsonValue | 'SHARED_LINE_POOL_EXHAUSTED' | string | never | 503 | 'Shared Line Pool Exhausted' | 'https://photon.codes/docs/problems/shared-line-pool-exhausted' | undefined; }; -export type UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type SharedProjectPlatformSettings = { + maxUserAssignments: number; + mode: 'shared'; +}; + +export type SipAuthenticationAlgorithm = 'sha-256' | 'md5' | (string & {}); + +export type SipEndpoint = { + host: string; + port: number; + transport: SipTransport; }; -export type UpdateProjectApiKeyRequestApplicationJson = { - permissions: Array<'events:read' | 'events:write' | 'platforms:read' | 'platforms:write' | 'project:read' | 'project:write' | (string & {})>; +export type SipInboundConfiguration = { + credentials: SipInboundCredentials | null; + destinationUri: string; }; -export type UpdateProjectApiKeyResponse200ApplicationJson = { - apiKey: { - apiKeyId: string; - createdAt: string; - createdByAccountId: string; - expiresAt: string | null; - name: string; - permissions: Array; - permissionsUpdatedAt: string | null; - projectId: string; - revokedAt: string | null; - }; +export type SipInboundCredentials = { + username: string; }; -export type UpdateProjectApiKeyResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; +export type SipInboundCredentialsWithPassword = { + password: string; + username: string; +}; + +export type SipOutboundAuthentication = { + algorithm: SipAuthenticationAlgorithm; + previousPasswordValidUntil: string | null; + username: string; + validFrom: string; +}; + +export type SipOutboundAuthenticationPolicy = { + algorithm: SipAuthenticationAlgorithm; +}; + +export type SipOutboundConfiguration = { + authentication: SipOutboundAuthentication; + connection: SipOutboundConnection; +}; + +export type SipOutboundConnection = { + endpoints: Array; + realm: string; +}; + +export type SipTransport = 'udp' | 'tcp' | 'tls' | (string & {}); + +export type SlugTakenProblem = { + code: 'SLUG_TAKEN'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; -} | { - code: 'INVALID_ARGUMENT'; + status: 409; + suggestion?: string; + title: 'Slug Already Taken'; + type: 'https://photon.codes/docs/problems/slug-taken'; + [key: string]: JsonValue | 'SLUG_TAKEN' | string | never | 409 | 'Slug Already Taken' | 'https://photon.codes/docs/problems/slug-taken' | undefined; +}; + +export type SmsCampaignCapacityExceededProblem = { + code: 'SMS_CAMPAIGN_CAPACITY_EXCEEDED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; + status: 409; + title: 'Campaign number capacity exhausted'; + type: 'https://photon.codes/docs/problems/sms-campaign-capacity-exceeded'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_CAPACITY_EXCEEDED' | string | never | 409 | 'Campaign number capacity exhausted' | 'https://photon.codes/docs/problems/sms-campaign-capacity-exceeded' | undefined; }; -export type UpdateProjectApiKeyResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; +export type SmsCampaignContextUnavailableProblem = { + code: 'SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; + status: 503; + title: 'Campaign context unavailable'; + type: 'https://photon.codes/docs/problems/sms-campaign-context-unavailable'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_CONTEXT_UNAVAILABLE' | string | never | 503 | 'Campaign context unavailable' | 'https://photon.codes/docs/problems/sms-campaign-context-unavailable' | undefined; +}; + +export type SmsCampaignInvalidRequestProblem = { + code: 'SMS_CAMPAIGN_INVALID_REQUEST'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + status: 400; + title: 'Invalid SMS campaign request'; + type: 'https://photon.codes/docs/problems/sms-campaign-invalid-request'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_INVALID_REQUEST' | string | never | 400 | 'Invalid SMS campaign request' | 'https://photon.codes/docs/problems/sms-campaign-invalid-request' | undefined; }; -export type UpdateProjectApiKeyResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; +export type SmsCampaignMutationInProgressProblem = { + code: 'SMS_CAMPAIGN_MUTATION_IN_PROGRESS'; detail?: string; instance?: string; - remediation?: unknown; + operationId: string; + operationUrl: string; + remediation?: never; requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; -} | { - code: 'API_KEY_NOT_FOUND'; + status: 409; + title: 'Assignment mutation in progress'; + type: 'https://photon.codes/docs/problems/sms-campaign-mutation-in-progress'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_MUTATION_IN_PROGRESS' | string | never | 409 | 'Assignment mutation in progress' | 'https://photon.codes/docs/problems/sms-campaign-mutation-in-progress' | undefined; +}; + +export type SmsCampaignNotFoundProblem = { + code: 'SMS_CAMPAIGN_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 404; - title: 'API Key Not Found'; - type: 'https://photon.codes/docs/problems/api-key-not-found'; + title: 'Campaign not found'; + type: 'https://photon.codes/docs/problems/sms-campaign-not-found'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_NOT_FOUND' | string | never | 404 | 'Campaign not found' | 'https://photon.codes/docs/problems/sms-campaign-not-found' | undefined; }; -export type UpdateProjectApiKeyResponse409ApplicationProblemPlusJson = { - code: 'API_KEY_REVOKED'; +export type SmsCampaignNotReadyProblem = { + code: 'SMS_CAMPAIGN_NOT_READY'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'API Key Revoked'; - type: 'https://photon.codes/docs/problems/api-key-revoked'; + title: 'Campaign not ready'; + type: 'https://photon.codes/docs/problems/sms-campaign-not-ready'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_NOT_READY' | string | never | 409 | 'Campaign not ready' | 'https://photon.codes/docs/problems/sms-campaign-not-ready' | undefined; }; -export type UpdateProjectApiKeyResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; +export type SmsCampaignOrganizationMismatchProblem = { + code: 'SMS_CAMPAIGN_ORGANIZATION_MISMATCH'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; + status: 403; + title: 'Campaign belongs to another organization'; + type: 'https://photon.codes/docs/problems/sms-campaign-organization-mismatch'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_ORGANIZATION_MISMATCH' | string | never | 403 | 'Campaign belongs to another organization' | 'https://photon.codes/docs/problems/sms-campaign-organization-mismatch' | undefined; }; -export type UpdateProjectApiKeyResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; +export type SmsCampaignReconciliationRequiredProblem = { + code: 'SMS_CAMPAIGN_RECONCILIATION_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; + status: 409; + title: 'Campaign reconciliation required'; + type: 'https://photon.codes/docs/problems/sms-campaign-reconciliation-required'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_RECONCILIATION_REQUIRED' | string | never | 409 | 'Campaign reconciliation required' | 'https://photon.codes/docs/problems/sms-campaign-reconciliation-required' | undefined; }; -export type UpdateProjectApiKeyResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type SmsCampaignVersionConflictProblem = { + code: 'SMS_CAMPAIGN_VERSION_CONFLICT'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; + status: 409; + title: 'Assignment version conflict'; + type: 'https://photon.codes/docs/problems/sms-campaign-version-conflict'; + [key: string]: JsonValue | 'SMS_CAMPAIGN_VERSION_CONFLICT' | string | never | 409 | 'Assignment version conflict' | 'https://photon.codes/docs/problems/sms-campaign-version-conflict' | undefined; +}; + +export type SmsLineCampaign = { + id: string; + organizationId: string; + [key: string]: unknown; +}; + +export type SmsLineCampaignEligibility = 'eligible' | 'blocked' | 'unknown' | (string & {}); + +export type SmsLineNotFoundProblem = { + code: 'SMS_LINE_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; + status: 404; + title: 'SMS line not found'; + type: 'https://photon.codes/docs/problems/sms-line-not-found'; + [key: string]: JsonValue | 'SMS_LINE_NOT_FOUND' | string | never | 404 | 'SMS line not found' | 'https://photon.codes/docs/problems/sms-line-not-found' | undefined; }; -export type UpdateProjectApiKeyResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type SmsLineUnsupportedProblem = { + code: 'SMS_LINE_UNSUPPORTED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 409; + title: 'SMS line unsupported'; + type: 'https://photon.codes/docs/problems/sms-line-unsupported'; + [key: string]: JsonValue | 'SMS_LINE_UNSUPPORTED' | string | never | 409 | 'SMS line unsupported' | 'https://photon.codes/docs/problems/sms-line-unsupported' | undefined; }; -export type UpdateProjectApiKeyResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; +export type SortOrder = 'asc' | 'desc' | (string & {}); + +export type SsoSubscriptionRequiredProblem = { + code: 'SSO_SUBSCRIPTION_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; + status: 412; + title: 'SSO Subscription Required'; + type: 'https://photon.codes/docs/problems/sso-subscription-required'; + [key: string]: JsonValue | 'SSO_SUBSCRIPTION_REQUIRED' | string | never | 412 | 'SSO Subscription Required' | 'https://photon.codes/docs/problems/sso-subscription-required' | undefined; }; -export type UpdateProjectRequestApplicationJson = { - name: string; +export type StartAccountPhoneVerificationForbiddenProblem = CaptchaRequiredProblem | ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type StartAccountPhoneVerificationGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type StartAccountPhoneVerificationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type StartAccountPhoneVerificationRequest = { + captcha?: PhoneVerificationCaptcha; + phoneNumber: string; }; -export type UpdateProjectResponse200ApplicationJson = { - agentProfile: { - avatarUrl: string; - firstName: string; - lastName: string | null; - }; - billingInitialization?: 'pending' | 'retry_required' | 'completed' | 'unknown' | (string & {}); - createdAt: string; - createdByAccountId: string | null; - createdByActorId: string | null; - createdByActorKind: 'account' | 'service_identity' | (string & {}) | null; - deletedAt: string | null; - name: string; - organizationId: string; - projectId: string; - slug: string; - updatedAt: string; +export type StartAccountPhoneVerificationResponse = { + channel: 'sms'; + expiresAt: string; + resendAvailableAt: string; }; -export type UpdateProjectResponse400ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REQUIRED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Required'; - type: 'https://photon.codes/docs/problems/idempotency-key-required'; -} | { - code: 'IDEMPOTENCY_KEY_INVALID'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Idempotency Key Invalid'; - type: 'https://photon.codes/docs/problems/idempotency-key-invalid'; +export type StartEnterpriseLoginRequest = OrganizationEnterpriseLoginRequest | InvitationEnterpriseLoginRequest | RetryEnterpriseLoginRequest; + +export type StartEnterpriseLoginResponse = { + url: string; + [key: string]: unknown; }; -export type UpdateProjectResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +/** + * State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. + */ +export type SubscriptionStatus = 'active' | 'past_due' | 'terminated' | (string & {}); + +export type SucceededBillingOperation = { + failure: null; + kind: BillingOperationKind; + /** + * Stable handle for this provisioning action. + */ + operationId: string; + resolvedAt: string | null; + result: BillingOperationResult; + /** + * Terminal. The result is authoritative. + */ + status: 'succeeded'; + submittedAt: string | null; }; -export type UpdateProjectResponse404ApplicationProblemPlusJson = { - code: 'PROJECT_NOT_FOUND'; +export type SupportedPlatform = { + description: string; + displayName: string; + type: string; +}; + +export type TelegramProjectDeletedProblem = { + code: 'TELEGRAM_PROJECT_DELETED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 404; - title: 'Project Not Found'; - type: 'https://photon.codes/docs/problems/project-not-found'; + status: 409; + title: 'Telegram Project Deleted'; + type: 'https://photon.codes/docs/problems/telegram-project-deleted'; + [key: string]: JsonValue | 'TELEGRAM_PROJECT_DELETED' | string | never | 409 | 'Telegram Project Deleted' | 'https://photon.codes/docs/problems/telegram-project-deleted' | undefined; }; -export type UpdateProjectResponse410ApplicationProblemPlusJson = { - code: 'PROJECT_DELETED'; +export type TelegramProvisionInProgressProblem = { + code: 'TELEGRAM_PROVISION_IN_PROGRESS'; detail?: string; instance?: string; - remediation?: unknown; + operationId: string; + operationUrl: string; + remediation?: never; requestId?: string; - status: 410; - title: 'Project Deleted'; - type: 'https://photon.codes/docs/problems/project-deleted'; + status: 409; + title: 'Telegram Provision In Progress'; + type: 'https://photon.codes/docs/problems/telegram-provision-in-progress'; + [key: string]: JsonValue | 'TELEGRAM_PROVISION_IN_PROGRESS' | string | never | 409 | 'Telegram Provision In Progress' | 'https://photon.codes/docs/problems/telegram-provision-in-progress' | undefined; +}; + +export type TerminalBillingOperation = SucceededBillingOperation | FailedBillingOperation; + +export type TimestampOrderBy = 'created_at' | 'updated_at' | (string & {}); + +export type UnassignSmsLineCampaignBadRequestProblem = SmsCampaignInvalidRequestProblem | IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type UnassignSmsLineCampaignConflictProblem = ProjectClosingProblem | SmsLineUnsupportedProblem | SmsCampaignNotReadyProblem | SmsCampaignVersionConflictProblem | SmsCampaignCapacityExceededProblem | SmsCampaignReconciliationRequiredProblem | SmsCampaignMutationInProgressProblem; + +export type UnassignSmsLineCampaignForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem | SmsCampaignOrganizationMismatchProblem; + +export type UnassignSmsLineCampaignGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UnassignSmsLineCampaignInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UnassignSmsLineCampaignNotFoundProblem = SmsCampaignNotFoundProblem | SmsLineNotFoundProblem; + +export type UnassignSmsLineCampaignServiceUnavailableProblem = SmsCampaignContextUnavailableProblem | UpstreamUnavailableProblem; + +export type UnassignVoiceLineProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UnassignVoiceLineProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UnassignVoiceLineProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UnavailableProjectSlug = { + available: false; + reason: UnavailableProjectSlugReason; + slug: string; + suggestion?: string; +}; + +export type UnavailableProjectSlugReason = 'reserved' | 'retired' | 'taken' | 'too_short' | (string & {}); + +export type UpdateAccountBadRequestProblem = HttpErrorProblem | InvalidArgumentProblem | IdempotencyKeyInvalidProblem | IdempotencyKeyRequiredProblem; + +export type UpdateAccountForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateAccountGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type UpdateAccountInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpdateAccountRequest = { + firstName?: string; + lastName?: string | null; +}; + +export type UpdateAccountUnprocessableEntityProblem = IdempotencyKeyReusedProblem | ValidationFailedProblem; + +export type UpdateAgentProfileBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type UpdateAgentProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateAgentProfileGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type UpdateAgentProfileRequest = { + firstName?: string; + lastName?: string | null; }; -export type UpdateProjectResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; -}; +export type UpdateAgentProfileUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; -export type UpdateProjectResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; -} | { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; +export type UpdateDefaultVoiceProfileConflictProblem = ProjectClosingProblem | VoiceProfileDirectionConfiguredProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem; + +export type UpdateDefaultVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateDefaultVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UpdateDefaultVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpdateDefaultVoiceProfileRequest = { + expectedVersion: number; + mediaEncryption?: VoiceProfileMediaEncryption; + protocol?: 'sip'; }; -export type UpdateProjectResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; +export type UpdateOrganizationSsoPolicyBadRequestProblem = InvalidReturnToProblem | InvalidArgumentProblem; + +export type UpdateOrganizationSsoPolicyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem; + +export type UpdateOrganizationSsoPolicyGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type UpdateOrganizationSsoPolicyInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpdateOrganizationSsoPolicyPreconditionFailedProblem = OrganizationSsoPreconditionFailedProblem | SsoSubscriptionRequiredProblem; + +export type UpdateOrganizationSsoPolicyRequest = { + expectedVersion: string; + ssoJitEnabled: boolean; }; -export type UpdateProjectResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type UpdateProjectApiKeyBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type UpdateProjectApiKeyForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateProjectApiKeyNotFoundProblem = ProjectNotFoundProblem | ApiKeyNotFoundProblem; + +export type UpdateProjectApiKeyRequest = { + permissions: Array; }; -export type UpdateProjectResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; +export type UpdateProjectApiKeyUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type UpdateProjectBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem; + +export type UpdateProjectForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateProjectGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type UpdateProjectRequest = { + name: string; }; -export type UpdateVoiceProfileInboundRequestApplicationJson = { - credentials?: { - password: string; - username: string; - } | null; +export type UpdateProjectUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type UpdateVoiceProfileConflictProblem = ProjectClosingProblem | VoiceProfileDirectionConfiguredProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem; + +export type UpdateVoiceProfileForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateVoiceProfileGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UpdateVoiceProfileInboundConflictProblem = ProjectClosingProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem; + +export type UpdateVoiceProfileInboundForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateVoiceProfileInboundGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UpdateVoiceProfileInboundInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpdateVoiceProfileInboundRequest = { + credentials?: SipInboundCredentialsWithPassword | null; destinationUri?: string; expectedVersion: number; }; -export type UpdateVoiceProfileInboundResponse200ApplicationJson = { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - profileVersion: number; -}; +export type UpdateVoiceProfileInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; -export type UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; +export type UpdateVoiceProfileOutboundAuthenticationConflictProblem = ProjectClosingProblem | VoiceProfileVersionConflictProblem | VoiceOutboundOperationPendingProblem | VoiceOutboundNotConfiguredProblem; -export type UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; -}; +export type UpdateVoiceProfileOutboundAuthenticationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; -export type UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; +export type UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpdateVoiceProfileOutboundAuthenticationRequest = { + authentication: SipOutboundAuthenticationPolicy; + expectedVersion: number; }; -export type UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; - detail?: string; - instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; +export type UpdateVoiceProfileOutboundAuthenticationResponse = { + outbound: SipOutboundConfiguration; + profileVersion: number; }; -export type UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type UpdateVoiceProfileRequest = { + expectedVersion: number; + mediaEncryption?: VoiceProfileMediaEncryption; + name?: string; + protocol?: 'sip'; }; -export type UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; +export type UpdateWebhookDestinationBadRequestProblem = IdempotencyKeyRequiredProblem | IdempotencyKeyInvalidProblem | InvalidArgumentProblem; + +export type UpdateWebhookDestinationForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UpdateWebhookDestinationGatewayTimeoutProblem = RequestTimeoutProblem | UpstreamTimeoutProblem; + +export type UpdateWebhookDestinationRequest = { + description?: string | null; + enabledEvents?: WebhookEventSelection; + name?: string; + status?: WebhookDestinationStatus; + /** + * HTTPS URL without credentials or a fragment. + */ + url?: string; }; -export type UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson = { +export type UpdateWebhookDestinationUnprocessableEntityProblem = ValidationFailedProblem | IdempotencyKeyReusedProblem; + +export type UploadAttachmentBadRequestProblem = HttpErrorProblem | InvalidAttachmentRequestProblem; + +export type UploadAttachmentConflictProblem = AttachmentConflictProblem | AttachmentUploadNotReadyProblem; + +export type UploadAttachmentForbiddenProblem = ForbiddenProblem | InsufficientScopeProblem | OrganizationSsoRequiredProblem | ResourceMismatchProblem; + +export type UploadAttachmentGatewayTimeoutProblem = UpstreamTimeoutProblem | RequestTimeoutProblem; + +export type UploadAttachmentInternalServerErrorProblem = InternalErrorProblem | InvalidAuthContextProblem; + +export type UpstreamFailureProblem = { code: 'UPSTREAM_FAILURE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 502; title: 'Upstream Service Failure'; type: 'https://photon.codes/docs/problems/upstream-failure'; + [key: string]: JsonValue | 'UPSTREAM_FAILURE' | string | never | 502 | 'Upstream Service Failure' | 'https://photon.codes/docs/problems/upstream-failure' | undefined; }; -export type UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type UpstreamTimeoutProblem = { + code: 'UPSTREAM_TIMEOUT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 504; + title: 'Upstream Service Timeout'; + type: 'https://photon.codes/docs/problems/upstream-timeout'; + [key: string]: JsonValue | 'UPSTREAM_TIMEOUT' | string | never | 504 | 'Upstream Service Timeout' | 'https://photon.codes/docs/problems/upstream-timeout' | undefined; }; -export type UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; +export type UpstreamUnavailableProblem = { + code: 'UPSTREAM_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; + status: 503; + title: 'Upstream Service Unavailable'; + type: 'https://photon.codes/docs/problems/upstream-unavailable'; + [key: string]: JsonValue | 'UPSTREAM_UNAVAILABLE' | string | never | 503 | 'Upstream Service Unavailable' | 'https://photon.codes/docs/problems/upstream-unavailable' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson = { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - }; - expectedVersion: number; +export type UsageCharge = { + chargeCode: string | null; + chargeModel: UsageChargeModel; + displayName: string | null; + filters: Array; + invoiceable: boolean; + metricCode: string; + minimumAmountCents: number; + payInAdvance: boolean; + pricing: UsageChargePricing; + prorated: boolean; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson = { - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - }; - profileVersion: number; +export type UsageChargeFilter = { + displayName: string | null; + pricing: UsageChargePricing; + values: Array; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; +export type UsageChargeFilterValue = { + key: string; + values: Array; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; +export type UsageChargeModel = 'dynamic' | 'graduated' | 'graduated_percentage' | 'package' | 'percentage' | 'standard' | 'volume' | (string & {}); + +export type UsageChargePricing = { + amount: string | null; + fixedAmount: string | null; + freeUnits: number | null; + freeUnitsPerEvents: number | null; + freeUnitsPerTotalAggregation: string | null; + packageSize: number | null; + perTransactionMaxAmount: string | null; + perTransactionMinAmount: string | null; + pricingGroupKeys: Array; + rate: string | null; + tiers: Array; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; -} | { - code: 'VOICE_OUTBOUND_NOT_CONFIGURED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Not Configured'; - type: 'https://photon.codes/docs/problems/voice-outbound-not-configured'; +export type UsageChargeTier = { + flatAmount: string | null; + fromUnit: number; + perUnitAmount: string | null; + rate: string | null; + toUnit: number | null; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson = { +export type ValidationFailedProblem = { code: 'VALIDATION_FAILED'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + issues: Array; + remediation?: never; requestId?: string; status: 422; title: 'Request Validation Failed'; type: 'https://photon.codes/docs/problems/validation-failed'; + [key: string]: JsonValue | 'VALIDATION_FAILED' | string | Array | never | 422 | 'Request Validation Failed' | 'https://photon.codes/docs/problems/validation-failed' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; +export type ValidationIssue = { + code: string; + location: ValidationLocation; + message: string; + path: string; +}; + +export type ValidationLocation = 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); + +export type VoiceDefaultProfileAssignmentForbiddenProblem = { + code: 'VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; + status: 409; + title: 'Voice Default Profile Assignment Forbidden'; + type: 'https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden'; + [key: string]: JsonValue | 'VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN' | string | never | 409 | 'Voice Default Profile Assignment Forbidden' | 'https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; +export type VoiceDefaultProfileDeletionForbiddenProblem = { + code: 'VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; + status: 409; + title: 'Voice Default Profile Deletion Forbidden'; + type: 'https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden'; + [key: string]: JsonValue | 'VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN' | string | never | 409 | 'Voice Default Profile Deletion Forbidden' | 'https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type VoiceDefaultProfileExistsProblem = { + code: 'VOICE_DEFAULT_PROFILE_EXISTS'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 409; + title: 'Voice Default Profile Exists'; + type: 'https://photon.codes/docs/problems/voice-default-profile-exists'; + [key: string]: JsonValue | 'VOICE_DEFAULT_PROFILE_EXISTS' | string | never | 409 | 'Voice Default Profile Exists' | 'https://photon.codes/docs/problems/voice-default-profile-exists' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type VoiceDefaultProfileRequiredProblem = { + code: 'VOICE_DEFAULT_PROFILE_REQUIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 409; + title: 'Voice Default Profile Required'; + type: 'https://photon.codes/docs/problems/voice-default-profile-required'; + [key: string]: JsonValue | 'VOICE_DEFAULT_PROFILE_REQUIRED' | string | never | 409 | 'Voice Default Profile Required' | 'https://photon.codes/docs/problems/voice-default-profile-required' | undefined; }; -export type UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; +export type VoiceLineProfileAssignment = { + profileId?: string; + profileVersion?: number; + projectId: string; + resourceId: string; + resourceVersion: number; + updatedAt: string; +}; + +export type VoiceLineProfileAssignmentUpdate = { + expectedVersion: number; + profileId: string | null; + resourceId: string; +}; + +export type VoiceOutboundConfiguredProblem = { + code: 'VOICE_OUTBOUND_CONFIGURED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; + status: 409; + title: 'Voice Outbound Already Configured'; + type: 'https://photon.codes/docs/problems/voice-outbound-configured'; + [key: string]: JsonValue | 'VOICE_OUTBOUND_CONFIGURED' | string | never | 409 | 'Voice Outbound Already Configured' | 'https://photon.codes/docs/problems/voice-outbound-configured' | undefined; +}; + +export type VoiceOutboundCredentialRotationMode = 'normal' | 'emergency' | (string & {}); + +export type VoiceOutboundNotConfiguredProblem = { + code: 'VOICE_OUTBOUND_NOT_CONFIGURED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; + status: 409; + title: 'Voice Outbound Not Configured'; + type: 'https://photon.codes/docs/problems/voice-outbound-not-configured'; + [key: string]: JsonValue | 'VOICE_OUTBOUND_NOT_CONFIGURED' | string | never | 409 | 'Voice Outbound Not Configured' | 'https://photon.codes/docs/problems/voice-outbound-not-configured' | undefined; }; -export type UpdateVoiceProfileRequestApplicationJson = { - expectedVersion: number; - mediaEncryption?: 'auto' | 'srtp' | (string & {}); - name?: string; - protocol?: 'sip'; +export type VoiceOutboundOperationPendingProblem = { + code: 'VOICE_OUTBOUND_OPERATION_PENDING'; + detail?: string; + instance?: string; + remediation?: never; + requestId?: string; + status: 409; + title: 'Voice Outbound Operation Pending'; + type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; + [key: string]: JsonValue | 'VOICE_OUTBOUND_OPERATION_PENDING' | string | never | 409 | 'Voice Outbound Operation Pending' | 'https://photon.codes/docs/problems/voice-outbound-operation-pending' | undefined; }; -export type UpdateVoiceProfileResponse200ApplicationJson = { - configuration: { - inbound: { - credentials: { - username: string; - } | null; - destinationUri: string; - } | null; - outbound: { - authentication: { - algorithm: 'sha-256' | 'md5' | (string & {}); - previousPasswordValidUntil: string | null; - username: string; - validFrom: string; - }; - connection: { - endpoints: Array<{ - host: string; - port: number; - transport: 'udp' | 'tcp' | 'tls' | (string & {}); - }>; - realm: string; - }; - } | null; - }; +export type VoiceProfile = { + configuration: VoiceProfileConfiguration; createdAt: string; isDefault: boolean; lineCount: number; - mediaEncryption: 'auto' | 'srtp' | (string & {}); + mediaEncryption: VoiceProfileMediaEncryption; name: string; profileId: string; projectId: string; @@ -17842,449 +3721,322 @@ export type UpdateVoiceProfileResponse200ApplicationJson = { version: number; }; -export type UpdateVoiceProfileResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; -}; - -export type UpdateVoiceProfileResponse404ApplicationProblemPlusJson = { - code: 'VOICE_PROFILE_NOT_FOUND'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 404; - title: 'Voice Profile Not Found'; - type: 'https://photon.codes/docs/problems/voice-profile-not-found'; +export type VoiceProfileConfiguration = { + inbound: SipInboundConfiguration | null; + outbound: SipOutboundConfiguration | null; }; -export type UpdateVoiceProfileResponse409ApplicationProblemPlusJson = { - code: 'PROJECT_CLOSING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Project Is Closing'; - type: 'https://photon.codes/docs/problems/project-closing'; -} | { +export type VoiceProfileDirectionConfiguredProblem = { code: 'VOICE_PROFILE_DIRECTION_CONFIGURED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; title: 'Voice Profile Direction Configured'; type: 'https://photon.codes/docs/problems/voice-profile-direction-configured'; -} | { - code: 'VOICE_PROFILE_VERSION_CONFLICT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Profile Version Conflict'; - type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; -} | { - code: 'VOICE_OUTBOUND_OPERATION_PENDING'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 409; - title: 'Voice Outbound Operation Pending'; - type: 'https://photon.codes/docs/problems/voice-outbound-operation-pending'; + [key: string]: JsonValue | 'VOICE_PROFILE_DIRECTION_CONFIGURED' | string | never | 409 | 'Voice Profile Direction Configured' | 'https://photon.codes/docs/problems/voice-profile-direction-configured' | undefined; }; -export type UpdateVoiceProfileResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type VoiceProfileInUseProblem = { + code: 'VOICE_PROFILE_IN_USE'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; + status: 409; + title: 'Voice Profile In Use'; + type: 'https://photon.codes/docs/problems/voice-profile-in-use'; + [key: string]: JsonValue | 'VOICE_PROFILE_IN_USE' | string | never | 409 | 'Voice Profile In Use' | 'https://photon.codes/docs/problems/voice-profile-in-use' | undefined; }; -export type UpdateVoiceProfileResponse429ApplicationProblemPlusJson = { - code: 'RATE_LIMITED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 429; - title: 'Too Many Requests'; - type: 'https://photon.codes/docs/problems/rate-limited'; +export type VoiceProfileInboundConfiguration = { + inbound: SipInboundConfiguration | null; + profileVersion: number; }; -export type UpdateVoiceProfileResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; -}; +export type VoiceProfileMediaEncryption = 'auto' | 'srtp' | (string & {}); -export type UpdateVoiceProfileResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type VoiceProfileNotFoundProblem = { + code: 'VOICE_PROFILE_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 404; + title: 'Voice Profile Not Found'; + type: 'https://photon.codes/docs/problems/voice-profile-not-found'; + [key: string]: JsonValue | 'VOICE_PROFILE_NOT_FOUND' | string | never | 404 | 'Voice Profile Not Found' | 'https://photon.codes/docs/problems/voice-profile-not-found' | undefined; }; -export type UpdateVoiceProfileResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; +export type VoiceProfilePage = { + nextPageToken?: string; + profiles: Array; }; -export type UpdateVoiceProfileResponse504ApplicationProblemPlusJson = { - code: 'REQUEST_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -} | { - code: 'UPSTREAM_TIMEOUT'; +export type VoiceProfileVersionConflictProblem = { + code: 'VOICE_PROFILE_VERSION_CONFLICT'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; + status: 409; + title: 'Voice Profile Version Conflict'; + type: 'https://photon.codes/docs/problems/voice-profile-version-conflict'; + [key: string]: JsonValue | 'VOICE_PROFILE_VERSION_CONFLICT' | string | never | 409 | 'Voice Profile Version Conflict' | 'https://photon.codes/docs/problems/voice-profile-version-conflict' | undefined; }; -export type UpdateWebhookDestinationRequestApplicationJson = { - description?: string | null; - enabledEvents?: Array | Array; - name?: string; - status?: 'enabled' | 'disabled' | (string & {}); - /** - * HTTPS URL without credentials or a fragment. - */ - url?: string; +export type WebhookApiVersion = SelectableWebhookApiVersion | DeprecatedWebhookApiVersion; + +export type WebhookApiVersionRetirement = { + migrationGuide: string; + reason: string; }; -export type UpdateWebhookDestinationResponse200ApplicationJson = { +export type WebhookDestination = { apiVersion: string; createdAt: string; deletedAt: string | null; description: string | null; destinationId: string; - enabledEvents: Array | Array; + enabledEvents: WebhookEventSelection; name: string; projectId: string; - status: 'enabled' | 'disabled' | (string & {}); + status: WebhookDestinationStatus; updatedAt: string; url: string; }; -export type UpdateWebhookDestinationResponse400ApplicationProblemPlusJson = { - code: 'INVALID_ARGUMENT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Invalid Argument'; - type: 'https://photon.codes/docs/problems/invalid-argument'; -}; - -export type UpdateWebhookDestinationResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; +export type WebhookDestinationDeletedProblem = { + code: 'WEBHOOK_DESTINATION_DELETED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + status: 410; + title: 'Webhook Destination Deleted'; + type: 'https://photon.codes/docs/problems/webhook-destination-deleted'; + [key: string]: JsonValue | 'WEBHOOK_DESTINATION_DELETED' | string | never | 410 | 'Webhook Destination Deleted' | 'https://photon.codes/docs/problems/webhook-destination-deleted' | undefined; }; -export type UpdateWebhookDestinationResponse404ApplicationProblemPlusJson = { +export type WebhookDestinationNotFoundProblem = { code: 'WEBHOOK_DESTINATION_NOT_FOUND'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 404; title: 'Webhook Destination Not Found'; type: 'https://photon.codes/docs/problems/webhook-destination-not-found'; + [key: string]: JsonValue | 'WEBHOOK_DESTINATION_NOT_FOUND' | string | never | 404 | 'Webhook Destination Not Found' | 'https://photon.codes/docs/problems/webhook-destination-not-found' | undefined; }; -export type UpdateWebhookDestinationResponse410ApplicationProblemPlusJson = { - code: 'WEBHOOK_DESTINATION_DELETED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 410; - title: 'Webhook Destination Deleted'; - type: 'https://photon.codes/docs/problems/webhook-destination-deleted'; -}; - -export type UpdateWebhookDestinationResponse422ApplicationProblemPlusJson = { - code: 'IDEMPOTENCY_KEY_REUSED'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 422; - title: 'Idempotency Key Reused'; - type: 'https://photon.codes/docs/problems/idempotency-key-reused'; +export type WebhookDestinationPage = { + destinations: Array; + nextPageToken?: string; }; -export type UpdateWebhookDestinationResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; -}; +export type WebhookDestinationStatus = 'enabled' | 'disabled' | (string & {}); -export type UpdateWebhookDestinationResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; -}; +export type WebhookEgressAddress = string; -export type UpdateWebhookDestinationResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; +export type WebhookEventSchema = { + [key: string]: JsonValue; }; -export type UploadAttachmentRequestMultipartRelated = Blob | File; +export type WebhookEventSelection = AllWebhookEvents | WebhookEventTypeList; -export type UploadAttachmentResponse200ApplicationJson = { - contentType: string; - createdAt: string; - filename?: string; - id: string; - metadata?: { - [key: string]: unknown; - }; - projectId: string; - sizeBytes: number; - updatedAt: string; +export type WebhookEventType = { + audience: WebhookEventTypeAudience; + description: string; + schemaProfile: 'reader'; + schemaUrl: string; + type: string; }; -export type UploadAttachmentResponse201ApplicationJson = { - contentType: string; - createdAt: string; - filename?: string; - id: string; - metadata?: { - [key: string]: unknown; - }; - projectId: string; - sizeBytes: number; - updatedAt: string; -}; +export type WebhookEventTypeAudience = 'agent' | 'infrastructure' | (string & {}); -export type UploadAttachmentResponse400ApplicationProblemPlusJson = { - code: 'HTTP_ERROR'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 400; - title: 'Request Failed'; - type: 'https://photon.codes/docs/problems/http-error'; -} | { - code: 'INVALID_ATTACHMENT_REQUEST'; +export type WebhookEventTypeList = Array; + +export type WebhookEventTypeName = string; + +export type WebhookEventWildcard = '*'; + +export type WhatsappAccountDisconnectingProblem = { + code: 'WHATSAPP_ACCOUNT_DISCONNECTING'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 400; - title: 'Invalid Attachment Request'; - type: 'https://photon.codes/docs/problems/invalid-attachment-request'; + status: 409; + title: 'WhatsApp Business Account Disconnecting'; + type: 'https://photon.codes/docs/problems/whatsapp-account-disconnecting'; + [key: string]: JsonValue | 'WHATSAPP_ACCOUNT_DISCONNECTING' | string | never | 409 | 'WhatsApp Business Account Disconnecting' | 'https://photon.codes/docs/problems/whatsapp-account-disconnecting' | undefined; }; -export type UploadAttachmentResponse403ApplicationProblemPlusJson = { - code: 'FORBIDDEN'; +export type WhatsappAccountPhoneNumber = { + displayName: string | null; + ownership: WhatsappPhoneNumberOwnership; + phoneNumber: string; + phoneNumberId: string; +}; + +export type WhatsappAccountProvisioningProblem = { + code: 'WHATSAPP_ACCOUNT_PROVISIONING'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Forbidden'; - type: 'https://photon.codes/docs/problems/forbidden'; -} | Authorization_Problem_INSUFFICIENT_SCOPE_403 | { - code: 'RESOURCE_MISMATCH'; + status: 409; + title: 'WhatsApp Business Account Has Provisioning Numbers'; + type: 'https://photon.codes/docs/problems/whatsapp-account-provisioning'; + [key: string]: JsonValue | 'WHATSAPP_ACCOUNT_PROVISIONING' | string | never | 409 | 'WhatsApp Business Account Has Provisioning Numbers' | 'https://photon.codes/docs/problems/whatsapp-account-provisioning' | undefined; +}; + +export type WhatsappBusinessAccount = { + accountName: string | null; + alerts: Array; + businessId: string; + businessName: string | null; + connectedAt: string; + maxPhoneNumbersPerBusiness?: number; + outboundCapacity: WhatsappOutboundCapacity; + restriction: WhatsappBusinessAccountRestriction | null; + reviewStatus: WhatsappReviewStatus; + senderCount: number; + subscribedAt?: string; + wabaId: string; +}; + +export type WhatsappBusinessAccountAlert = { + description: string; + entityId: string; + entityType: string; + observedAt: string; + severity: string; + status: string; + type: string; +}; + +export type WhatsappBusinessAccountRestriction = { + observedAt: string; + status: WhatsappRestrictionStatus; +}; + +export type WhatsappDisplayNameUnavailableProblem = { + code: 'WHATSAPP_DISPLAY_NAME_UNAVAILABLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 403; - title: 'Resource Mismatch'; - type: 'https://photon.codes/docs/problems/resource-mismatch'; + status: 422; + title: 'WhatsApp Display Name Unavailable'; + type: 'https://photon.codes/docs/problems/whatsapp-display-name-unavailable'; + [key: string]: JsonValue | 'WHATSAPP_DISPLAY_NAME_UNAVAILABLE' | string | never | 422 | 'WhatsApp Display Name Unavailable' | 'https://photon.codes/docs/problems/whatsapp-display-name-unavailable' | undefined; }; -export type UploadAttachmentResponse409ApplicationProblemPlusJson = { - code: 'ATTACHMENT_CONFLICT'; +export type WhatsappModeDedicatedProblem = { + code: 'WHATSAPP_MODE_DEDICATED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Attachment Conflict'; - type: 'https://photon.codes/docs/problems/attachment-conflict'; -} | { - code: 'ATTACHMENT_UPLOAD_NOT_READY'; + title: 'WhatsApp Mode Is Dedicated'; + type: 'https://photon.codes/docs/problems/whatsapp-mode-dedicated'; + [key: string]: JsonValue | 'WHATSAPP_MODE_DEDICATED' | string | never | 409 | 'WhatsApp Mode Is Dedicated' | 'https://photon.codes/docs/problems/whatsapp-mode-dedicated' | undefined; +}; + +export type WhatsappOutboundCapacity = '50' | '250' | '1000' | '2000' | '10000' | '100000' | 'UNLIMITED' | 'UNTIERED' | 'UNKNOWN' | (string & {}); + +export type WhatsappPhoneNumberOwnership = 'photon' | 'meta' | (string & {}); + +export type WhatsappRestrictionStatus = 'FLAGGED' | 'DISABLED' | 'REINSTATED' | 'UNKNOWN' | (string & {}); + +export type WhatsappReviewStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | 'UNKNOWN' | (string & {}); + +export type WhatsappSenderConnectedProblem = { + code: 'WHATSAPP_SENDER_CONNECTED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; status: 409; - title: 'Attachment Upload Not Ready'; - type: 'https://photon.codes/docs/problems/attachment-upload-not-ready'; + title: 'WhatsApp Sender Connected'; + type: 'https://photon.codes/docs/problems/whatsapp-sender-connected'; + [key: string]: JsonValue | 'WHATSAPP_SENDER_CONNECTED' | string | never | 409 | 'WhatsApp Sender Connected' | 'https://photon.codes/docs/problems/whatsapp-sender-connected' | undefined; }; -export type UploadAttachmentResponse413ApplicationProblemPlusJson = { - code: 'PAYLOAD_TOO_LARGE'; +export type WhatsappSenderProvisioningProblem = { + code: 'WHATSAPP_SENDER_PROVISIONING'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 413; - title: 'Payload Too Large'; - type: 'https://photon.codes/docs/problems/payload-too-large'; + status: 409; + title: 'WhatsApp Sender Provisioning'; + type: 'https://photon.codes/docs/problems/whatsapp-sender-provisioning'; + [key: string]: JsonValue | 'WHATSAPP_SENDER_PROVISIONING' | string | never | 409 | 'WhatsApp Sender Provisioning' | 'https://photon.codes/docs/problems/whatsapp-sender-provisioning' | undefined; }; -export type UploadAttachmentResponse422ApplicationProblemPlusJson = { - code: 'VALIDATION_FAILED'; +export type WhatsappVerificationCodeNotFoundProblem = { + code: 'WHATSAPP_VERIFICATION_CODE_NOT_FOUND'; detail?: string; instance?: string; - issues: Array<{ - code: string; - location: 'body' | 'cookie' | 'form' | 'header' | 'json' | 'param' | 'query' | (string & {}); - message: string; - path: string; - }>; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 422; - title: 'Request Validation Failed'; - type: 'https://photon.codes/docs/problems/validation-failed'; + status: 404; + title: 'WhatsApp Verification Code Not Found'; + type: 'https://photon.codes/docs/problems/whatsapp-verification-code-not-found'; + [key: string]: JsonValue | 'WHATSAPP_VERIFICATION_CODE_NOT_FOUND' | string | never | 404 | 'WhatsApp Verification Code Not Found' | 'https://photon.codes/docs/problems/whatsapp-verification-code-not-found' | undefined; }; -export type UploadAttachmentResponse500ApplicationProblemPlusJson = PhotonProblem_INTERNAL_ERROR_500 | { - code: 'INVALID_AUTH_CONTEXT'; +export type WhatsappVerificationWindowExpiredProblem = { + code: 'WHATSAPP_VERIFICATION_WINDOW_EXPIRED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 500; - title: 'Invalid Authentication Context'; - type: 'https://photon.codes/docs/problems/invalid-auth-context'; + status: 422; + title: 'WhatsApp Verification Window Expired'; + type: 'https://photon.codes/docs/problems/whatsapp-verification-window-expired'; + [key: string]: JsonValue | 'WHATSAPP_VERIFICATION_WINDOW_EXPIRED' | string | never | 422 | 'WhatsApp Verification Window Expired' | 'https://photon.codes/docs/problems/whatsapp-verification-window-expired' | undefined; }; -export type UploadAttachmentResponse502ApplicationProblemPlusJson = { - code: 'UPSTREAM_FAILURE'; +export type WhatsappVoipSourceNotEligibleProblem = { + code: 'WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 502; - title: 'Upstream Service Failure'; - type: 'https://photon.codes/docs/problems/upstream-failure'; + status: 404; + title: 'WhatsApp VoIP Source Not Eligible'; + type: 'https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible'; + [key: string]: JsonValue | 'WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE' | string | never | 404 | 'WhatsApp VoIP Source Not Eligible' | 'https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible' | undefined; }; -export type UploadAttachmentResponse503ApplicationProblemPlusJson = { - code: 'UPSTREAM_UNAVAILABLE'; +export type WhatsappVoipSourceReleasingProblem = { + code: 'WHATSAPP_VOIP_SOURCE_RELEASING'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 503; - title: 'Upstream Service Unavailable'; - type: 'https://photon.codes/docs/problems/upstream-unavailable'; + status: 409; + title: 'WhatsApp VoIP Source Releasing'; + type: 'https://photon.codes/docs/problems/whatsapp-voip-source-releasing'; + [key: string]: JsonValue | 'WHATSAPP_VOIP_SOURCE_RELEASING' | string | never | 409 | 'WhatsApp VoIP Source Releasing' | 'https://photon.codes/docs/problems/whatsapp-voip-source-releasing' | undefined; }; -export type UploadAttachmentResponse504ApplicationProblemPlusJson = { - code: 'UPSTREAM_TIMEOUT'; - detail?: string; - instance?: string; - remediation?: unknown; - requestId?: string; - status: 504; - title: 'Upstream Service Timeout'; - type: 'https://photon.codes/docs/problems/upstream-timeout'; -} | { - code: 'REQUEST_TIMEOUT'; +export type WhatsappWabaNotConnectedProblem = { + code: 'WHATSAPP_WABA_NOT_CONNECTED'; detail?: string; instance?: string; - remediation?: unknown; + remediation?: never; requestId?: string; - status: 504; - title: 'Request Timeout'; - type: 'https://photon.codes/docs/problems/request-timeout'; -}; - -export type __schema0 = string | number | boolean | null | Array<__schema0> | { - [key: string]: __schema0; + status: 404; + title: 'WhatsApp Business Account Not Connected'; + type: 'https://photon.codes/docs/problems/whatsapp-waba-not-connected'; + [key: string]: JsonValue | 'WHATSAPP_WABA_NOT_CONNECTED' | string | never | 404 | 'WhatsApp Business Account Not Connected' | 'https://photon.codes/docs/problems/whatsapp-waba-not-connected' | undefined; }; export type DeleteAccountData = { @@ -18298,39 +4050,39 @@ export type DeleteAccountErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteAccountResponse403ApplicationProblemPlusJson; + 403: DeleteAccountForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: DeleteAccountResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_OWNS_ORGANIZATIONS: Account Owns Organizations */ - 409: DeleteAccountResponse409ApplicationProblemPlusJson; + 409: AccountOwnsOrganizationsProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DeleteAccountResponse500ApplicationProblemPlusJson; + 500: DeleteAccountInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteAccountResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteAccountResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: DeleteAccountResponse504ApplicationProblemPlusJson; + 504: DeleteAccountGatewayTimeoutProblem; }; export type DeleteAccountError = DeleteAccountErrors[keyof DeleteAccountErrors]; @@ -18339,7 +4091,7 @@ export type DeleteAccountResponses = { /** * The deleted account tombstone. */ - 200: DeleteAccountResponse200ApplicationJson; + 200: Account; }; export type DeleteAccountResult = DeleteAccountResponses[keyof DeleteAccountResponses]; @@ -18355,39 +4107,39 @@ export type GetAccountErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetAccountResponse403ApplicationProblemPlusJson; + 403: GetAccountForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: GetAccountResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: GetAccountResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetAccountResponse500ApplicationProblemPlusJson; + 500: GetAccountInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetAccountResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetAccountResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetAccountResponse504ApplicationProblemPlusJson; + 504: GetAccountGatewayTimeoutProblem; }; export type GetAccountError = GetAccountErrors[keyof GetAccountErrors]; @@ -18396,13 +4148,13 @@ export type GetAccountResponses = { /** * The authenticated account. */ - 200: GetAccountResponse200ApplicationJson; + 200: Account; }; export type GetAccountResult = GetAccountResponses[keyof GetAccountResponses]; export type UpdateAccountData = { - body: UpdateAccountRequestApplicationJson; + body: UpdateAccountRequest; headers: { /** * Identifies one logical mutation across retries. @@ -18418,51 +4170,51 @@ export type UpdateAccountErrors = { /** * HTTP_ERROR: Request Failed; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: UpdateAccountResponse400ApplicationProblemPlusJson; + 400: UpdateAccountBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateAccountResponse403ApplicationProblemPlusJson; + 403: UpdateAccountForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: UpdateAccountResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: UpdateAccountResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: UpdateAccountResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateAccountResponse422ApplicationProblemPlusJson; + 422: UpdateAccountUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateAccountResponse500ApplicationProblemPlusJson; + 500: UpdateAccountInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateAccountResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateAccountResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: UpdateAccountResponse504ApplicationProblemPlusJson; + 504: UpdateAccountGatewayTimeoutProblem; }; export type UpdateAccountError = UpdateAccountErrors[keyof UpdateAccountErrors]; @@ -18471,7 +4223,7 @@ export type UpdateAccountResponses = { /** * The updated account. */ - 200: UpdateAccountResponse200ApplicationJson; + 200: Account; }; export type UpdateAccountResult = UpdateAccountResponses[keyof UpdateAccountResponses]; @@ -18495,7 +4247,7 @@ export type ListAuthorizedApplicationsData = { /** * Result ordering: normal, descending (desc), or ascending (asc). Omit to use the default order. */ - order?: 'normal' | 'desc' | 'asc' | (string & {}); + order?: ListAuthorizedApplicationsOrder; }; url: '/v1/account/oauth/authorized-applications'; }; @@ -18504,33 +4256,35 @@ export type ListAuthorizedApplicationsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden + * + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListAuthorizedApplicationsResponse403ApplicationProblemPlusJson; + 403: ListAuthorizedApplicationsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListAuthorizedApplicationsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListAuthorizedApplicationsResponse500ApplicationProblemPlusJson; + 500: ListAuthorizedApplicationsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListAuthorizedApplicationsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListAuthorizedApplicationsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ListAuthorizedApplicationsResponse504ApplicationProblemPlusJson; + 504: ListAuthorizedApplicationsGatewayTimeoutProblem; }; export type ListAuthorizedApplicationsError = ListAuthorizedApplicationsErrors[keyof ListAuthorizedApplicationsErrors]; @@ -18539,7 +4293,7 @@ export type ListAuthorizedApplicationsResponses = { /** * OAuth applications authorized by the authenticated user. */ - 200: ListAuthorizedApplicationsResponse200ApplicationJson; + 200: ListAuthorizedApplicationsResponse; }; export type ListAuthorizedApplicationsResult = ListAuthorizedApplicationsResponses[keyof ListAuthorizedApplicationsResponses]; @@ -18560,33 +4314,35 @@ export type RevokeAuthorizedApplicationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden + * + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson; + 403: RevokeAuthorizedApplicationForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson; + 500: RevokeAuthorizedApplicationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson; + 504: RevokeAuthorizedApplicationGatewayTimeoutProblem; }; export type RevokeAuthorizedApplicationError = RevokeAuthorizedApplicationErrors[keyof RevokeAuthorizedApplicationErrors]; @@ -18601,7 +4357,7 @@ export type RevokeAuthorizedApplicationResponses = { export type RevokeAuthorizedApplicationResult = RevokeAuthorizedApplicationResponses[keyof RevokeAuthorizedApplicationResponses]; export type ConfirmAccountPhoneVerificationData = { - body: ConfirmAccountPhoneVerificationRequestApplicationJson; + body: ConfirmAccountPhoneVerificationRequest; path?: never; query?: never; url: '/v1/account/phone'; @@ -18611,55 +4367,55 @@ export type ConfirmAccountPhoneVerificationErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson; + 403: ConfirmAccountPhoneVerificationForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson; + 500: ConfirmAccountPhoneVerificationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson; + 504: ConfirmAccountPhoneVerificationGatewayTimeoutProblem; }; export type ConfirmAccountPhoneVerificationError = ConfirmAccountPhoneVerificationErrors[keyof ConfirmAccountPhoneVerificationErrors]; @@ -18668,13 +4424,13 @@ export type ConfirmAccountPhoneVerificationResponses = { /** * The Account with its verified phone number. */ - 200: ConfirmAccountPhoneVerificationResponse200ApplicationJson; + 200: Account; }; export type ConfirmAccountPhoneVerificationResult = ConfirmAccountPhoneVerificationResponses[keyof ConfirmAccountPhoneVerificationResponses]; export type StartAccountPhoneVerificationData = { - body: StartAccountPhoneVerificationRequestApplicationJson; + body: StartAccountPhoneVerificationRequest; path?: never; query?: never; url: '/v1/account/phone/verifications'; @@ -18684,55 +4440,55 @@ export type StartAccountPhoneVerificationErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: StartAccountPhoneVerificationResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; CAPTCHA_REQUIRED: Captcha Required * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: StartAccountPhoneVerificationResponse403ApplicationProblemPlusJson; + 403: StartAccountPhoneVerificationForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: StartAccountPhoneVerificationResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: StartAccountPhoneVerificationResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: StartAccountPhoneVerificationResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: StartAccountPhoneVerificationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: StartAccountPhoneVerificationResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: StartAccountPhoneVerificationResponse500ApplicationProblemPlusJson; + 500: StartAccountPhoneVerificationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: StartAccountPhoneVerificationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: StartAccountPhoneVerificationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: StartAccountPhoneVerificationResponse504ApplicationProblemPlusJson; + 504: StartAccountPhoneVerificationGatewayTimeoutProblem; }; export type StartAccountPhoneVerificationError = StartAccountPhoneVerificationErrors[keyof StartAccountPhoneVerificationErrors]; @@ -18741,7 +4497,7 @@ export type StartAccountPhoneVerificationResponses = { /** * A pending verification. The Account is unchanged. */ - 201: StartAccountPhoneVerificationResponse201ApplicationJson; + 201: StartAccountPhoneVerificationResponse; }; export type StartAccountPhoneVerificationResult = StartAccountPhoneVerificationResponses[keyof StartAccountPhoneVerificationResponses]; @@ -18763,51 +4519,51 @@ export type ResetAccountProfilePictureErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: ResetAccountProfilePictureResponse400ApplicationProblemPlusJson; + 400: ResetAccountProfilePictureBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ResetAccountProfilePictureResponse403ApplicationProblemPlusJson; + 403: ResetAccountProfilePictureForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: ResetAccountProfilePictureResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: ResetAccountProfilePictureResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: ResetAccountProfilePictureResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed */ - 422: ResetAccountProfilePictureResponse422ApplicationProblemPlusJson; + 422: ResetAccountProfilePictureUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ResetAccountProfilePictureResponse500ApplicationProblemPlusJson; + 500: ResetAccountProfilePictureInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ResetAccountProfilePictureResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ResetAccountProfilePictureResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ResetAccountProfilePictureResponse504ApplicationProblemPlusJson; + 504: ResetAccountProfilePictureGatewayTimeoutProblem; }; export type ResetAccountProfilePictureError = ResetAccountProfilePictureErrors[keyof ResetAccountProfilePictureErrors]; @@ -18816,13 +4572,13 @@ export type ResetAccountProfilePictureResponses = { /** * The Account reset to its default profile picture. */ - 200: ResetAccountProfilePictureResponse200ApplicationJson; + 200: Account; }; export type ResetAccountProfilePictureResult = ResetAccountProfilePictureResponses[keyof ResetAccountProfilePictureResponses]; export type CommitAccountProfilePictureData = { - body: CommitAccountProfilePictureRequestApplicationJson; + body: CommitAccountProfilePictureRequest; headers: { /** * Identifies one logical mutation across retries. @@ -18838,51 +4594,51 @@ export type CommitAccountProfilePictureErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: CommitAccountProfilePictureResponse400ApplicationProblemPlusJson; + 400: CommitAccountProfilePictureBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CommitAccountProfilePictureResponse403ApplicationProblemPlusJson; + 403: CommitAccountProfilePictureForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: CommitAccountProfilePictureResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: CommitAccountProfilePictureResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CommitAccountProfilePictureResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed */ - 422: CommitAccountProfilePictureResponse422ApplicationProblemPlusJson; + 422: CommitAccountProfilePictureUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CommitAccountProfilePictureResponse500ApplicationProblemPlusJson; + 500: CommitAccountProfilePictureInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CommitAccountProfilePictureResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CommitAccountProfilePictureResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CommitAccountProfilePictureResponse504ApplicationProblemPlusJson; + 504: CommitAccountProfilePictureGatewayTimeoutProblem; }; export type CommitAccountProfilePictureError = CommitAccountProfilePictureErrors[keyof CommitAccountProfilePictureErrors]; @@ -18891,13 +4647,13 @@ export type CommitAccountProfilePictureResponses = { /** * The Account with its committed profile picture. */ - 200: CommitAccountProfilePictureResponse200ApplicationJson; + 200: Account; }; export type CommitAccountProfilePictureResult = CommitAccountProfilePictureResponses[keyof CommitAccountProfilePictureResponses]; export type CreateAccountProfilePictureUploadData = { - body: CreateAccountProfilePictureUploadRequestApplicationJson; + body: ProfilePictureUploadRequest; path?: never; query?: never; url: '/v1/account/profile-picture/uploads'; @@ -18907,51 +4663,51 @@ export type CreateAccountProfilePictureUploadErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson; + 403: CreateAccountProfilePictureUploadForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson; + 500: CreateAccountProfilePictureUploadInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson; + 504: CreateAccountProfilePictureUploadGatewayTimeoutProblem; }; export type CreateAccountProfilePictureUploadError = CreateAccountProfilePictureUploadErrors[keyof CreateAccountProfilePictureUploadErrors]; @@ -18960,7 +4716,7 @@ export type CreateAccountProfilePictureUploadResponses = { /** * A short-lived, Account-bound presigned S3 POST. */ - 201: CreateAccountProfilePictureUploadResponse201ApplicationJson; + 201: ProfilePictureUpload; }; export type CreateAccountProfilePictureUploadResult = CreateAccountProfilePictureUploadResponses[keyof CreateAccountProfilePictureUploadResponses]; @@ -18976,54 +4732,54 @@ export type ListAccountServiceKeysErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListAccountServiceKeysResponse403ApplicationProblemPlusJson; + 403: ListAccountServiceKeysForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: ListAccountServiceKeysResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: ListAccountServiceKeysResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListAccountServiceKeysResponse500ApplicationProblemPlusJson; + 500: ListAccountServiceKeysInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListAccountServiceKeysResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListAccountServiceKeysResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ListAccountServiceKeysResponse504ApplicationProblemPlusJson; + 504: ListAccountServiceKeysGatewayTimeoutProblem; }; export type ListAccountServiceKeysError = ListAccountServiceKeysErrors[keyof ListAccountServiceKeysErrors]; export type ListAccountServiceKeysResponses = { /** - * Active Account Service Key metadata, newest first. + * Unrevoked Account Service Key metadata, including expired keys, newest first. */ - 200: ListAccountServiceKeysResponse200ApplicationJson; + 200: ListAccountServiceKeysResponse; }; export type ListAccountServiceKeysResult = ListAccountServiceKeysResponses[keyof ListAccountServiceKeysResponses]; export type CreateAccountServiceKeyData = { - body: CreateAccountServiceKeyRequestApplicationJson; + body: CreateAccountServiceKeyRequest; headers: { /** * Identifies one logical mutation across retries. @@ -19039,55 +4795,55 @@ export type CreateAccountServiceKeyErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: CreateAccountServiceKeyResponse400ApplicationProblemPlusJson; + 400: CreateAccountServiceKeyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateAccountServiceKeyResponse403ApplicationProblemPlusJson; + 403: CreateAccountServiceKeyForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found */ - 404: CreateAccountServiceKeyResponse404ApplicationProblemPlusJson; + 404: AccountNotFoundProblem; /** * ACCOUNT_SERVICE_KEY_LIMIT_REACHED: Account Service Key Limit Reached */ - 409: CreateAccountServiceKeyResponse409ApplicationProblemPlusJson; + 409: AccountServiceKeyLimitReachedProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: CreateAccountServiceKeyResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CreateAccountServiceKeyResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed */ - 422: CreateAccountServiceKeyResponse422ApplicationProblemPlusJson; + 422: CreateAccountServiceKeyUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateAccountServiceKeyResponse500ApplicationProblemPlusJson; + 500: CreateAccountServiceKeyInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateAccountServiceKeyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateAccountServiceKeyResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateAccountServiceKeyResponse504ApplicationProblemPlusJson; + 504: CreateAccountServiceKeyGatewayTimeoutProblem; }; export type CreateAccountServiceKeyError = CreateAccountServiceKeyErrors[keyof CreateAccountServiceKeyErrors]; @@ -19096,7 +4852,7 @@ export type CreateAccountServiceKeyResponses = { /** * The created Account Service Key and its one-time credential. */ - 201: CreateAccountServiceKeyResponse201ApplicationJson; + 201: CreateAccountServiceKeyResponse; }; export type CreateAccountServiceKeyResult = CreateAccountServiceKeyResponses[keyof CreateAccountServiceKeyResponses]; @@ -19120,51 +4876,51 @@ export type RevokeAccountServiceKeyErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: RevokeAccountServiceKeyResponse400ApplicationProblemPlusJson; + 400: RevokeAccountServiceKeyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RevokeAccountServiceKeyResponse403ApplicationProblemPlusJson; + 403: RevokeAccountServiceKeyForbiddenProblem; /** * ACCOUNT_NOT_FOUND: Account Not Found; ACCOUNT_SERVICE_KEY_NOT_FOUND: Account Service Key Not Found */ - 404: RevokeAccountServiceKeyResponse404ApplicationProblemPlusJson; + 404: RevokeAccountServiceKeyNotFoundProblem; /** * ACCOUNT_DELETED: Account Deleted */ - 410: RevokeAccountServiceKeyResponse410ApplicationProblemPlusJson; + 410: AccountDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: RevokeAccountServiceKeyResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused; VALIDATION_FAILED: Request Validation Failed */ - 422: RevokeAccountServiceKeyResponse422ApplicationProblemPlusJson; + 422: RevokeAccountServiceKeyUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: RevokeAccountServiceKeyResponse500ApplicationProblemPlusJson; + 500: RevokeAccountServiceKeyInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RevokeAccountServiceKeyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RevokeAccountServiceKeyResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: RevokeAccountServiceKeyResponse504ApplicationProblemPlusJson; + 504: RevokeAccountServiceKeyGatewayTimeoutProblem; }; export type RevokeAccountServiceKeyError = RevokeAccountServiceKeyErrors[keyof RevokeAccountServiceKeyErrors]; @@ -19173,7 +4929,7 @@ export type RevokeAccountServiceKeyResponses = { /** * The revoked key metadata. Repeated revocation is stable. */ - 200: RevokeAccountServiceKeyResponse200ApplicationJson; + 200: RevokeAccountServiceKeyResponse; }; export type RevokeAccountServiceKeyResult = RevokeAccountServiceKeyResponses[keyof RevokeAccountServiceKeyResponses]; @@ -19187,20 +4943,22 @@ export type DeviceAuthorizeData = { export type DeviceAuthorizeErrors = { /** - * WorkOS rejected the request. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling. + * The authorization request was rejected. OAuth errors use error and error_description fields. */ 400: unknown; /** - * WorkOS could not be reached (problem+json). + * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 502: unknown; + 503: UpstreamUnavailableProblem; }; +export type DeviceAuthorizeError = DeviceAuthorizeErrors[keyof DeviceAuthorizeErrors]; + export type DeviceAuthorizeResponses = { /** - * Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side. + * Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server. */ - 200: DeviceAuthorizeResponse200ApplicationJson; + 200: DeviceAuthorizeResponse; }; export type DeviceAuthorizeResult = DeviceAuthorizeResponses[keyof DeviceAuthorizeResponses]; @@ -19209,7 +4967,7 @@ export type DeviceTokenData = { /** * Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding. */ - body: DeviceTokenRequestApplicationJson; + body: DeviceTokenRequest; path?: never; query?: never; url: '/v1/auth/device/token'; @@ -19219,7 +4977,7 @@ export type DeviceTokenErrors = { /** * authorization_pending, slow_down, access_denied, expired_token, invalid_grant, invalid_request, or unsupported_grant_type. Errors use the OAuth 2.0 format ({error, error_description?}), not problem+json. A 5xx problem+json response is transient; keep polling. */ - 400: DeviceTokenResponse400ApplicationJson; + 400: DeviceTokenBadRequestResponse; /** * Relayed slow_down; back off the polling interval. */ @@ -19229,9 +4987,9 @@ export type DeviceTokenErrors = { */ 500: unknown; /** - * WorkOS could not be reached (problem+json). + * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 502: unknown; + 503: UpstreamUnavailableProblem; }; export type DeviceTokenError = DeviceTokenErrors[keyof DeviceTokenErrors]; @@ -19240,13 +4998,13 @@ export type DeviceTokenResponses = { /** * Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one. */ - 200: DeviceTokenResponse200ApplicationJson; + 200: DeviceTokenResponse; }; export type DeviceTokenResult = DeviceTokenResponses[keyof DeviceTokenResponses]; export type StartEnterpriseLoginData = { - body: StartEnterpriseLoginRequestApplicationJson; + body: StartEnterpriseLoginRequest; path?: never; query?: never; url: '/v1/auth/login/enrollment'; @@ -19256,7 +5014,7 @@ export type StartEnterpriseLoginErrors = { /** * INVALID_RETURN_TO: Invalid Return To */ - 400: StartEnterpriseLoginResponse400ApplicationProblemPlusJson; + 400: InvalidReturnToProblem; }; export type StartEnterpriseLoginError = StartEnterpriseLoginErrors[keyof StartEnterpriseLoginErrors]; @@ -19265,7 +5023,7 @@ export type StartEnterpriseLoginResponses = { /** * Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication. */ - 200: StartEnterpriseLoginResponse200ApplicationJson; + 200: StartEnterpriseLoginResponse; }; export type StartEnterpriseLoginResult = StartEnterpriseLoginResponses[keyof StartEnterpriseLoginResponses]; @@ -19281,11 +5039,11 @@ export type ListOauthScopesErrors = { /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListOauthScopesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ListOauthScopesResponse504ApplicationProblemPlusJson; + 504: ListOauthScopesGatewayTimeoutProblem; }; export type ListOauthScopesError = ListOauthScopesErrors[keyof ListOauthScopesErrors]; @@ -19294,7 +5052,7 @@ export type ListOauthScopesResponses = { /** * The configurable OAuth business permissions. */ - 200: ListOauthScopesResponse200ApplicationJson; + 200: ListOauthScopesResponse; }; export type ListOauthScopesResult = ListOauthScopesResponses[keyof ListOauthScopesResponses]; @@ -19312,45 +5070,45 @@ export type GetOrganizationConnectionStatusErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson; + 403: GetOrganizationConnectionStatusForbiddenProblem; /** * ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found */ - 404: GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson; + 404: OrganizationConnectionNotFoundProblem; /** * ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable */ - 409: GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson; + 409: OrganizationSyncUnavailableProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson; + 500: GetOrganizationConnectionStatusInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson; + 504: GetOrganizationConnectionStatusGatewayTimeoutProblem; }; export type GetOrganizationConnectionStatusError = GetOrganizationConnectionStatusErrors[keyof GetOrganizationConnectionStatusErrors]; @@ -19359,7 +5117,7 @@ export type GetOrganizationConnectionStatusResponses = { /** * Organization mapping and current member synchronization. */ - 200: GetOrganizationConnectionStatusResponse200ApplicationJson; + 200: OrganizationConnectionStatus; }; export type GetOrganizationConnectionStatusResult = GetOrganizationConnectionStatusResponses[keyof GetOrganizationConnectionStatusResponses]; @@ -19377,45 +5135,45 @@ export type RetryOrganizationConnectionSyncErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson; + 403: RetryOrganizationConnectionSyncForbiddenProblem; /** * ORGANIZATION_CONNECTION_NOT_FOUND: Organization Connection Not Found */ - 404: RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson; + 404: OrganizationConnectionNotFoundProblem; /** * ORGANIZATION_SYNC_UNAVAILABLE: Organization Synchronization Unavailable */ - 409: RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson; + 409: OrganizationSyncUnavailableProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson; + 500: RetryOrganizationConnectionSyncInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson; + 504: RetryOrganizationConnectionSyncGatewayTimeoutProblem; }; export type RetryOrganizationConnectionSyncError = RetryOrganizationConnectionSyncErrors[keyof RetryOrganizationConnectionSyncErrors]; @@ -19424,7 +5182,7 @@ export type RetryOrganizationConnectionSyncResponses = { /** * Current synchronization state after requesting retry. */ - 200: RetryOrganizationConnectionSyncResponse200ApplicationJson; + 200: OrganizationConnectionStatus; }; export type RetryOrganizationConnectionSyncResult = RetryOrganizationConnectionSyncResponses[keyof RetryOrganizationConnectionSyncResponses]; @@ -19442,49 +5200,49 @@ export type GetOrganizationSsoConfigurationErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson; + 400: GetOrganizationSsoConfigurationBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson; + 403: GetOrganizationSsoConfigurationForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson; + 412: GetOrganizationSsoConfigurationPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson; + 500: GetOrganizationSsoConfigurationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson; + 504: GetOrganizationSsoConfigurationGatewayTimeoutProblem; }; export type GetOrganizationSsoConfigurationError = GetOrganizationSsoConfigurationErrors[keyof GetOrganizationSsoConfigurationErrors]; @@ -19493,13 +5251,13 @@ export type GetOrganizationSsoConfigurationResponses = { /** * Current connection and independent local policy state. */ - 200: GetOrganizationSsoConfigurationResponse200ApplicationJson; + 200: OrganizationSsoConfiguration; }; export type GetOrganizationSsoConfigurationResult = GetOrganizationSsoConfigurationResponses[keyof GetOrganizationSsoConfigurationResponses]; export type UpdateOrganizationSsoPolicyData = { - body: UpdateOrganizationSsoPolicyRequestApplicationJson; + body: UpdateOrganizationSsoPolicyRequest; path: { orgId: string; }; @@ -19511,49 +5269,49 @@ export type UpdateOrganizationSsoPolicyErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson; + 400: UpdateOrganizationSsoPolicyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson; + 403: UpdateOrganizationSsoPolicyForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson; + 412: UpdateOrganizationSsoPolicyPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson; + 500: UpdateOrganizationSsoPolicyInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson; + 504: UpdateOrganizationSsoPolicyGatewayTimeoutProblem; }; export type UpdateOrganizationSsoPolicyError = UpdateOrganizationSsoPolicyErrors[keyof UpdateOrganizationSsoPolicyErrors]; @@ -19562,13 +5320,13 @@ export type UpdateOrganizationSsoPolicyResponses = { /** * Current connection and independent local policy state. */ - 200: UpdateOrganizationSsoPolicyResponse200ApplicationJson; + 200: OrganizationSsoConfiguration; }; export type UpdateOrganizationSsoPolicyResult = UpdateOrganizationSsoPolicyResponses[keyof UpdateOrganizationSsoPolicyResponses]; export type BeginOrganizationSsoAdmissionData = { - body: BeginOrganizationSsoAdmissionRequestApplicationJson; + body: OrganizationAuthenticationRequest; path: { orgId: string; }; @@ -19580,49 +5338,49 @@ export type BeginOrganizationSsoAdmissionErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson; + 400: BeginOrganizationSsoAdmissionBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson; + 403: BeginOrganizationSsoAdmissionForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson; + 412: BeginOrganizationSsoAdmissionPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson; + 500: BeginOrganizationSsoAdmissionInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson; + 504: BeginOrganizationSsoAdmissionGatewayTimeoutProblem; }; export type BeginOrganizationSsoAdmissionError = BeginOrganizationSsoAdmissionErrors[keyof BeginOrganizationSsoAdmissionErrors]; @@ -19631,13 +5389,13 @@ export type BeginOrganizationSsoAdmissionResponses = { /** * Targeted SSO authorization URL. */ - 200: BeginOrganizationSsoAdmissionResponse200ApplicationJson; + 200: OrganizationAuthenticationRedirect; }; export type BeginOrganizationSsoAdmissionResult = BeginOrganizationSsoAdmissionResponses[keyof BeginOrganizationSsoAdmissionResponses]; export type BeginOrganizationAuthenticationData = { - body: BeginOrganizationAuthenticationRequestApplicationJson; + body: OrganizationAuthenticationRequest; path: { orgId: string; }; @@ -19649,49 +5407,49 @@ export type BeginOrganizationAuthenticationErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson; + 400: BeginOrganizationAuthenticationBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson; + 403: BeginOrganizationAuthenticationForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson; + 412: BeginOrganizationAuthenticationPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson; + 500: BeginOrganizationAuthenticationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson; + 504: BeginOrganizationAuthenticationGatewayTimeoutProblem; }; export type BeginOrganizationAuthenticationError = BeginOrganizationAuthenticationErrors[keyof BeginOrganizationAuthenticationErrors]; @@ -19700,13 +5458,13 @@ export type BeginOrganizationAuthenticationResponses = { /** * Targeted SSO authorization URL. */ - 200: BeginOrganizationAuthenticationResponse200ApplicationJson; + 200: OrganizationAuthenticationRedirect; }; export type BeginOrganizationAuthenticationResult = BeginOrganizationAuthenticationResponses[keyof BeginOrganizationAuthenticationResponses]; export type BeginOrganizationClosureAuthenticationData = { - body: BeginOrganizationClosureAuthenticationRequestApplicationJson; + body: OrganizationAuthenticationRequest; path: { orgId: string; }; @@ -19718,49 +5476,49 @@ export type BeginOrganizationClosureAuthenticationErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson; + 400: BeginOrganizationClosureAuthenticationBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson; + 403: BeginOrganizationClosureAuthenticationForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson; + 412: BeginOrganizationClosureAuthenticationPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson; + 500: BeginOrganizationClosureAuthenticationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson; + 504: BeginOrganizationClosureAuthenticationGatewayTimeoutProblem; }; export type BeginOrganizationClosureAuthenticationError = BeginOrganizationClosureAuthenticationErrors[keyof BeginOrganizationClosureAuthenticationErrors]; @@ -19769,13 +5527,88 @@ export type BeginOrganizationClosureAuthenticationResponses = { /** * Targeted SSO authorization URL. */ - 200: BeginOrganizationClosureAuthenticationResponse200ApplicationJson; + 200: OrganizationAuthenticationRedirect; }; export type BeginOrganizationClosureAuthenticationResult = BeginOrganizationClosureAuthenticationResponses[keyof BeginOrganizationClosureAuthenticationResponses]; +export type DisableOrganizationSsoData = { + body: DisableOrganizationSsoRequest; + headers: { + /** + * Identifies one logical mutation across retries. + */ + 'Idempotency-Key': string; + }; + path: { + orgId: string; + }; + query?: never; + url: '/v1/auth/organizations/{orgId}/sso/disable'; +}; + +export type DisableOrganizationSsoErrors = { + /** + * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid + */ + 400: DisableOrganizationSsoBadRequestProblem; + /** + * NOT_AUTHENTICATED: Not Authenticated + */ + 401: NotAuthenticatedProblem; + /** + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + */ + 403: DisableOrganizationSsoForbiddenProblem; + /** + * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found + */ + 404: OrganizationSsoNotFoundProblem; + /** + * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict + */ + 409: OrganizationSsoConflictProblem; + /** + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required + */ + 412: DisableOrganizationSsoPreconditionFailedProblem; + /** + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused + */ + 422: DisableOrganizationSsoUnprocessableEntityProblem; + /** + * INVALID_AUTH_CONTEXT: Invalid Authentication Context + * + * INTERNAL_ERROR: Internal Server Error + */ + 500: DisableOrganizationSsoInternalServerErrorProblem; + /** + * UPSTREAM_FAILURE: Upstream Service Failure + */ + 502: UpstreamFailureProblem; + /** + * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable + */ + 503: UpstreamUnavailableProblem; + /** + * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout + */ + 504: DisableOrganizationSsoGatewayTimeoutProblem; +}; + +export type DisableOrganizationSsoError = DisableOrganizationSsoErrors[keyof DisableOrganizationSsoErrors]; + +export type DisableOrganizationSsoResponses = { + /** + * Current connection and independent local policy state. + */ + 200: OrganizationSsoConfiguration; +}; + +export type DisableOrganizationSsoResult = DisableOrganizationSsoResponses[keyof DisableOrganizationSsoResponses]; + export type BeginInvitationSsoData = { - body: BeginInvitationSsoRequestApplicationJson; + body: BeginInvitationSsoRequest; path: { orgId: string; }; @@ -19787,49 +5620,49 @@ export type BeginInvitationSsoErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: BeginInvitationSsoResponse400ApplicationProblemPlusJson; + 400: BeginInvitationSsoBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: BeginInvitationSsoResponse403ApplicationProblemPlusJson; + 403: BeginInvitationSsoForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: BeginInvitationSsoResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: BeginInvitationSsoResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: BeginInvitationSsoResponse412ApplicationProblemPlusJson; + 412: BeginInvitationSsoPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: BeginInvitationSsoResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: BeginInvitationSsoResponse500ApplicationProblemPlusJson; + 500: BeginInvitationSsoInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: BeginInvitationSsoResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: BeginInvitationSsoResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: BeginInvitationSsoResponse504ApplicationProblemPlusJson; + 504: BeginInvitationSsoGatewayTimeoutProblem; }; export type BeginInvitationSsoError = BeginInvitationSsoErrors[keyof BeginInvitationSsoErrors]; @@ -19838,13 +5671,13 @@ export type BeginInvitationSsoResponses = { /** * Invitation-bound SSO authorization URL. */ - 200: BeginInvitationSsoResponse200ApplicationJson; + 200: OrganizationAuthenticationRedirect; }; export type BeginInvitationSsoResult = BeginInvitationSsoResponses[keyof BeginInvitationSsoResponses]; export type CreateOrganizationSsoPortalLinkData = { - body: CreateOrganizationSsoPortalLinkRequestApplicationJson; + body: CreateOrganizationSsoPortalLinkRequest; path: { orgId: string; }; @@ -19856,49 +5689,49 @@ export type CreateOrganizationSsoPortalLinkErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson; + 400: CreateOrganizationSsoPortalLinkBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson; + 403: CreateOrganizationSsoPortalLinkForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson; + 412: CreateOrganizationSsoPortalLinkPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson; + 500: CreateOrganizationSsoPortalLinkInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson; + 504: CreateOrganizationSsoPortalLinkGatewayTimeoutProblem; }; export type CreateOrganizationSsoPortalLinkError = CreateOrganizationSsoPortalLinkErrors[keyof CreateOrganizationSsoPortalLinkErrors]; @@ -19907,7 +5740,7 @@ export type CreateOrganizationSsoPortalLinkResponses = { /** * Short-lived provider setup link. */ - 200: CreateOrganizationSsoPortalLinkResponse200ApplicationJson; + 200: CreateOrganizationSsoPortalLinkResponse; }; export type CreateOrganizationSsoPortalLinkResult = CreateOrganizationSsoPortalLinkResponses[keyof CreateOrganizationSsoPortalLinkResponses]; @@ -19925,49 +5758,49 @@ export type RefreshOrganizationSsoConnectionErrors = { /** * INVALID_RETURN_TO: Invalid Return To; INVALID_ARGUMENT: Invalid Argument */ - 400: RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson; + 400: RefreshOrganizationSsoConnectionBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson; + 403: RefreshOrganizationSsoConnectionForbiddenProblem; /** * ORGANIZATION_SSO_NOT_FOUND: Organization SSO Not Found */ - 404: RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson; + 404: OrganizationSsoNotFoundProblem; /** * ORGANIZATION_SSO_CONFLICT: Organization SSO Conflict */ - 409: RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson; + 409: OrganizationSsoConflictProblem; /** - * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed + * ORGANIZATION_SSO_PRECONDITION_FAILED: Organization SSO Precondition Failed; SSO_SUBSCRIPTION_REQUIRED: SSO Subscription Required */ - 412: RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson; + 412: RefreshOrganizationSsoConnectionPreconditionFailedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson; + 500: RefreshOrganizationSsoConnectionInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson; + 504: RefreshOrganizationSsoConnectionGatewayTimeoutProblem; }; export type RefreshOrganizationSsoConnectionError = RefreshOrganizationSsoConnectionErrors[keyof RefreshOrganizationSsoConnectionErrors]; @@ -19976,13 +5809,13 @@ export type RefreshOrganizationSsoConnectionResponses = { /** * Current connection and independent local policy state. */ - 200: RefreshOrganizationSsoConnectionResponse200ApplicationJson; + 200: OrganizationSsoConfiguration; }; export type RefreshOrganizationSsoConnectionResult = RefreshOrganizationSsoConnectionResponses[keyof RefreshOrganizationSsoConnectionResponses]; export type CreateAppInstallationRequestData = { - body: CreateAppInstallationRequestRequestApplicationJson; + body: CreateAppInstallationRequestRequest; path?: never; query?: never; url: '/v1/installation-requests'; @@ -19992,31 +5825,31 @@ export type CreateAppInstallationRequestErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: CreateAppInstallationRequestResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion */ - 401: CreateAppInstallationRequestResponse401ApplicationProblemPlusJson; + 401: AppInstallationAssertionInvalidProblem; /** * APP_INSTALLATION_ASSERTION_REPLAYED: Installation Assertion Already Used; APP_INSTALLATION_CONFIG_CHANGED: Installation App Configuration Changed */ - 409: CreateAppInstallationRequestResponse409ApplicationProblemPlusJson; + 409: CreateAppInstallationRequestConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateAppInstallationRequestResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateAppInstallationRequestResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateAppInstallationRequestResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateAppInstallationRequestResponse504ApplicationProblemPlusJson; + 504: CreateAppInstallationRequestGatewayTimeoutProblem; }; export type CreateAppInstallationRequestError = CreateAppInstallationRequestErrors[keyof CreateAppInstallationRequestErrors]; @@ -20025,13 +5858,13 @@ export type CreateAppInstallationRequestResponses = { /** * Installation request metadata. No customer credential or access is issued. */ - 201: CreateAppInstallationRequestResponse201ApplicationJson; + 201: CreateAppInstallationRequestResponse; }; export type CreateAppInstallationRequestResult = CreateAppInstallationRequestResponses[keyof CreateAppInstallationRequestResponses]; export type RedeemAppInstallationDeliveryData = { - body: RedeemAppInstallationDeliveryRequestApplicationJson; + body: RedeemAppInstallationDeliveryRequest; path?: never; query?: never; url: '/v1/installation-requests/redeem'; @@ -20041,31 +5874,31 @@ export type RedeemAppInstallationDeliveryErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * APP_INSTALLATION_ASSERTION_INVALID: Invalid Installation Client Assertion */ - 401: RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson; + 401: AppInstallationAssertionInvalidProblem; /** * APP_INSTALLATION_DELIVERY_UNAVAILABLE: Installation Delivery Unavailable */ - 409: RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson; + 409: AppInstallationDeliveryUnavailableProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson; + 504: RedeemAppInstallationDeliveryGatewayTimeoutProblem; }; export type RedeemAppInstallationDeliveryError = RedeemAppInstallationDeliveryErrors[keyof RedeemAppInstallationDeliveryErrors]; @@ -20074,7 +5907,7 @@ export type RedeemAppInstallationDeliveryResponses = { /** * First successful delivery or metadata-only operation status. */ - 200: RedeemAppInstallationDeliveryResponse200ApplicationJson; + 200: RedeemAppInstallationDeliveryResponse; }; export type RedeemAppInstallationDeliveryResult = RedeemAppInstallationDeliveryResponses[keyof RedeemAppInstallationDeliveryResponses]; @@ -20092,43 +5925,43 @@ export type GetOrganizationBillingOverviewErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson; + 403: GetOrganizationBillingOverviewForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson; + 500: GetOrganizationBillingOverviewInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson; + 504: GetOrganizationBillingOverviewGatewayTimeoutProblem; }; export type GetOrganizationBillingOverviewError = GetOrganizationBillingOverviewErrors[keyof GetOrganizationBillingOverviewErrors]; @@ -20137,7 +5970,7 @@ export type GetOrganizationBillingOverviewResponses = { /** * The organization-owned plan and its resolved entitlements. */ - 200: GetOrganizationBillingOverviewResponse200ApplicationJson; + 200: GetOrganizationBillingOverviewResponse; }; export type GetOrganizationBillingOverviewResult = GetOrganizationBillingOverviewResponses[keyof GetOrganizationBillingOverviewResponses]; @@ -20161,45 +5994,45 @@ export type CreateOrganizationPaymentMethodCheckoutErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson; + 400: CreateOrganizationPaymentMethodCheckoutBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson; + 403: CreateOrganizationPaymentMethodCheckoutForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson; + 422: CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson; + 500: CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; PAYMENT_PROVIDER_NOT_READY: Payment Provider Not Ready * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson; + 503: CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson; + 504: CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem; }; export type CreateOrganizationPaymentMethodCheckoutError = CreateOrganizationPaymentMethodCheckoutErrors[keyof CreateOrganizationPaymentMethodCheckoutErrors]; @@ -20208,7 +6041,7 @@ export type CreateOrganizationPaymentMethodCheckoutResponses = { /** * Hosted card-capture page for the organization. */ - 200: CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson; + 200: CreateOrganizationPaymentMethodCheckoutResponse; }; export type CreateOrganizationPaymentMethodCheckoutResult = CreateOrganizationPaymentMethodCheckoutResponses[keyof CreateOrganizationPaymentMethodCheckoutResponses]; @@ -20226,52 +6059,52 @@ export type ListInvoicesErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListInvoicesResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListInvoicesResponse403ApplicationProblemPlusJson; + 403: ListInvoicesForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: ListInvoicesResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListInvoicesResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListInvoicesResponse500ApplicationProblemPlusJson; + 500: ListInvoicesInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListInvoicesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListInvoicesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListInvoicesResponse504ApplicationProblemPlusJson; + 504: ListInvoicesGatewayTimeoutProblem; }; export type ListInvoicesError = ListInvoicesErrors[keyof ListInvoicesErrors]; export type ListInvoicesResponses = { /** - * The organization's invoices, newest first. + * A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order. */ - 200: ListInvoicesResponse200ApplicationJson; + 200: ListInvoicesResponse; }; export type ListInvoicesResult = ListInvoicesResponses[keyof ListInvoicesResponses]; @@ -20289,43 +6122,43 @@ export type GetOrganizationPaymentMethodErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson; + 403: GetOrganizationPaymentMethodForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson; + 500: GetOrganizationPaymentMethodInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson; + 504: GetOrganizationPaymentMethodGatewayTimeoutProblem; }; export type GetOrganizationPaymentMethodError = GetOrganizationPaymentMethodErrors[keyof GetOrganizationPaymentMethodErrors]; @@ -20334,13 +6167,13 @@ export type GetOrganizationPaymentMethodResponses = { /** * Whether the organization has a captured card and its metadata. */ - 200: GetOrganizationPaymentMethodResponse200ApplicationJson; + 200: GetOrganizationPaymentMethodResponse; }; export type GetOrganizationPaymentMethodResult = GetOrganizationPaymentMethodResponses[keyof GetOrganizationPaymentMethodResponses]; export type CancelSubscriptionData = { - body: CancelSubscriptionRequestApplicationJson; + body: CancelSubscriptionRequest; headers?: { /** * Identifies one logical mutation across retries. @@ -20362,60 +6195,60 @@ export type CancelSubscriptionErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CancelSubscriptionResponse400ApplicationProblemPlusJson; + 400: CancelSubscriptionBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CancelSubscriptionResponse403ApplicationProblemPlusJson; + 403: CancelSubscriptionForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress */ - 409: CancelSubscriptionResponse409ApplicationProblemPlusJson; + 409: CancelSubscriptionConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CancelSubscriptionResponse422ApplicationProblemPlusJson; + 422: CancelSubscriptionUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CancelSubscriptionResponse500ApplicationProblemPlusJson; + 500: CancelSubscriptionInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CancelSubscriptionResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CancelSubscriptionResponse503ApplicationProblemPlusJson; + 503: CancelSubscriptionServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CancelSubscriptionResponse504ApplicationProblemPlusJson; + 504: CancelSubscriptionGatewayTimeoutProblem; }; export type CancelSubscriptionError = CancelSubscriptionErrors[keyof CancelSubscriptionErrors]; export type CancelSubscriptionResponses = { /** - * The category remains active through cancelsAt, then stops renewing. + * The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription. */ - 200: CancelSubscriptionResponse200ApplicationJson; + 200: CancelSubscriptionResponse; }; export type CancelSubscriptionResult = CancelSubscriptionResponses[keyof CancelSubscriptionResponses]; export type ChangePlanData = { - body: ChangePlanRequestApplicationJson; + body: ChangePlanRequest; headers: { /** * Identifies one logical mutation across retries. @@ -20437,49 +6270,49 @@ export type ChangePlanErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ChangePlanResponse400ApplicationProblemPlusJson; + 400: ChangePlanBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ChangePlanResponse403ApplicationProblemPlusJson; + 403: ChangePlanForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress */ - 409: ChangePlanResponse409ApplicationProblemPlusJson; + 409: ChangePlanConflictProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: ChangePlanResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ChangePlanResponse422ApplicationProblemPlusJson; + 422: ChangePlanUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ChangePlanResponse500ApplicationProblemPlusJson; + 500: ChangePlanInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ChangePlanResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ChangePlanResponse503ApplicationProblemPlusJson; + 503: ChangePlanServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ChangePlanResponse504ApplicationProblemPlusJson; + 504: ChangePlanGatewayTimeoutProblem; }; export type ChangePlanError = ChangePlanErrors[keyof ChangePlanErrors]; @@ -20488,17 +6321,17 @@ export type ChangePlanResponses = { /** * The idempotency key resolved to an operation that is already terminal. */ - 200: ChangePlanResponse200ApplicationJson; + 200: TerminalBillingOperation; /** * Plan change accepted. Poll the returned operation until it succeeds or fails. */ - 202: ChangePlanResponse202ApplicationJson; + 202: PendingBillingOperation; }; export type ChangePlanResult = ChangePlanResponses[keyof ChangePlanResponses]; export type ResumeSubscriptionData = { - body: ResumeSubscriptionRequestApplicationJson; + body: ResumeSubscriptionRequest; headers?: { /** * Identifies one logical mutation across retries. @@ -20520,45 +6353,45 @@ export type ResumeSubscriptionErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ResumeSubscriptionResponse400ApplicationProblemPlusJson; + 400: ResumeSubscriptionBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ResumeSubscriptionResponse403ApplicationProblemPlusJson; + 403: ResumeSubscriptionForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition; IDEMPOTENCY_REQUEST_IN_PROGRESS: Idempotency Request In Progress */ - 409: ResumeSubscriptionResponse409ApplicationProblemPlusJson; + 409: ResumeSubscriptionConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ResumeSubscriptionResponse422ApplicationProblemPlusJson; + 422: ResumeSubscriptionUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ResumeSubscriptionResponse500ApplicationProblemPlusJson; + 500: ResumeSubscriptionInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ResumeSubscriptionResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; IDEMPOTENCY_UNAVAILABLE: Idempotency Unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ResumeSubscriptionResponse503ApplicationProblemPlusJson; + 503: ResumeSubscriptionServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ResumeSubscriptionResponse504ApplicationProblemPlusJson; + 504: ResumeSubscriptionGatewayTimeoutProblem; }; export type ResumeSubscriptionError = ResumeSubscriptionErrors[keyof ResumeSubscriptionErrors]; @@ -20567,7 +6400,7 @@ export type ResumeSubscriptionResponses = { /** * Removes a scheduled cancellation so the category renews normally. */ - 200: ResumeSubscriptionResponse200ApplicationJson; + 200: ResumeSubscriptionResponse; }; export type ResumeSubscriptionResult = ResumeSubscriptionResponses[keyof ResumeSubscriptionResponses]; @@ -20591,52 +6424,52 @@ export type CreateOrganizationSetupIntentErrors = { /** * INVALID_ARGUMENT: Invalid Argument; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson; + 400: CreateOrganizationSetupIntentBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson; + 403: CreateOrganizationSetupIntentForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson; + 422: CreateOrganizationSetupIntentUnprocessableEntityProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson; + 500: CreateOrganizationSetupIntentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson; + 504: CreateOrganizationSetupIntentGatewayTimeoutProblem; }; export type CreateOrganizationSetupIntentError = CreateOrganizationSetupIntentErrors[keyof CreateOrganizationSetupIntentErrors]; export type CreateOrganizationSetupIntentResponses = { /** - * Stripe Elements configuration for capturing the organization's card. + * Payment-provider client configuration (client secret and publishable key) for capturing the organization's card. */ - 200: CreateOrganizationSetupIntentResponse200ApplicationJson; + 200: CreateOrganizationSetupIntentResponse; }; export type CreateOrganizationSetupIntentResult = CreateOrganizationSetupIntentResponses[keyof CreateOrganizationSetupIntentResponses]; @@ -20660,37 +6493,37 @@ export type ListProjectsErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListProjectsResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListProjectsResponse403ApplicationProblemPlusJson; + 403: ListProjectsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListProjectsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListProjectsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListProjectsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ListProjectsResponse504ApplicationProblemPlusJson; + 504: ListProjectsGatewayTimeoutProblem; }; export type ListProjectsError = ListProjectsErrors[keyof ListProjectsErrors]; @@ -20699,13 +6532,13 @@ export type ListProjectsResponses = { /** * One page of active projects in the organization. */ - 200: ListProjectsResponse200ApplicationJson; + 200: ProjectPage; }; export type ListProjectsResult = ListProjectsResponses[keyof ListProjectsResponses]; export type CreateProjectData = { - body: CreateProjectRequestApplicationJson; + body: CreateProjectRequest; headers: { /** * Identifies one logical mutation across retries. @@ -20723,45 +6556,45 @@ export type CreateProjectErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: CreateProjectResponse400ApplicationProblemPlusJson; + 400: CreateProjectBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateProjectResponse403ApplicationProblemPlusJson; + 403: CreateProjectForbiddenProblem; /** * SLUG_TAKEN: Slug Already Taken */ - 409: CreateProjectResponse409ApplicationProblemPlusJson; + 409: SlugTakenProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CreateProjectResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateProjectResponse422ApplicationProblemPlusJson; + 422: CreateProjectUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateProjectResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateProjectResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateProjectResponse504ApplicationProblemPlusJson; + 504: CreateProjectGatewayTimeoutProblem; }; export type CreateProjectError = CreateProjectErrors[keyof CreateProjectErrors]; @@ -20770,7 +6603,7 @@ export type CreateProjectResponses = { /** * The created project. */ - 201: CreateProjectResponse201ApplicationJson; + 201: Project; }; export type CreateProjectResult = CreateProjectResponses[keyof CreateProjectResponses]; @@ -20790,41 +6623,41 @@ export type GetProjectClosureStatusErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetProjectClosureStatusResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetProjectClosureStatusResponse403ApplicationProblemPlusJson; + 403: GetProjectClosureStatusForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: GetProjectClosureStatusResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetProjectClosureStatusResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetProjectClosureStatusResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetProjectClosureStatusResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetProjectClosureStatusResponse504ApplicationProblemPlusJson; + 504: GetProjectClosureStatusGatewayTimeoutProblem; }; export type GetProjectClosureStatusError = GetProjectClosureStatusErrors[keyof GetProjectClosureStatusErrors]; @@ -20833,7 +6666,7 @@ export type GetProjectClosureStatusResponses = { /** * Current cleanup and settlement evidence. Project deletion alone does not establish readiness. */ - 200: GetProjectClosureStatusResponse200ApplicationJson; + 200: GetProjectClosureStatusResponse; }; export type GetProjectClosureStatusResult = GetProjectClosureStatusResponses[keyof GetProjectClosureStatusResponses]; @@ -20855,37 +6688,37 @@ export type CountProjectsErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: CountProjectsResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CountProjectsResponse403ApplicationProblemPlusJson; + 403: CountProjectsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CountProjectsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CountProjectsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CountProjectsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CountProjectsResponse504ApplicationProblemPlusJson; + 504: CountProjectsGatewayTimeoutProblem; }; export type CountProjectsError = CountProjectsErrors[keyof CountProjectsErrors]; @@ -20894,7 +6727,7 @@ export type CountProjectsResponses = { /** * The number of matching projects. */ - 200: CountProjectsResponse200ApplicationJson; + 200: ProjectCount; }; export type CountProjectsResult = CountProjectsResponses[keyof CountProjectsResponses]; @@ -20914,37 +6747,37 @@ export type CheckProjectSlugAvailabilityErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson; + 403: CheckProjectSlugAvailabilityForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson; + 504: CheckProjectSlugAvailabilityGatewayTimeoutProblem; }; export type CheckProjectSlugAvailabilityError = CheckProjectSlugAvailabilityErrors[keyof CheckProjectSlugAvailabilityErrors]; @@ -20953,7 +6786,7 @@ export type CheckProjectSlugAvailabilityResponses = { /** * Whether the slug can be allocated, and why not. */ - 200: CheckProjectSlugAvailabilityResponse200ApplicationJson; + 200: CheckProjectSlugAvailabilityResponse; }; export type CheckProjectSlugAvailabilityResult = CheckProjectSlugAvailabilityResponses[keyof CheckProjectSlugAvailabilityResponses]; @@ -20975,12 +6808,15 @@ export type ListAttachmentsData = { /** * Direction along orderBy; desc, the default, is newest first */ - order?: 'asc' | 'desc' | (string & {}); + order?: SortOrder; /** * Sort timestamp; defaults to the filtered timestamp, otherwise created_at. Must match the time bounds. */ - orderBy?: 'created_at' | 'updated_at' | (string & {}); - pageSize?: string; + orderBy?: TimestampOrderBy; + /** + * Items per page. A value above 100 returns at most 100 items. + */ + pageSize?: number; /** * Token from nextPageToken. Keep the same Project and query. */ @@ -21001,35 +6837,35 @@ export type ListAttachmentsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListAttachmentsResponse403ApplicationProblemPlusJson; + 403: ListAttachmentsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListAttachmentsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListAttachmentsResponse500ApplicationProblemPlusJson; + 500: ListAttachmentsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListAttachmentsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListAttachmentsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ListAttachmentsResponse504ApplicationProblemPlusJson; + 504: ListAttachmentsGatewayTimeoutProblem; }; export type ListAttachmentsError = ListAttachmentsErrors[keyof ListAttachmentsErrors]; @@ -21038,7 +6874,7 @@ export type ListAttachmentsResponses = { /** * A page of Project Attachments in the requested order. */ - 200: ListAttachmentsResponse200ApplicationJson; + 200: AttachmentPage; }; export type ListAttachmentsResult = ListAttachmentsResponses[keyof ListAttachmentsResponses]; @@ -21047,7 +6883,7 @@ export type UploadAttachmentData = { /** * Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length. */ - body: UploadAttachmentRequestMultipartRelated; + body: Blob | File; headers: { 'content-length': string; 'content-type': string; @@ -21067,47 +6903,47 @@ export type UploadAttachmentErrors = { /** * HTTP_ERROR: Request Failed; INVALID_ATTACHMENT_REQUEST: Invalid Attachment Request */ - 400: UploadAttachmentResponse400ApplicationProblemPlusJson; + 400: UploadAttachmentBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UploadAttachmentResponse403ApplicationProblemPlusJson; + 403: UploadAttachmentForbiddenProblem; /** * ATTACHMENT_CONFLICT: Attachment Conflict; ATTACHMENT_UPLOAD_NOT_READY: Attachment Upload Not Ready */ - 409: UploadAttachmentResponse409ApplicationProblemPlusJson; + 409: UploadAttachmentConflictProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: UploadAttachmentResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UploadAttachmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UploadAttachmentResponse500ApplicationProblemPlusJson; + 500: UploadAttachmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UploadAttachmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UploadAttachmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: UploadAttachmentResponse504ApplicationProblemPlusJson; + 504: UploadAttachmentGatewayTimeoutProblem; }; export type UploadAttachmentError = UploadAttachmentErrors[keyof UploadAttachmentErrors]; @@ -21116,11 +6952,11 @@ export type UploadAttachmentResponses = { /** * The attachment upload had already been committed. */ - 200: UploadAttachmentResponse200ApplicationJson; + 200: Attachment; /** * The attachment was uploaded and committed. */ - 201: UploadAttachmentResponse201ApplicationJson; + 201: Attachment; }; export type UploadAttachmentResult = UploadAttachmentResponses[keyof UploadAttachmentResponses]; @@ -21139,39 +6975,39 @@ export type GetAttachmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetAttachmentResponse403ApplicationProblemPlusJson; + 403: GetAttachmentForbiddenProblem; /** * ATTACHMENT_NOT_FOUND: Attachment Not Found */ - 404: GetAttachmentResponse404ApplicationProblemPlusJson; + 404: AttachmentNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetAttachmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetAttachmentResponse500ApplicationProblemPlusJson; + 500: GetAttachmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetAttachmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetAttachmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetAttachmentResponse504ApplicationProblemPlusJson; + 504: GetAttachmentGatewayTimeoutProblem; }; export type GetAttachmentError = GetAttachmentErrors[keyof GetAttachmentErrors]; @@ -21180,7 +7016,7 @@ export type GetAttachmentResponses = { /** * The Attachment resource. */ - 200: GetAttachmentResponse200ApplicationJson; + 200: Attachment; }; export type GetAttachmentResult = GetAttachmentResponses[keyof GetAttachmentResponses]; @@ -21199,43 +7035,43 @@ export type DownloadAttachmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DownloadAttachmentResponse403ApplicationProblemPlusJson; + 403: DownloadAttachmentForbiddenProblem; /** * ATTACHMENT_NOT_FOUND: Attachment Not Found */ - 404: DownloadAttachmentResponse404ApplicationProblemPlusJson; + 404: AttachmentNotFoundProblem; /** * ATTACHMENT_NOT_READY: Attachment Not Ready */ - 409: DownloadAttachmentResponse409ApplicationProblemPlusJson; + 409: AttachmentNotReadyProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: DownloadAttachmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DownloadAttachmentResponse500ApplicationProblemPlusJson; + 500: DownloadAttachmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DownloadAttachmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DownloadAttachmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: DownloadAttachmentResponse504ApplicationProblemPlusJson; + 504: DownloadAttachmentGatewayTimeoutProblem; }; export type DownloadAttachmentError = DownloadAttachmentErrors[keyof DownloadAttachmentErrors]; @@ -21244,7 +7080,7 @@ export type DownloadAttachmentResponses = { /** * The Attachment's raw file bytes. Content-Type identifies the media type of the response. */ - 200: DownloadAttachmentResponse200ApplicationOctetStream; + 200: DownloadAttachmentResponse; }; export type DownloadAttachmentResult = DownloadAttachmentResponses[keyof DownloadAttachmentResponses]; @@ -21262,31 +7098,31 @@ export type ListProjectPlatformsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListProjectPlatformsResponse403ApplicationProblemPlusJson; + 403: ListProjectPlatformsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListProjectPlatformsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListProjectPlatformsResponse500ApplicationProblemPlusJson; + 500: ListProjectPlatformsInternalServerErrorProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: ListProjectPlatformsResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type ListProjectPlatformsError = ListProjectPlatformsErrors[keyof ListProjectPlatformsErrors]; @@ -21295,13 +7131,13 @@ export type ListProjectPlatformsResponses = { /** * Every platform type available to the project. */ - 200: ListProjectPlatformsResponse200ApplicationJson; + 200: ListProjectPlatformsResponse; }; export type ListProjectPlatformsResult = ListProjectPlatformsResponses[keyof ListProjectPlatformsResponses]; export type ConnectEmailDomainData = { - body: ConnectEmailDomainRequestApplicationJson; + body: ConnectEmailDomainRequest; headers: { /** * Identifies one logical mutation across retries. @@ -21319,53 +7155,53 @@ export type ConnectEmailDomainErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ConnectEmailDomainResponse400ApplicationProblemPlusJson; + 400: ConnectEmailDomainBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: ConnectEmailDomainResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ConnectEmailDomainResponse403ApplicationProblemPlusJson; + 403: ConnectEmailDomainForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing; EMAIL_DOMAIN_ALREADY_CONNECTED: Email Domain Already Connected; EMAIL_DOMAIN_CAP_EXCEEDED: Email Domain Cap Exceeded */ - 409: ConnectEmailDomainResponse409ApplicationProblemPlusJson; + 409: ConnectEmailDomainConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ConnectEmailDomainResponse422ApplicationProblemPlusJson; + 422: ConnectEmailDomainUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ConnectEmailDomainResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ConnectEmailDomainResponse500ApplicationProblemPlusJson; + 500: ConnectEmailDomainInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ConnectEmailDomainResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ConnectEmailDomainResponse503ApplicationProblemPlusJson; + 503: ConnectEmailDomainServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ConnectEmailDomainResponse504ApplicationProblemPlusJson; + 504: ConnectEmailDomainGatewayTimeoutProblem; }; export type ConnectEmailDomainError = ConnectEmailDomainErrors[keyof ConnectEmailDomainErrors]; @@ -21374,7 +7210,7 @@ export type ConnectEmailDomainResponses = { /** * The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal. */ - 202: ConnectEmailDomainResponse202ApplicationJson; + 202: Operation; }; export type ConnectEmailDomainResult = ConnectEmailDomainResponses[keyof ConnectEmailDomainResponses]; @@ -21392,37 +7228,37 @@ export type GetProjectImessagePlatformErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetProjectImessagePlatformResponse403ApplicationProblemPlusJson; + 403: GetProjectImessagePlatformForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetProjectImessagePlatformResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetProjectImessagePlatformResponse500ApplicationProblemPlusJson; + 500: GetProjectImessagePlatformInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetProjectImessagePlatformResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetProjectImessagePlatformResponse503ApplicationProblemPlusJson; + 503: GetProjectImessagePlatformServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetProjectImessagePlatformResponse504ApplicationProblemPlusJson; + 504: GetProjectImessagePlatformGatewayTimeoutProblem; }; export type GetProjectImessagePlatformError = GetProjectImessagePlatformErrors[keyof GetProjectImessagePlatformErrors]; @@ -21431,7 +7267,7 @@ export type GetProjectImessagePlatformResponses = { /** * The project's iMessage line mode. */ - 200: GetProjectImessagePlatformResponse200ApplicationJson; + 200: ProjectPlatformSettings; }; export type GetProjectImessagePlatformResult = GetProjectImessagePlatformResponses[keyof GetProjectImessagePlatformResponses]; @@ -21453,39 +7289,39 @@ export type ListSharedLineAssignmentsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListSharedLineAssignmentsResponse403ApplicationProblemPlusJson; + 403: ListSharedLineAssignmentsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListSharedLineAssignmentsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListSharedLineAssignmentsResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListSharedLineAssignmentsResponse500ApplicationProblemPlusJson; + 500: ListSharedLineAssignmentsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListSharedLineAssignmentsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListSharedLineAssignmentsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListSharedLineAssignmentsResponse504ApplicationProblemPlusJson; + 504: ListSharedLineAssignmentsGatewayTimeoutProblem; }; export type ListSharedLineAssignmentsError = ListSharedLineAssignmentsErrors[keyof ListSharedLineAssignmentsErrors]; @@ -21494,13 +7330,13 @@ export type ListSharedLineAssignmentsResponses = { /** * A page of shared line assignments. */ - 200: ListSharedLineAssignmentsResponse200ApplicationJson; + 200: SharedLineAssignmentPage; }; export type ListSharedLineAssignmentsResult = ListSharedLineAssignmentsResponses[keyof ListSharedLineAssignmentsResponses]; export type CreateSharedLineAssignmentData = { - body: CreateSharedLineAssignmentRequestApplicationJson; + body: CreateSharedLineAssignmentRequest; headers: { /** * Identifies one logical mutation across retries. @@ -21518,49 +7354,49 @@ export type CreateSharedLineAssignmentErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CreateSharedLineAssignmentResponse400ApplicationProblemPlusJson; + 400: CreateSharedLineAssignmentBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: CreateSharedLineAssignmentForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing; IMESSAGE_MODE_DEDICATED: iMessage Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists */ - 409: CreateSharedLineAssignmentResponse409ApplicationProblemPlusJson; + 409: CreateSharedLineAssignmentConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: CreateSharedLineAssignmentUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CreateSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: CreateSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: CreateSharedLineAssignmentServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: CreateSharedLineAssignmentGatewayTimeoutProblem; }; export type CreateSharedLineAssignmentError = CreateSharedLineAssignmentErrors[keyof CreateSharedLineAssignmentErrors]; @@ -21569,7 +7405,7 @@ export type CreateSharedLineAssignmentResponses = { /** * The created shared line assignment. */ - 201: CreateSharedLineAssignmentResponse201ApplicationJson; + 201: SharedLineAssignment; }; export type CreateSharedLineAssignmentResult = CreateSharedLineAssignmentResponses[keyof CreateSharedLineAssignmentResponses]; @@ -21588,43 +7424,43 @@ export type ReleaseSharedLineAssignmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: ReleaseSharedLineAssignmentForbiddenProblem; /** * ASSIGNMENT_NOT_FOUND: Assignment Not Found */ - 404: ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson; + 404: AssignmentNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: ReleaseSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: ReleaseSharedLineAssignmentGatewayTimeoutProblem; }; export type ReleaseSharedLineAssignmentError = ReleaseSharedLineAssignmentErrors[keyof ReleaseSharedLineAssignmentErrors]; @@ -21633,7 +7469,7 @@ export type ReleaseSharedLineAssignmentResponses = { /** * The released shared line assignment. */ - 200: ReleaseSharedLineAssignmentResponse200ApplicationJson; + 200: SharedLineAssignment; }; export type ReleaseSharedLineAssignmentResult = ReleaseSharedLineAssignmentResponses[keyof ReleaseSharedLineAssignmentResponses]; @@ -21652,43 +7488,43 @@ export type GetSharedLineAssignmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: GetSharedLineAssignmentForbiddenProblem; /** * ASSIGNMENT_NOT_FOUND: Assignment Not Found */ - 404: GetSharedLineAssignmentResponse404ApplicationProblemPlusJson; + 404: AssignmentNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: GetSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: GetSharedLineAssignmentGatewayTimeoutProblem; }; export type GetSharedLineAssignmentError = GetSharedLineAssignmentErrors[keyof GetSharedLineAssignmentErrors]; @@ -21697,7 +7533,7 @@ export type GetSharedLineAssignmentResponses = { /** * The shared line assignment. */ - 200: GetSharedLineAssignmentResponse200ApplicationJson; + 200: SharedLineAssignment; }; export type GetSharedLineAssignmentResult = GetSharedLineAssignmentResponses[keyof GetSharedLineAssignmentResponses]; @@ -21721,53 +7557,53 @@ export type ProvisionImessageDedicatedLineErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson; + 400: ProvisionImessageDedicatedLineBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson; + 403: ProvisionImessageDedicatedLineForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing */ - 409: ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson; + 409: ProjectClosingProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson; + 422: ProvisionImessageDedicatedLineUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson; + 500: ProvisionImessageDedicatedLineInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson; + 503: ProvisionImessageDedicatedLineServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson; + 504: ProvisionImessageDedicatedLineGatewayTimeoutProblem; }; export type ProvisionImessageDedicatedLineError = ProvisionImessageDedicatedLineErrors[keyof ProvisionImessageDedicatedLineErrors]; @@ -21776,7 +7612,7 @@ export type ProvisionImessageDedicatedLineResponses = { /** * The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed. */ - 202: ProvisionImessageDedicatedLineResponse202ApplicationJson; + 202: Operation; }; export type ProvisionImessageDedicatedLineResult = ProvisionImessageDedicatedLineResponses[keyof ProvisionImessageDedicatedLineResponses]; @@ -21795,43 +7631,43 @@ export type ReleaseImessageDedicatedLineErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson; + 403: ReleaseImessageDedicatedLineForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson; + 500: ReleaseImessageDedicatedLineInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson; + 504: ReleaseImessageDedicatedLineGatewayTimeoutProblem; }; export type ReleaseImessageDedicatedLineError = ReleaseImessageDedicatedLineErrors[keyof ReleaseImessageDedicatedLineErrors]; @@ -21840,11 +7676,11 @@ export type ReleaseImessageDedicatedLineResponses = { /** * The iMessage product and its charge period were removed. */ - 200: ReleaseImessageDedicatedLineResponse200ApplicationJson; + 200: Operation; /** * The removal is still running. GET the Location after the Retry-After interval. */ - 202: ReleaseImessageDedicatedLineResponse202ApplicationJson; + 202: Operation; }; export type ReleaseImessageDedicatedLineResult = ReleaseImessageDedicatedLineResponses[keyof ReleaseImessageDedicatedLineResponses]; @@ -21859,7 +7695,7 @@ export type ListOperationsData = { pageToken?: string; resourceId?: string; state?: string; - type?: 'resource.provision' | 'resource.release' | 'whatsapp.account.disconnect' | 'sms.campaign.assign' | 'sms.campaign.unassign' | (string & {}); + type?: OperationType; }; url: '/v1/projects/{id}/platforms/operations'; }; @@ -21868,39 +7704,39 @@ export type ListOperationsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListOperationsResponse403ApplicationProblemPlusJson; + 403: ListOperationsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListOperationsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListOperationsResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListOperationsResponse500ApplicationProblemPlusJson; + 500: ListOperationsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListOperationsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListOperationsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListOperationsResponse504ApplicationProblemPlusJson; + 504: ListOperationsGatewayTimeoutProblem; }; export type ListOperationsError = ListOperationsErrors[keyof ListOperationsErrors]; @@ -21909,7 +7745,7 @@ export type ListOperationsResponses = { /** * A page of the project's operations. */ - 200: ListOperationsResponse200ApplicationJson; + 200: OperationPage; }; export type ListOperationsResult = ListOperationsResponses[keyof ListOperationsResponses]; @@ -21928,52 +7764,52 @@ export type GetOperationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetOperationResponse403ApplicationProblemPlusJson; + 403: GetOperationForbiddenProblem; /** * OPERATION_NOT_FOUND: Operation Not Found */ - 404: GetOperationResponse404ApplicationProblemPlusJson; + 404: OperationNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetOperationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetOperationResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetOperationResponse500ApplicationProblemPlusJson; + 500: GetOperationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetOperationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetOperationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetOperationResponse504ApplicationProblemPlusJson; + 504: GetOperationGatewayTimeoutProblem; }; export type GetOperationError = GetOperationErrors[keyof GetOperationErrors]; export type GetOperationResponses = { /** - * The operation, and the resource it produced once one exists. + * The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal. */ - 200: GetOperationResponse200ApplicationJson; + 200: GetOperationResponse; }; export type GetOperationResult = GetOperationResponses[keyof GetOperationResponses]; @@ -21992,47 +7828,47 @@ export type CancelOperationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CancelOperationResponse403ApplicationProblemPlusJson; + 403: CancelOperationForbiddenProblem; /** * OPERATION_NOT_FOUND: Operation Not Found */ - 404: CancelOperationResponse404ApplicationProblemPlusJson; + 404: OperationNotFoundProblem; /** * OPERATION_NOT_CANCELLABLE: Operation Not Cancellable */ - 409: CancelOperationResponse409ApplicationProblemPlusJson; + 409: OperationNotCancellableProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CancelOperationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CancelOperationResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CancelOperationResponse500ApplicationProblemPlusJson; + 500: CancelOperationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CancelOperationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CancelOperationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CancelOperationResponse504ApplicationProblemPlusJson; + 504: CancelOperationGatewayTimeoutProblem; }; export type CancelOperationError = CancelOperationErrors[keyof CancelOperationErrors]; @@ -22041,7 +7877,7 @@ export type CancelOperationResponses = { /** * The cancelled operation. */ - 200: CancelOperationResponse200ApplicationJson; + 200: Operation; }; export type CancelOperationResult = CancelOperationResponses[keyof CancelOperationResponses]; @@ -22065,39 +7901,39 @@ export type ListResourcesErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListResourcesResponse403ApplicationProblemPlusJson; + 403: ListResourcesForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListResourcesResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListResourcesResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListResourcesResponse500ApplicationProblemPlusJson; + 500: ListResourcesInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListResourcesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListResourcesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListResourcesResponse504ApplicationProblemPlusJson; + 504: ListResourcesGatewayTimeoutProblem; }; export type ListResourcesError = ListResourcesErrors[keyof ListResourcesErrors]; @@ -22106,7 +7942,7 @@ export type ListResourcesResponses = { /** * A page of the project's resources. */ - 200: ListResourcesResponse200ApplicationJson; + 200: ResourcePage; }; export type ListResourcesResult = ListResourcesResponses[keyof ListResourcesResponses]; @@ -22125,47 +7961,47 @@ export type ReleaseResourceErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReleaseResourceResponse403ApplicationProblemPlusJson; + 403: ReleaseResourceForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: ReleaseResourceResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning */ - 409: ReleaseResourceResponse409ApplicationProblemPlusJson; + 409: ReleaseResourceConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReleaseResourceResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReleaseResourceResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReleaseResourceResponse500ApplicationProblemPlusJson; + 500: ReleaseResourceInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReleaseResourceResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReleaseResourceResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReleaseResourceResponse504ApplicationProblemPlusJson; + 504: ReleaseResourceGatewayTimeoutProblem; }; export type ReleaseResourceError = ReleaseResourceErrors[keyof ReleaseResourceErrors]; @@ -22174,11 +8010,11 @@ export type ReleaseResourceResponses = { /** * The release finished inside this request. The resource is gone. */ - 200: ReleaseResourceResponse200ApplicationJson; + 200: Operation; /** * The release is still running at the provider. GET the Location after the Retry-After interval; a terminal answer may arrive on any read. */ - 202: ReleaseResourceResponse202ApplicationJson; + 202: Operation; }; export type ReleaseResourceResult = ReleaseResourceResponses[keyof ReleaseResourceResponses]; @@ -22197,43 +8033,43 @@ export type GetResourceErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetResourceResponse403ApplicationProblemPlusJson; + 403: GetResourceForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: GetResourceResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetResourceResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetResourceResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetResourceResponse500ApplicationProblemPlusJson; + 500: GetResourceInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetResourceResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetResourceResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetResourceResponse504ApplicationProblemPlusJson; + 504: GetResourceGatewayTimeoutProblem; }; export type GetResourceError = GetResourceErrors[keyof GetResourceErrors]; @@ -22242,7 +8078,7 @@ export type GetResourceResponses = { /** * The resource. */ - 200: GetResourceResponse200ApplicationJson; + 200: Resource; }; export type GetResourceResult = GetResourceResponses[keyof GetResourceResponses]; @@ -22269,66 +8105,66 @@ export type UnassignSmsLineCampaignErrors = { /** * SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: UnassignSmsLineCampaignResponse400ApplicationProblemPlusJson; + 400: UnassignSmsLineCampaignBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UnassignSmsLineCampaignResponse403ApplicationProblemPlusJson; + 403: UnassignSmsLineCampaignForbiddenProblem; /** * SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found */ - 404: UnassignSmsLineCampaignResponse404ApplicationProblemPlusJson; + 404: UnassignSmsLineCampaignNotFoundProblem; /** - * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required + * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress */ - 409: UnassignSmsLineCampaignResponse409ApplicationProblemPlusJson; + 409: UnassignSmsLineCampaignConflictProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: UnassignSmsLineCampaignResponse422ApplicationProblemPlusJson; + 422: IdempotencyKeyReusedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UnassignSmsLineCampaignResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UnassignSmsLineCampaignResponse500ApplicationProblemPlusJson; + 500: UnassignSmsLineCampaignInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UnassignSmsLineCampaignResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UnassignSmsLineCampaignResponse503ApplicationProblemPlusJson; + 503: UnassignSmsLineCampaignServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UnassignSmsLineCampaignResponse504ApplicationProblemPlusJson; + 504: UnassignSmsLineCampaignGatewayTimeoutProblem; }; export type UnassignSmsLineCampaignError = UnassignSmsLineCampaignErrors[keyof UnassignSmsLineCampaignErrors]; export type UnassignSmsLineCampaignResponses = { /** - * The original terminal operation on an authorized replay. + * The original terminal operation on an authorized replay. No Retry-After is emitted. */ - 200: UnassignSmsLineCampaignResponse200ApplicationJson; + 200: Operation; /** * Assignment accepted. Poll the operation Location until terminal. */ - 202: UnassignSmsLineCampaignResponse202ApplicationJson; + 202: Operation; }; export type UnassignSmsLineCampaignResult = UnassignSmsLineCampaignResponses[keyof UnassignSmsLineCampaignResponses]; @@ -22347,49 +8183,49 @@ export type GetSmsLineCampaignAssignmentErrors = { /** * SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request */ - 400: GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson; + 400: SmsCampaignInvalidRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson; + 403: GetSmsLineCampaignAssignmentForbiddenProblem; /** * SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found */ - 404: GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson; + 404: GetSmsLineCampaignAssignmentNotFoundProblem; /** - * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required + * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress */ - 409: GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson; + 409: GetSmsLineCampaignAssignmentConflictProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson; + 500: GetSmsLineCampaignAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson; + 503: GetSmsLineCampaignAssignmentServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson; + 504: GetSmsLineCampaignAssignmentGatewayTimeoutProblem; }; export type GetSmsLineCampaignAssignmentError = GetSmsLineCampaignAssignmentErrors[keyof GetSmsLineCampaignAssignmentErrors]; @@ -22398,13 +8234,13 @@ export type GetSmsLineCampaignAssignmentResponses = { /** * Current assignment, including an untouched version of 1. */ - 200: GetSmsLineCampaignAssignmentResponse200ApplicationJson; + 200: GetSmsLineCampaignAssignmentResponse; }; export type GetSmsLineCampaignAssignmentResult = GetSmsLineCampaignAssignmentResponses[keyof GetSmsLineCampaignAssignmentResponses]; export type AssignSmsLineCampaignData = { - body: AssignSmsLineCampaignRequestApplicationJson; + body: AssignSmsLineCampaignRequest; headers: { /** * Identifies one logical mutation across retries. @@ -22423,72 +8259,72 @@ export type AssignSmsLineCampaignErrors = { /** * SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: AssignSmsLineCampaignResponse400ApplicationProblemPlusJson; + 400: AssignSmsLineCampaignBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch; SMS_CAMPAIGN_ORGANIZATION_MISMATCH: Campaign belongs to another organization * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: AssignSmsLineCampaignResponse403ApplicationProblemPlusJson; + 403: AssignSmsLineCampaignForbiddenProblem; /** * SMS_CAMPAIGN_NOT_FOUND: Campaign not found; SMS_LINE_NOT_FOUND: SMS line not found */ - 404: AssignSmsLineCampaignResponse404ApplicationProblemPlusJson; + 404: AssignSmsLineCampaignNotFoundProblem; /** - * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required + * PROJECT_CLOSING: Project Is Closing; SMS_LINE_UNSUPPORTED: SMS line unsupported; SMS_CAMPAIGN_NOT_READY: Campaign not ready; SMS_CAMPAIGN_VERSION_CONFLICT: Assignment version conflict; SMS_CAMPAIGN_CAPACITY_EXCEEDED: Campaign number capacity exhausted; SMS_CAMPAIGN_RECONCILIATION_REQUIRED: Campaign reconciliation required; SMS_CAMPAIGN_MUTATION_IN_PROGRESS: Assignment mutation in progress */ - 409: AssignSmsLineCampaignResponse409ApplicationProblemPlusJson; + 409: AssignSmsLineCampaignConflictProblem; /** * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: AssignSmsLineCampaignResponse422ApplicationProblemPlusJson; + 422: IdempotencyKeyReusedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: AssignSmsLineCampaignResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: AssignSmsLineCampaignResponse500ApplicationProblemPlusJson; + 500: AssignSmsLineCampaignInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: AssignSmsLineCampaignResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; SMS_CAMPAIGN_CONTEXT_UNAVAILABLE: Campaign context unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: AssignSmsLineCampaignResponse503ApplicationProblemPlusJson; + 503: AssignSmsLineCampaignServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: AssignSmsLineCampaignResponse504ApplicationProblemPlusJson; + 504: AssignSmsLineCampaignGatewayTimeoutProblem; }; export type AssignSmsLineCampaignError = AssignSmsLineCampaignErrors[keyof AssignSmsLineCampaignErrors]; export type AssignSmsLineCampaignResponses = { /** - * The original terminal operation on an authorized replay. + * The original terminal operation on an authorized replay. No Retry-After is emitted. */ - 200: AssignSmsLineCampaignResponse200ApplicationJson; + 200: Operation; /** * Assignment accepted. Poll the operation Location until terminal. */ - 202: AssignSmsLineCampaignResponse202ApplicationJson; + 202: Operation; }; export type AssignSmsLineCampaignResult = AssignSmsLineCampaignResponses[keyof AssignSmsLineCampaignResponses]; export type PurchaseSmsNumberData = { - body: PurchaseSmsNumberRequestApplicationJson; + body: PurchaseSmsNumberRequest; headers: { /** * Identifies one logical mutation across retries. @@ -22506,53 +8342,53 @@ export type PurchaseSmsNumberErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: PurchaseSmsNumberResponse400ApplicationProblemPlusJson; + 400: PurchaseSmsNumberBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: PurchaseSmsNumberResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: PurchaseSmsNumberResponse403ApplicationProblemPlusJson; + 403: PurchaseSmsNumberForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing */ - 409: PurchaseSmsNumberResponse409ApplicationProblemPlusJson; + 409: ProjectClosingProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: PurchaseSmsNumberResponse422ApplicationProblemPlusJson; + 422: PurchaseSmsNumberUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: PurchaseSmsNumberResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: PurchaseSmsNumberResponse500ApplicationProblemPlusJson; + 500: PurchaseSmsNumberInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: PurchaseSmsNumberResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PurchaseSmsNumberResponse503ApplicationProblemPlusJson; + 503: PurchaseSmsNumberServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: PurchaseSmsNumberResponse504ApplicationProblemPlusJson; + 504: PurchaseSmsNumberGatewayTimeoutProblem; }; export type PurchaseSmsNumberError = PurchaseSmsNumberErrors[keyof PurchaseSmsNumberErrors]; @@ -22561,7 +8397,7 @@ export type PurchaseSmsNumberResponses = { /** * The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists. */ - 202: PurchaseSmsNumberResponse202ApplicationJson; + 202: Operation; }; export type PurchaseSmsNumberResult = PurchaseSmsNumberResponses[keyof PurchaseSmsNumberResponses]; @@ -22581,39 +8417,39 @@ export type ListNumberAreaCodesErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListNumberAreaCodesResponse403ApplicationProblemPlusJson; + 403: ListNumberAreaCodesForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListNumberAreaCodesResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListNumberAreaCodesResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListNumberAreaCodesResponse500ApplicationProblemPlusJson; + 500: ListNumberAreaCodesInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListNumberAreaCodesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListNumberAreaCodesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListNumberAreaCodesResponse504ApplicationProblemPlusJson; + 504: ListNumberAreaCodesGatewayTimeoutProblem; }; export type ListNumberAreaCodesError = ListNumberAreaCodesErrors[keyof ListNumberAreaCodesErrors]; @@ -22622,7 +8458,7 @@ export type ListNumberAreaCodesResponses = { /** * Current area-code coverage. An empty list is a successful coverage read, not an upstream failure. */ - 200: ListNumberAreaCodesResponse200ApplicationJson; + 200: ListNumberAreaCodesResponse; }; export type ListNumberAreaCodesResult = ListNumberAreaCodesResponses[keyof ListNumberAreaCodesResponses]; @@ -22640,39 +8476,39 @@ export type ListNumberCountriesErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListNumberCountriesResponse403ApplicationProblemPlusJson; + 403: ListNumberCountriesForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListNumberCountriesResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListNumberCountriesResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListNumberCountriesResponse500ApplicationProblemPlusJson; + 500: ListNumberCountriesInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListNumberCountriesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListNumberCountriesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListNumberCountriesResponse504ApplicationProblemPlusJson; + 504: ListNumberCountriesGatewayTimeoutProblem; }; export type ListNumberCountriesError = ListNumberCountriesErrors[keyof ListNumberCountriesErrors]; @@ -22681,13 +8517,13 @@ export type ListNumberCountriesResponses = { /** * Supported countries. */ - 200: ListNumberCountriesResponse200ApplicationJson; + 200: ListNumberCountriesResponse; }; export type ListNumberCountriesResult = ListNumberCountriesResponses[keyof ListNumberCountriesResponses]; export type ConnectTelegramBotData = { - body: ConnectTelegramBotRequestApplicationJson; + body: ConnectTelegramBotRequest; headers: { /** * Identifies one logical mutation across retries. @@ -22705,47 +8541,47 @@ export type ConnectTelegramBotErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ConnectTelegramBotResponse400ApplicationProblemPlusJson; + 400: ConnectTelegramBotBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ConnectTelegramBotResponse403ApplicationProblemPlusJson; + 403: ConnectTelegramBotForbiddenProblem; /** * TELEGRAM_PROJECT_DELETED: Telegram Project Deleted; PROJECT_CLOSING: Project Is Closing; TELEGRAM_PROVISION_IN_PROGRESS: Telegram Provision In Progress */ - 409: ConnectTelegramBotResponse409ApplicationProblemPlusJson; + 409: ConnectTelegramBotConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ConnectTelegramBotResponse422ApplicationProblemPlusJson; + 422: ConnectTelegramBotUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ConnectTelegramBotResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ConnectTelegramBotResponse500ApplicationProblemPlusJson; + 500: ConnectTelegramBotInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ConnectTelegramBotResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ConnectTelegramBotResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ConnectTelegramBotResponse504ApplicationProblemPlusJson; + 504: ConnectTelegramBotGatewayTimeoutProblem; }; export type ConnectTelegramBotError = ConnectTelegramBotErrors[keyof ConnectTelegramBotErrors]; @@ -22754,13 +8590,13 @@ export type ConnectTelegramBotResponses = { /** * Setup accepted. Open detail.setupUrl and poll the operation. */ - 202: ConnectTelegramBotResponse202ApplicationJson; + 202: Operation; }; export type ConnectTelegramBotResult = ConnectTelegramBotResponses[keyof ConnectTelegramBotResponses]; export type BatchUpdateVoiceLineProfileAssignmentsData = { - body: BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson; + body: BatchUpdateVoiceLineProfileAssignmentsRequest; path: { id: string; }; @@ -22772,47 +8608,47 @@ export type BatchUpdateVoiceLineProfileAssignmentsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson; + 403: BatchUpdateVoiceLineProfileAssignmentsForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson; + 404: BatchUpdateVoiceLineProfileAssignmentsNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict */ - 409: BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson; + 409: BatchUpdateVoiceLineProfileAssignmentsConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson; + 500: BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson; + 504: BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem; }; export type BatchUpdateVoiceLineProfileAssignmentsError = BatchUpdateVoiceLineProfileAssignmentsErrors[keyof BatchUpdateVoiceLineProfileAssignmentsErrors]; @@ -22821,7 +8657,7 @@ export type BatchUpdateVoiceLineProfileAssignmentsResponses = { /** * The updated line profile assignments. */ - 200: BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson; + 200: BatchUpdateVoiceLineProfileAssignmentsResponse; }; export type BatchUpdateVoiceLineProfileAssignmentsResult = BatchUpdateVoiceLineProfileAssignmentsResponses[keyof BatchUpdateVoiceLineProfileAssignmentsResponses]; @@ -22842,47 +8678,47 @@ export type UnassignVoiceLineProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UnassignVoiceLineProfileResponse403ApplicationProblemPlusJson; + 403: UnassignVoiceLineProfileForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: UnassignVoiceLineProfileResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict */ - 409: UnassignVoiceLineProfileResponse409ApplicationProblemPlusJson; + 409: VoiceProfileVersionConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UnassignVoiceLineProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UnassignVoiceLineProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UnassignVoiceLineProfileResponse500ApplicationProblemPlusJson; + 500: UnassignVoiceLineProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UnassignVoiceLineProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UnassignVoiceLineProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UnassignVoiceLineProfileResponse504ApplicationProblemPlusJson; + 504: UnassignVoiceLineProfileGatewayTimeoutProblem; }; export type UnassignVoiceLineProfileError = UnassignVoiceLineProfileErrors[keyof UnassignVoiceLineProfileErrors]; @@ -22910,43 +8746,43 @@ export type GetVoiceLineProfileAssignmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson; + 403: GetVoiceLineProfileAssignmentForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson; + 500: GetVoiceLineProfileAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson; + 504: GetVoiceLineProfileAssignmentGatewayTimeoutProblem; }; export type GetVoiceLineProfileAssignmentError = GetVoiceLineProfileAssignmentErrors[keyof GetVoiceLineProfileAssignmentErrors]; @@ -22955,13 +8791,13 @@ export type GetVoiceLineProfileAssignmentResponses = { /** * The line profile assignment. */ - 200: GetVoiceLineProfileAssignmentResponse200ApplicationJson; + 200: VoiceLineProfileAssignment; }; export type GetVoiceLineProfileAssignmentResult = GetVoiceLineProfileAssignmentResponses[keyof GetVoiceLineProfileAssignmentResponses]; export type AssignVoiceLineProfileData = { - body: AssignVoiceLineProfileRequestApplicationJson; + body: AssignVoiceLineProfileRequest; path: { id: string; resourceId: string; @@ -22974,47 +8810,47 @@ export type AssignVoiceLineProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: AssignVoiceLineProfileResponse403ApplicationProblemPlusJson; + 403: AssignVoiceLineProfileForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found; VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: AssignVoiceLineProfileResponse404ApplicationProblemPlusJson; + 404: AssignVoiceLineProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN: Voice Default Profile Assignment Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict */ - 409: AssignVoiceLineProfileResponse409ApplicationProblemPlusJson; + 409: AssignVoiceLineProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: AssignVoiceLineProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: AssignVoiceLineProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: AssignVoiceLineProfileResponse500ApplicationProblemPlusJson; + 500: AssignVoiceLineProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: AssignVoiceLineProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: AssignVoiceLineProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: AssignVoiceLineProfileResponse504ApplicationProblemPlusJson; + 504: AssignVoiceLineProfileGatewayTimeoutProblem; }; export type AssignVoiceLineProfileError = AssignVoiceLineProfileErrors[keyof AssignVoiceLineProfileErrors]; @@ -23023,7 +8859,7 @@ export type AssignVoiceLineProfileResponses = { /** * The updated Voice line profile assignment. */ - 200: AssignVoiceLineProfileResponse200ApplicationJson; + 200: VoiceLineProfileAssignment; }; export type AssignVoiceLineProfileResult = AssignVoiceLineProfileResponses[keyof AssignVoiceLineProfileResponses]; @@ -23034,7 +8870,7 @@ export type ListVoiceProfilesData = { id: string; }; query?: { - default?: 'true' | 'false' | (string & {}); + default?: ListVoiceProfilesDefaultInput; pageSize?: number; pageToken?: string; }; @@ -23045,39 +8881,39 @@ export type ListVoiceProfilesErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListVoiceProfilesResponse403ApplicationProblemPlusJson; + 403: ListVoiceProfilesForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListVoiceProfilesResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListVoiceProfilesResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListVoiceProfilesResponse500ApplicationProblemPlusJson; + 500: ListVoiceProfilesInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListVoiceProfilesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListVoiceProfilesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListVoiceProfilesResponse504ApplicationProblemPlusJson; + 504: ListVoiceProfilesGatewayTimeoutProblem; }; export type ListVoiceProfilesError = ListVoiceProfilesErrors[keyof ListVoiceProfilesErrors]; @@ -23086,13 +8922,13 @@ export type ListVoiceProfilesResponses = { /** * A page of Voice profiles. */ - 200: ListVoiceProfilesResponse200ApplicationJson; + 200: VoiceProfilePage; }; export type ListVoiceProfilesResult = ListVoiceProfilesResponses[keyof ListVoiceProfilesResponses]; export type CreateVoiceProfileData = { - body: CreateVoiceProfileRequestApplicationJson; + body: CreateVoiceProfileRequest; path: { id: string; }; @@ -23104,43 +8940,43 @@ export type CreateVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateVoiceProfileResponse403ApplicationProblemPlusJson; + 403: CreateVoiceProfileForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_REQUIRED: Voice Default Profile Required */ - 409: CreateVoiceProfileResponse409ApplicationProblemPlusJson; + 409: CreateVoiceProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CreateVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateVoiceProfileResponse500ApplicationProblemPlusJson; + 500: CreateVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateVoiceProfileResponse504ApplicationProblemPlusJson; + 504: CreateVoiceProfileGatewayTimeoutProblem; }; export type CreateVoiceProfileError = CreateVoiceProfileErrors[keyof CreateVoiceProfileErrors]; @@ -23149,7 +8985,7 @@ export type CreateVoiceProfileResponses = { /** * The created Voice profile. */ - 201: CreateVoiceProfileResponse201ApplicationJson; + 201: VoiceProfile; }; export type CreateVoiceProfileResult = CreateVoiceProfileResponses[keyof CreateVoiceProfileResponses]; @@ -23167,43 +9003,43 @@ export type GetDefaultVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetDefaultVoiceProfileResponse403ApplicationProblemPlusJson; + 403: GetDefaultVoiceProfileForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: GetDefaultVoiceProfileResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetDefaultVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetDefaultVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetDefaultVoiceProfileResponse500ApplicationProblemPlusJson; + 500: GetDefaultVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetDefaultVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetDefaultVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetDefaultVoiceProfileResponse504ApplicationProblemPlusJson; + 504: GetDefaultVoiceProfileGatewayTimeoutProblem; }; export type GetDefaultVoiceProfileError = GetDefaultVoiceProfileErrors[keyof GetDefaultVoiceProfileErrors]; @@ -23212,13 +9048,13 @@ export type GetDefaultVoiceProfileResponses = { /** * The current default Voice profile. */ - 200: GetDefaultVoiceProfileResponse200ApplicationJson; + 200: VoiceProfile; }; export type GetDefaultVoiceProfileResult = GetDefaultVoiceProfileResponses[keyof GetDefaultVoiceProfileResponses]; export type UpdateDefaultVoiceProfileData = { - body: UpdateDefaultVoiceProfileRequestApplicationJson; + body: UpdateDefaultVoiceProfileRequest; path: { id: string; }; @@ -23230,47 +9066,47 @@ export type UpdateDefaultVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson; + 403: UpdateDefaultVoiceProfileForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending */ - 409: UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson; + 409: UpdateDefaultVoiceProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson; + 500: UpdateDefaultVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson; + 504: UpdateDefaultVoiceProfileGatewayTimeoutProblem; }; export type UpdateDefaultVoiceProfileError = UpdateDefaultVoiceProfileErrors[keyof UpdateDefaultVoiceProfileErrors]; @@ -23279,13 +9115,13 @@ export type UpdateDefaultVoiceProfileResponses = { /** * The updated default Voice profile. */ - 200: UpdateDefaultVoiceProfileResponse200ApplicationJson; + 200: VoiceProfile; }; export type UpdateDefaultVoiceProfileResult = UpdateDefaultVoiceProfileResponses[keyof UpdateDefaultVoiceProfileResponses]; export type CreateDefaultVoiceProfileData = { - body: CreateDefaultVoiceProfileRequestApplicationJson; + body: CreateDefaultVoiceProfileRequest; path: { id: string; }; @@ -23297,43 +9133,43 @@ export type CreateDefaultVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson; + 403: CreateDefaultVoiceProfileForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_DEFAULT_PROFILE_EXISTS: Voice Default Profile Exists */ - 409: CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson; + 409: CreateDefaultVoiceProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson; + 500: CreateDefaultVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson; + 504: CreateDefaultVoiceProfileGatewayTimeoutProblem; }; export type CreateDefaultVoiceProfileError = CreateDefaultVoiceProfileErrors[keyof CreateDefaultVoiceProfileErrors]; @@ -23342,11 +9178,11 @@ export type CreateDefaultVoiceProfileResponses = { /** * The identically replayed default Voice profile. */ - 200: CreateDefaultVoiceProfileResponse200ApplicationJson; + 200: VoiceProfile; /** * The created default Voice profile. */ - 201: CreateDefaultVoiceProfileResponse201ApplicationJson; + 201: VoiceProfile; }; export type CreateDefaultVoiceProfileResult = CreateDefaultVoiceProfileResponses[keyof CreateDefaultVoiceProfileResponses]; @@ -23359,7 +9195,7 @@ export type DeleteVoiceProfileData = { }; query: { expectedVersion: number; - force?: 'true' | 'false' | (string & {}); + force?: DeleteVoiceProfileForceInput; }; url: '/v1/projects/{id}/platforms/voice/profiles/{profileId}'; }; @@ -23368,47 +9204,47 @@ export type DeleteVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteVoiceProfileResponse403ApplicationProblemPlusJson; + 403: DeleteVoiceProfileForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: DeleteVoiceProfileResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** - * VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict + * VOICE_PROFILE_IN_USE: Voice Profile In Use; VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN: Voice Default Profile Deletion Forbidden; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict */ - 409: DeleteVoiceProfileResponse409ApplicationProblemPlusJson; + 409: DeleteVoiceProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: DeleteVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: DeleteVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DeleteVoiceProfileResponse500ApplicationProblemPlusJson; + 500: DeleteVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: DeleteVoiceProfileResponse504ApplicationProblemPlusJson; + 504: DeleteVoiceProfileGatewayTimeoutProblem; }; export type DeleteVoiceProfileError = DeleteVoiceProfileErrors[keyof DeleteVoiceProfileErrors]; @@ -23436,43 +9272,43 @@ export type GetVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetVoiceProfileResponse403ApplicationProblemPlusJson; + 403: GetVoiceProfileForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: GetVoiceProfileResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetVoiceProfileResponse500ApplicationProblemPlusJson; + 500: GetVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetVoiceProfileResponse504ApplicationProblemPlusJson; + 504: GetVoiceProfileGatewayTimeoutProblem; }; export type GetVoiceProfileError = GetVoiceProfileErrors[keyof GetVoiceProfileErrors]; @@ -23481,13 +9317,13 @@ export type GetVoiceProfileResponses = { /** * The Voice profile. */ - 200: GetVoiceProfileResponse200ApplicationJson; + 200: VoiceProfile; }; export type GetVoiceProfileResult = GetVoiceProfileResponses[keyof GetVoiceProfileResponses]; export type UpdateVoiceProfileData = { - body: UpdateVoiceProfileRequestApplicationJson; + body: UpdateVoiceProfileRequest; path: { id: string; profileId: string; @@ -23500,47 +9336,47 @@ export type UpdateVoiceProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateVoiceProfileResponse403ApplicationProblemPlusJson; + 403: UpdateVoiceProfileForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: UpdateVoiceProfileResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_DIRECTION_CONFIGURED: Voice Profile Direction Configured; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending */ - 409: UpdateVoiceProfileResponse409ApplicationProblemPlusJson; + 409: UpdateVoiceProfileConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateVoiceProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UpdateVoiceProfileResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateVoiceProfileResponse500ApplicationProblemPlusJson; + 500: UpdateVoiceProfileInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateVoiceProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateVoiceProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UpdateVoiceProfileResponse504ApplicationProblemPlusJson; + 504: UpdateVoiceProfileGatewayTimeoutProblem; }; export type UpdateVoiceProfileError = UpdateVoiceProfileErrors[keyof UpdateVoiceProfileErrors]; @@ -23549,7 +9385,7 @@ export type UpdateVoiceProfileResponses = { /** * The updated Voice profile. */ - 200: UpdateVoiceProfileResponse200ApplicationJson; + 200: VoiceProfile; }; export type UpdateVoiceProfileResult = UpdateVoiceProfileResponses[keyof UpdateVoiceProfileResponses]; @@ -23570,47 +9406,47 @@ export type DeleteVoiceProfileInboundErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson; + 403: DeleteVoiceProfileInboundForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending */ - 409: DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson; + 409: DeleteVoiceProfileInboundConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson; + 500: DeleteVoiceProfileInboundInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson; + 504: DeleteVoiceProfileInboundGatewayTimeoutProblem; }; export type DeleteVoiceProfileInboundError = DeleteVoiceProfileInboundErrors[keyof DeleteVoiceProfileInboundErrors]; @@ -23619,13 +9455,13 @@ export type DeleteVoiceProfileInboundResponses = { /** * The removed inbound configuration and next profile version. */ - 200: DeleteVoiceProfileInboundResponse200ApplicationJson; + 200: VoiceProfileInboundConfiguration; }; export type DeleteVoiceProfileInboundResult = DeleteVoiceProfileInboundResponses[keyof DeleteVoiceProfileInboundResponses]; export type UpdateVoiceProfileInboundData = { - body: UpdateVoiceProfileInboundRequestApplicationJson; + body: UpdateVoiceProfileInboundRequest; path: { id: string; profileId: string; @@ -23638,47 +9474,47 @@ export type UpdateVoiceProfileInboundErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson; + 403: UpdateVoiceProfileInboundForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending */ - 409: UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson; + 409: UpdateVoiceProfileInboundConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson; + 500: UpdateVoiceProfileInboundInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson; + 504: UpdateVoiceProfileInboundGatewayTimeoutProblem; }; export type UpdateVoiceProfileInboundError = UpdateVoiceProfileInboundErrors[keyof UpdateVoiceProfileInboundErrors]; @@ -23687,13 +9523,13 @@ export type UpdateVoiceProfileInboundResponses = { /** * The updated inbound configuration and profile version. */ - 200: UpdateVoiceProfileInboundResponse200ApplicationJson; + 200: VoiceProfileInboundConfiguration; }; export type UpdateVoiceProfileInboundResult = UpdateVoiceProfileInboundResponses[keyof UpdateVoiceProfileInboundResponses]; export type ReplaceVoiceProfileInboundData = { - body: ReplaceVoiceProfileInboundRequestApplicationJson; + body: ReplaceVoiceProfileInboundRequest; path: { id: string; profileId: string; @@ -23706,47 +9542,47 @@ export type ReplaceVoiceProfileInboundErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson; + 403: ReplaceVoiceProfileInboundForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending */ - 409: ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson; + 409: ReplaceVoiceProfileInboundConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson; + 500: ReplaceVoiceProfileInboundInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson; + 504: ReplaceVoiceProfileInboundGatewayTimeoutProblem; }; export type ReplaceVoiceProfileInboundError = ReplaceVoiceProfileInboundErrors[keyof ReplaceVoiceProfileInboundErrors]; @@ -23755,11 +9591,11 @@ export type ReplaceVoiceProfileInboundResponses = { /** * The replaced inbound configuration and profile version. */ - 200: ReplaceVoiceProfileInboundResponse200ApplicationJson; + 200: VoiceProfileInboundConfiguration; /** * The newly created inbound configuration and profile version. */ - 201: ReplaceVoiceProfileInboundResponse201ApplicationJson; + 201: VoiceProfileInboundConfiguration; }; export type ReplaceVoiceProfileInboundResult = ReplaceVoiceProfileInboundResponses[keyof ReplaceVoiceProfileInboundResponses]; @@ -23780,47 +9616,47 @@ export type DeleteVoiceProfileOutboundErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson; + 403: DeleteVoiceProfileOutboundForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured */ - 409: DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson; + 409: DeleteVoiceProfileOutboundConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson; + 500: DeleteVoiceProfileOutboundInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson; + 504: DeleteVoiceProfileOutboundGatewayTimeoutProblem; }; export type DeleteVoiceProfileOutboundError = DeleteVoiceProfileOutboundErrors[keyof DeleteVoiceProfileOutboundErrors]; @@ -23829,13 +9665,13 @@ export type DeleteVoiceProfileOutboundResponses = { /** * Outbound calling was revoked. */ - 200: DeleteVoiceProfileOutboundResponse200ApplicationJson; + 200: DeleteVoiceProfileOutboundResponse; }; export type DeleteVoiceProfileOutboundResult = DeleteVoiceProfileOutboundResponses[keyof DeleteVoiceProfileOutboundResponses]; export type UpdateVoiceProfileOutboundAuthenticationData = { - body: UpdateVoiceProfileOutboundAuthenticationRequestApplicationJson; + body: UpdateVoiceProfileOutboundAuthenticationRequest; path: { id: string; profileId: string; @@ -23848,47 +9684,47 @@ export type UpdateVoiceProfileOutboundAuthenticationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson; + 403: UpdateVoiceProfileOutboundAuthenticationForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured */ - 409: UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson; + 409: UpdateVoiceProfileOutboundAuthenticationConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson; + 500: UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson; + 504: UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem; }; export type UpdateVoiceProfileOutboundAuthenticationError = UpdateVoiceProfileOutboundAuthenticationErrors[keyof UpdateVoiceProfileOutboundAuthenticationErrors]; @@ -23897,13 +9733,13 @@ export type UpdateVoiceProfileOutboundAuthenticationResponses = { /** * The current outbound configuration and profile version. */ - 200: UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson; + 200: UpdateVoiceProfileOutboundAuthenticationResponse; }; export type UpdateVoiceProfileOutboundAuthenticationResult = UpdateVoiceProfileOutboundAuthenticationResponses[keyof UpdateVoiceProfileOutboundAuthenticationResponses]; export type ConfigureVoiceProfileOutboundData = { - body: ConfigureVoiceProfileOutboundRequestApplicationJson; + body: ConfigureVoiceProfileOutboundRequest; headers: { /** * Identifies one logical mutation across retries. @@ -23922,51 +9758,51 @@ export type ConfigureVoiceProfileOutboundErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson; + 400: ConfigureVoiceProfileOutboundBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson; + 403: ConfigureVoiceProfileOutboundForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_CONFIGURED: Voice Outbound Already Configured */ - 409: ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson; + 409: ConfigureVoiceProfileOutboundConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson; + 422: ConfigureVoiceProfileOutboundUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson; + 500: ConfigureVoiceProfileOutboundInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson; + 504: ConfigureVoiceProfileOutboundGatewayTimeoutProblem; }; export type ConfigureVoiceProfileOutboundError = ConfigureVoiceProfileOutboundErrors[keyof ConfigureVoiceProfileOutboundErrors]; @@ -23975,17 +9811,17 @@ export type ConfigureVoiceProfileOutboundResponses = { /** * An idempotent replay with an explicit null password. */ - 200: ConfigureVoiceProfileOutboundResponse200ApplicationJson; + 200: ConfigureVoiceProfileOutboundResponse; /** * The configured outbound connection and display-once password. */ - 201: ConfigureVoiceProfileOutboundResponse201ApplicationJson; + 201: ConfigureVoiceProfileOutboundResponse; }; export type ConfigureVoiceProfileOutboundResult = ConfigureVoiceProfileOutboundResponses[keyof ConfigureVoiceProfileOutboundResponses]; export type RotateVoiceProfileOutboundCredentialData = { - body: RotateVoiceProfileOutboundCredentialRequestApplicationJson; + body: RotateVoiceProfileOutboundCredentialRequest; headers: { /** * Identifies one logical mutation across retries. @@ -24004,51 +9840,51 @@ export type RotateVoiceProfileOutboundCredentialErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson; + 400: RotateVoiceProfileOutboundCredentialBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson; + 403: RotateVoiceProfileOutboundCredentialForbiddenProblem; /** * VOICE_PROFILE_NOT_FOUND: Voice Profile Not Found */ - 404: RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson; + 404: VoiceProfileNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; VOICE_PROFILE_VERSION_CONFLICT: Voice Profile Version Conflict; VOICE_OUTBOUND_OPERATION_PENDING: Voice Outbound Operation Pending; VOICE_OUTBOUND_NOT_CONFIGURED: Voice Outbound Not Configured */ - 409: RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson; + 409: RotateVoiceProfileOutboundCredentialConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson; + 422: RotateVoiceProfileOutboundCredentialUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson; + 500: RotateVoiceProfileOutboundCredentialInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson; + 504: RotateVoiceProfileOutboundCredentialGatewayTimeoutProblem; }; export type RotateVoiceProfileOutboundCredentialError = RotateVoiceProfileOutboundCredentialErrors[keyof RotateVoiceProfileOutboundCredentialErrors]; @@ -24057,7 +9893,7 @@ export type RotateVoiceProfileOutboundCredentialResponses = { /** * The rotated password result and next profile version. */ - 200: RotateVoiceProfileOutboundCredentialResponse200ApplicationJson; + 200: RotateVoiceProfileOutboundCredentialResponse; }; export type RotateVoiceProfileOutboundCredentialResult = RotateVoiceProfileOutboundCredentialResponses[keyof RotateVoiceProfileOutboundCredentialResponses]; @@ -24075,37 +9911,37 @@ export type GetProjectWhatsappPlatformErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson; + 403: GetProjectWhatsappPlatformForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson; + 500: GetProjectWhatsappPlatformInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * BILLING_NOT_PROVISIONED: Billing Not Provisioned; UPSTREAM_UNAVAILABLE: Upstream Service Unavailable * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson; + 503: GetProjectWhatsappPlatformServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson; + 504: GetProjectWhatsappPlatformGatewayTimeoutProblem; }; export type GetProjectWhatsappPlatformError = GetProjectWhatsappPlatformErrors[keyof GetProjectWhatsappPlatformErrors]; @@ -24114,7 +9950,7 @@ export type GetProjectWhatsappPlatformResponses = { /** * The project's WhatsApp line mode. */ - 200: GetProjectWhatsappPlatformResponse200ApplicationJson; + 200: ProjectPlatformSettings; }; export type GetProjectWhatsappPlatformResult = GetProjectWhatsappPlatformResponses[keyof GetProjectWhatsappPlatformResponses]; @@ -24138,51 +9974,51 @@ export type DisconnectWhatsappBusinessAccountErrors = { /** * IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required */ - 400: DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson; + 400: DisconnectWhatsappBusinessAccountBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson; + 403: DisconnectWhatsappBusinessAccountForbiddenProblem; /** * WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected */ - 404: DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson; + 404: WhatsappWabaNotConnectedProblem; /** * WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers */ - 409: DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson; + 409: DisconnectWhatsappBusinessAccountConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson; + 422: DisconnectWhatsappBusinessAccountUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson; + 500: DisconnectWhatsappBusinessAccountInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson; + 504: DisconnectWhatsappBusinessAccountGatewayTimeoutProblem; }; export type DisconnectWhatsappBusinessAccountError = DisconnectWhatsappBusinessAccountErrors[keyof DisconnectWhatsappBusinessAccountErrors]; @@ -24191,11 +10027,11 @@ export type DisconnectWhatsappBusinessAccountResponses = { /** * The replayed disconnect operation is terminal. */ - 200: DisconnectWhatsappBusinessAccountResponse200ApplicationJson; + 200: Operation; /** * Account disconnect accepted. Poll Location after Retry-After. */ - 202: DisconnectWhatsappBusinessAccountResponse202ApplicationJson; + 202: Operation; }; export type DisconnectWhatsappBusinessAccountResult = DisconnectWhatsappBusinessAccountResponses[keyof DisconnectWhatsappBusinessAccountResponses]; @@ -24213,43 +10049,43 @@ export type GetWhatsappBusinessAccountErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson; + 403: GetWhatsappBusinessAccountForbiddenProblem; /** * WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected */ - 404: GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson; + 404: WhatsappWabaNotConnectedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson; + 500: GetWhatsappBusinessAccountInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson; + 504: GetWhatsappBusinessAccountGatewayTimeoutProblem; }; export type GetWhatsappBusinessAccountError = GetWhatsappBusinessAccountErrors[keyof GetWhatsappBusinessAccountErrors]; @@ -24258,7 +10094,7 @@ export type GetWhatsappBusinessAccountResponses = { /** * The project's connected account. */ - 200: GetWhatsappBusinessAccountResponse200ApplicationJson; + 200: WhatsappBusinessAccount; }; export type GetWhatsappBusinessAccountResult = GetWhatsappBusinessAccountResponses[keyof GetWhatsappBusinessAccountResponses]; @@ -24276,43 +10112,43 @@ export type ListWhatsappAccountPhoneNumbersErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson; + 403: ListWhatsappAccountPhoneNumbersForbiddenProblem; /** * WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected */ - 404: ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson; + 404: WhatsappWabaNotConnectedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson; + 500: ListWhatsappAccountPhoneNumbersInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson; + 504: ListWhatsappAccountPhoneNumbersGatewayTimeoutProblem; }; export type ListWhatsappAccountPhoneNumbersError = ListWhatsappAccountPhoneNumbersErrors[keyof ListWhatsappAccountPhoneNumbersErrors]; @@ -24321,13 +10157,13 @@ export type ListWhatsappAccountPhoneNumbersResponses = { /** * The current Meta number inventory for the connected WABA. */ - 200: ListWhatsappAccountPhoneNumbersResponse200ApplicationJson; + 200: ListWhatsappAccountPhoneNumbersResponse; }; export type ListWhatsappAccountPhoneNumbersResult = ListWhatsappAccountPhoneNumbersResponses[keyof ListWhatsappAccountPhoneNumbersResponses]; export type CreateWhatsappVoipSenderData = { - body: CreateWhatsappVoipSenderRequestApplicationJson; + body: CreateWhatsappVoipSenderRequest; headers: { /** * Identifies one logical mutation across retries. @@ -24345,57 +10181,57 @@ export type CreateWhatsappVoipSenderErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson; + 400: CreateWhatsappVoipSenderBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson; + 403: CreateWhatsappVoipSenderForbiddenProblem; /** * WHATSAPP_WABA_NOT_CONNECTED: WhatsApp Business Account Not Connected; WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE: WhatsApp VoIP Source Not Eligible */ - 404: CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson; + 404: CreateWhatsappVoipSenderNotFoundProblem; /** * PROJECT_CLOSING: Project Is Closing; WHATSAPP_ACCOUNT_DISCONNECTING: WhatsApp Business Account Disconnecting; WHATSAPP_ACCOUNT_PROVISIONING: WhatsApp Business Account Has Provisioning Numbers; WHATSAPP_SENDER_CONNECTED: WhatsApp Sender Connected; WHATSAPP_SENDER_PROVISIONING: WhatsApp Sender Provisioning; WHATSAPP_VOIP_SOURCE_RELEASING: WhatsApp VoIP Source Releasing */ - 409: CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson; + 409: CreateWhatsappVoipSenderConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; WHATSAPP_DISPLAY_NAME_UNAVAILABLE: WhatsApp Display Name Unavailable; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson; + 422: CreateWhatsappVoipSenderUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson; + 500: CreateWhatsappVoipSenderInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson; + 503: CreateWhatsappVoipSenderServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson; + 504: CreateWhatsappVoipSenderGatewayTimeoutProblem; }; export type CreateWhatsappVoipSenderError = CreateWhatsappVoipSenderErrors[keyof CreateWhatsappVoipSenderErrors]; @@ -24404,13 +10240,13 @@ export type CreateWhatsappVoipSenderResponses = { /** * The sender provision was accepted. Poll the Location after Retry-After until the operation is terminal. */ - 202: CreateWhatsappVoipSenderResponse202ApplicationJson; + 202: Operation; }; export type CreateWhatsappVoipSenderResult = CreateWhatsappVoipSenderResponses[keyof CreateWhatsappVoipSenderResponses]; export type ConnectWhatsappBusinessData = { - body: ConnectWhatsappBusinessRequestApplicationJson; + body: ConnectWhatsappBusinessRequest; headers: { /** * Identifies one logical mutation across retries. @@ -24428,53 +10264,53 @@ export type ConnectWhatsappBusinessErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ConnectWhatsappBusinessResponse400ApplicationProblemPlusJson; + 400: ConnectWhatsappBusinessBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: ConnectWhatsappBusinessResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ConnectWhatsappBusinessResponse403ApplicationProblemPlusJson; + 403: ConnectWhatsappBusinessForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing */ - 409: ConnectWhatsappBusinessResponse409ApplicationProblemPlusJson; + 409: ProjectClosingProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ConnectWhatsappBusinessResponse422ApplicationProblemPlusJson; + 422: ConnectWhatsappBusinessUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ConnectWhatsappBusinessResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ConnectWhatsappBusinessResponse500ApplicationProblemPlusJson; + 500: ConnectWhatsappBusinessInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ConnectWhatsappBusinessResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ConnectWhatsappBusinessResponse503ApplicationProblemPlusJson; + 503: ConnectWhatsappBusinessServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ConnectWhatsappBusinessResponse504ApplicationProblemPlusJson; + 504: ConnectWhatsappBusinessGatewayTimeoutProblem; }; export type ConnectWhatsappBusinessError = ConnectWhatsappBusinessErrors[keyof ConnectWhatsappBusinessErrors]; @@ -24483,7 +10319,7 @@ export type ConnectWhatsappBusinessResponses = { /** * The code was accepted and onboarding was dispatched. GET the Location after the Retry-After interval until the operation is terminal. */ - 202: ConnectWhatsappBusinessResponse202ApplicationJson; + 202: Operation; }; export type ConnectWhatsappBusinessResult = ConnectWhatsappBusinessResponses[keyof ConnectWhatsappBusinessResponses]; @@ -24504,43 +10340,43 @@ export type GetWhatsappBusinessVerificationCodeErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson; + 403: GetWhatsappBusinessVerificationCodeForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found; WHATSAPP_VERIFICATION_CODE_NOT_FOUND: WhatsApp Verification Code Not Found */ - 404: GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson; + 404: GetWhatsappBusinessVerificationCodeNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed; WHATSAPP_VERIFICATION_WINDOW_EXPIRED: WhatsApp Verification Window Expired */ - 422: GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson; + 422: GetWhatsappBusinessVerificationCodeUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson; + 500: GetWhatsappBusinessVerificationCodeInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson; + 504: GetWhatsappBusinessVerificationCodeGatewayTimeoutProblem; }; export type GetWhatsappBusinessVerificationCodeError = GetWhatsappBusinessVerificationCodeErrors[keyof GetWhatsappBusinessVerificationCodeErrors]; @@ -24549,7 +10385,7 @@ export type GetWhatsappBusinessVerificationCodeResponses = { /** * A verification code received strictly after receivedAfter. Treat it as an authentication secret. */ - 200: GetWhatsappBusinessVerificationCodeResponse200ApplicationJson; + 200: GetWhatsappBusinessVerificationCodeResponse; }; export type GetWhatsappBusinessVerificationCodeResult = GetWhatsappBusinessVerificationCodeResponses[keyof GetWhatsappBusinessVerificationCodeResponses]; @@ -24567,35 +10403,35 @@ export type GetWhatsappSignupConfigErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWhatsappSignupConfigResponse403ApplicationProblemPlusJson; + 403: GetWhatsappSignupConfigForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetWhatsappSignupConfigResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetWhatsappSignupConfigResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetWhatsappSignupConfigResponse500ApplicationProblemPlusJson; + 500: GetWhatsappSignupConfigInternalServerErrorProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: GetWhatsappSignupConfigResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type GetWhatsappSignupConfigError = GetWhatsappSignupConfigErrors[keyof GetWhatsappSignupConfigErrors]; @@ -24604,7 +10440,7 @@ export type GetWhatsappSignupConfigResponses = { /** * The parameters to launch Embedded Signup with. */ - 200: GetWhatsappSignupConfigResponse200ApplicationJson; + 200: GetWhatsappSignupConfigResponse; }; export type GetWhatsappSignupConfigResult = GetWhatsappSignupConfigResponses[keyof GetWhatsappSignupConfigResponses]; @@ -24626,39 +10462,39 @@ export type ListWhatsappSharedLineAssignmentsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson; + 403: ListWhatsappSharedLineAssignmentsForbiddenProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson; + 500: ListWhatsappSharedLineAssignmentsInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson; + 504: ListWhatsappSharedLineAssignmentsGatewayTimeoutProblem; }; export type ListWhatsappSharedLineAssignmentsError = ListWhatsappSharedLineAssignmentsErrors[keyof ListWhatsappSharedLineAssignmentsErrors]; @@ -24667,13 +10503,13 @@ export type ListWhatsappSharedLineAssignmentsResponses = { /** * A page of WhatsApp shared line assignments. */ - 200: ListWhatsappSharedLineAssignmentsResponse200ApplicationJson; + 200: SharedLineAssignmentPage; }; export type ListWhatsappSharedLineAssignmentsResult = ListWhatsappSharedLineAssignmentsResponses[keyof ListWhatsappSharedLineAssignmentsResponses]; export type CreateWhatsappSharedLineAssignmentData = { - body: CreateWhatsappSharedLineAssignmentRequestApplicationJson; + body: CreateWhatsappSharedLineAssignmentRequest; headers: { /** * Identifies one logical mutation across retries. @@ -24691,49 +10527,49 @@ export type CreateWhatsappSharedLineAssignmentErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson; + 400: CreateWhatsappSharedLineAssignmentBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: CreateWhatsappSharedLineAssignmentForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing; WHATSAPP_MODE_DEDICATED: WhatsApp Mode Is Dedicated; SHARED_LINE_CAP_EXCEEDED: Shared Line Cap Exceeded; ASSIGNMENT_EXISTS: Assignment Exists */ - 409: CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson; + 409: CreateWhatsappSharedLineAssignmentConflictProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: CreateWhatsappSharedLineAssignmentUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: CreateWhatsappSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned; SHARED_LINE_POOL_EXHAUSTED: Shared Line Pool Exhausted * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: CreateWhatsappSharedLineAssignmentServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: CreateWhatsappSharedLineAssignmentGatewayTimeoutProblem; }; export type CreateWhatsappSharedLineAssignmentError = CreateWhatsappSharedLineAssignmentErrors[keyof CreateWhatsappSharedLineAssignmentErrors]; @@ -24742,7 +10578,7 @@ export type CreateWhatsappSharedLineAssignmentResponses = { /** * The created WhatsApp shared line assignment. */ - 201: CreateWhatsappSharedLineAssignmentResponse201ApplicationJson; + 201: SharedLineAssignment; }; export type CreateWhatsappSharedLineAssignmentResult = CreateWhatsappSharedLineAssignmentResponses[keyof CreateWhatsappSharedLineAssignmentResponses]; @@ -24761,43 +10597,43 @@ export type ReleaseWhatsappSharedLineAssignmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: ReleaseWhatsappSharedLineAssignmentForbiddenProblem; /** * ASSIGNMENT_NOT_FOUND: Assignment Not Found */ - 404: ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson; + 404: AssignmentNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem; }; export type ReleaseWhatsappSharedLineAssignmentError = ReleaseWhatsappSharedLineAssignmentErrors[keyof ReleaseWhatsappSharedLineAssignmentErrors]; @@ -24806,7 +10642,7 @@ export type ReleaseWhatsappSharedLineAssignmentResponses = { /** * The released WhatsApp shared line assignment. */ - 200: ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson; + 200: SharedLineAssignment; }; export type ReleaseWhatsappSharedLineAssignmentResult = ReleaseWhatsappSharedLineAssignmentResponses[keyof ReleaseWhatsappSharedLineAssignmentResponses]; @@ -24825,43 +10661,43 @@ export type GetWhatsappSharedLineAssignmentErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson; + 403: GetWhatsappSharedLineAssignmentForbiddenProblem; /** * ASSIGNMENT_NOT_FOUND: Assignment Not Found */ - 404: GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson; + 404: AssignmentNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson; + 500: GetWhatsappSharedLineAssignmentInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson; + 504: GetWhatsappSharedLineAssignmentGatewayTimeoutProblem; }; export type GetWhatsappSharedLineAssignmentError = GetWhatsappSharedLineAssignmentErrors[keyof GetWhatsappSharedLineAssignmentErrors]; @@ -24870,7 +10706,7 @@ export type GetWhatsappSharedLineAssignmentResponses = { /** * The WhatsApp shared line assignment. */ - 200: GetWhatsappSharedLineAssignmentResponse200ApplicationJson; + 200: SharedLineAssignment; }; export type GetWhatsappSharedLineAssignmentResult = GetWhatsappSharedLineAssignmentResponses[keyof GetWhatsappSharedLineAssignmentResponses]; @@ -24894,53 +10730,53 @@ export type ProvisionWhatsappDedicatedLineErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson; + 400: ProvisionWhatsappDedicatedLineBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * ENTITLEMENT_REQUIRED: Entitlement Required */ - 402: ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson; + 402: EntitlementRequiredProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson; + 403: ProvisionWhatsappDedicatedLineForbiddenProblem; /** * PROJECT_CLOSING: Project Is Closing */ - 409: ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson; + 409: ProjectClosingProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson; + 422: ProvisionWhatsappDedicatedLineUnprocessableEntityProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson; + 500: ProvisionWhatsappDedicatedLineInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable; BILLING_NOT_PROVISIONED: Billing Not Provisioned * * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson; + 503: ProvisionWhatsappDedicatedLineServiceUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson; + 504: ProvisionWhatsappDedicatedLineGatewayTimeoutProblem; }; export type ProvisionWhatsappDedicatedLineError = ProvisionWhatsappDedicatedLineErrors[keyof ProvisionWhatsappDedicatedLineErrors]; @@ -24949,7 +10785,7 @@ export type ProvisionWhatsappDedicatedLineResponses = { /** * The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal. */ - 202: ProvisionWhatsappDedicatedLineResponse202ApplicationJson; + 202: Operation; }; export type ProvisionWhatsappDedicatedLineResult = ProvisionWhatsappDedicatedLineResponses[keyof ProvisionWhatsappDedicatedLineResponses]; @@ -24968,43 +10804,43 @@ export type ReleaseWhatsappDedicatedLineErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson; + 403: ReleaseWhatsappDedicatedLineForbiddenProblem; /** * RESOURCE_NOT_FOUND: Resource Not Found */ - 404: ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson; + 404: ResourceNotFoundProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * RATE_LIMITED: Too Many Requests */ - 429: ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson; + 429: RateLimitedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson; + 500: ReleaseWhatsappDedicatedLineInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson; + 504: ReleaseWhatsappDedicatedLineGatewayTimeoutProblem; }; export type ReleaseWhatsappDedicatedLineError = ReleaseWhatsappDedicatedLineErrors[keyof ReleaseWhatsappDedicatedLineErrors]; @@ -25013,11 +10849,11 @@ export type ReleaseWhatsappDedicatedLineResponses = { /** * The WhatsApp ability and its charge period were removed. */ - 200: ReleaseWhatsappDedicatedLineResponse200ApplicationJson; + 200: Operation; /** * The removal is still running. GET the Location after the Retry-After interval. */ - 202: ReleaseWhatsappDedicatedLineResponse202ApplicationJson; + 202: Operation; }; export type ReleaseWhatsappDedicatedLineResult = ReleaseWhatsappDedicatedLineResponses[keyof ReleaseWhatsappDedicatedLineResponses]; @@ -25041,45 +10877,45 @@ export type DeleteProjectErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: DeleteProjectResponse400ApplicationProblemPlusJson; + 400: DeleteProjectBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteProjectResponse403ApplicationProblemPlusJson; + 403: DeleteProjectForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: DeleteProjectResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: DeleteProjectResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: DeleteProjectResponse422ApplicationProblemPlusJson; + 422: DeleteProjectUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteProjectResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteProjectResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: DeleteProjectResponse504ApplicationProblemPlusJson; + 504: DeleteProjectGatewayTimeoutProblem; }; export type DeleteProjectError = DeleteProjectErrors[keyof DeleteProjectErrors]; @@ -25088,7 +10924,7 @@ export type DeleteProjectResponses = { /** * The deleted project tombstone. */ - 200: DeleteProjectResponse200ApplicationJson; + 200: Project; }; export type DeleteProjectResult = DeleteProjectResponses[keyof DeleteProjectResponses]; @@ -25106,41 +10942,41 @@ export type GetProjectErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetProjectResponse403ApplicationProblemPlusJson; + 403: GetProjectForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: GetProjectResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: GetProjectResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetProjectResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetProjectResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetProjectResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetProjectResponse504ApplicationProblemPlusJson; + 504: GetProjectGatewayTimeoutProblem; }; export type GetProjectError = GetProjectErrors[keyof GetProjectErrors]; @@ -25149,13 +10985,13 @@ export type GetProjectResponses = { /** * The requested project. */ - 200: GetProjectResponse200ApplicationJson; + 200: Project; }; export type GetProjectResult = GetProjectResponses[keyof GetProjectResponses]; export type UpdateProjectData = { - body: UpdateProjectRequestApplicationJson; + body: UpdateProjectRequest; headers: { /** * Identifies one logical mutation across retries. @@ -25173,49 +11009,49 @@ export type UpdateProjectErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: UpdateProjectResponse400ApplicationProblemPlusJson; + 400: UpdateProjectBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateProjectResponse403ApplicationProblemPlusJson; + 403: UpdateProjectForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: UpdateProjectResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: UpdateProjectResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: UpdateProjectResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: UpdateProjectResponse422ApplicationProblemPlusJson; + 422: UpdateProjectUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateProjectResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateProjectResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: UpdateProjectResponse504ApplicationProblemPlusJson; + 504: UpdateProjectGatewayTimeoutProblem; }; export type UpdateProjectError = UpdateProjectErrors[keyof UpdateProjectErrors]; @@ -25224,7 +11060,7 @@ export type UpdateProjectResponses = { /** * The updated project. */ - 200: UpdateProjectResponse200ApplicationJson; + 200: Project; }; export type UpdateProjectResult = UpdateProjectResponses[keyof UpdateProjectResponses]; @@ -25242,41 +11078,41 @@ export type GetAgentProfileErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetAgentProfileResponse403ApplicationProblemPlusJson; + 403: GetAgentProfileForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: GetAgentProfileResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: GetAgentProfileResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetAgentProfileResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetAgentProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetAgentProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: GetAgentProfileResponse504ApplicationProblemPlusJson; + 504: GetAgentProfileGatewayTimeoutProblem; }; export type GetAgentProfileError = GetAgentProfileErrors[keyof GetAgentProfileErrors]; @@ -25285,13 +11121,13 @@ export type GetAgentProfileResponses = { /** * The Project's agent profile. */ - 200: GetAgentProfileResponse200ApplicationJson; + 200: AgentProfile; }; export type GetAgentProfileResult = GetAgentProfileResponses[keyof GetAgentProfileResponses]; export type UpdateAgentProfileData = { - body: UpdateAgentProfileRequestApplicationJson; + body: UpdateAgentProfileRequest; headers: { /** * Identifies one logical mutation across retries. @@ -25309,49 +11145,49 @@ export type UpdateAgentProfileErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid */ - 400: UpdateAgentProfileResponse400ApplicationProblemPlusJson; + 400: UpdateAgentProfileBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateAgentProfileResponse403ApplicationProblemPlusJson; + 403: UpdateAgentProfileForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: UpdateAgentProfileResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: UpdateAgentProfileResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: UpdateAgentProfileResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: UpdateAgentProfileResponse422ApplicationProblemPlusJson; + 422: UpdateAgentProfileUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateAgentProfileResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateAgentProfileResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: UpdateAgentProfileResponse504ApplicationProblemPlusJson; + 504: UpdateAgentProfileGatewayTimeoutProblem; }; export type UpdateAgentProfileError = UpdateAgentProfileErrors[keyof UpdateAgentProfileErrors]; @@ -25360,7 +11196,7 @@ export type UpdateAgentProfileResponses = { /** * The updated agent profile. */ - 200: UpdateAgentProfileResponse200ApplicationJson; + 200: AgentProfile; }; export type UpdateAgentProfileResult = UpdateAgentProfileResponses[keyof UpdateAgentProfileResponses]; @@ -25381,59 +11217,63 @@ export type ResetAgentProfileAvatarData = { }; export type ResetAgentProfileAvatarErrors = { + /** + * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid + */ + 400: ResetAgentProfileAvatarBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ResetAgentProfileAvatarResponse403ApplicationProblemPlusJson; + 403: ResetAgentProfileAvatarForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: ResetAgentProfileAvatarResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: ResetAgentProfileAvatarResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** - * VALIDATION_FAILED: Request Validation Failed + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: ResetAgentProfileAvatarResponse422ApplicationProblemPlusJson; + 422: ResetAgentProfileAvatarUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ResetAgentProfileAvatarResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ResetAgentProfileAvatarResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: ResetAgentProfileAvatarResponse504ApplicationProblemPlusJson; + 504: ResetAgentProfileAvatarGatewayTimeoutProblem; }; export type ResetAgentProfileAvatarError = ResetAgentProfileAvatarErrors[keyof ResetAgentProfileAvatarErrors]; export type ResetAgentProfileAvatarResponses = { /** - * The agent profile reset to the default avatar. + * The agent profile with the project's default avatar. */ - 200: ResetAgentProfileAvatarResponse200ApplicationJson; + 200: AgentProfile; }; export type ResetAgentProfileAvatarResult = ResetAgentProfileAvatarResponses[keyof ResetAgentProfileAvatarResponses]; export type CommitAgentProfileAvatarData = { - body: CommitAgentProfileAvatarRequestApplicationJson; + body: CommitAgentProfileAvatarRequest; headers: { /** * Identifies one logical mutation across retries. @@ -25451,49 +11291,49 @@ export type CommitAgentProfileAvatarErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: CommitAgentProfileAvatarResponse400ApplicationProblemPlusJson; + 400: CommitAgentProfileAvatarBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CommitAgentProfileAvatarResponse403ApplicationProblemPlusJson; + 403: CommitAgentProfileAvatarForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: CommitAgentProfileAvatarResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: CommitAgentProfileAvatarResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CommitAgentProfileAvatarResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CommitAgentProfileAvatarResponse422ApplicationProblemPlusJson; + 422: CommitAgentProfileAvatarUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CommitAgentProfileAvatarResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CommitAgentProfileAvatarResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CommitAgentProfileAvatarResponse504ApplicationProblemPlusJson; + 504: CommitAgentProfileAvatarGatewayTimeoutProblem; }; export type CommitAgentProfileAvatarError = CommitAgentProfileAvatarErrors[keyof CommitAgentProfileAvatarErrors]; @@ -25502,13 +11342,13 @@ export type CommitAgentProfileAvatarResponses = { /** * The agent profile with its committed avatar. */ - 200: CommitAgentProfileAvatarResponse200ApplicationJson; + 200: AgentProfile; }; export type CommitAgentProfileAvatarResult = CommitAgentProfileAvatarResponses[keyof CommitAgentProfileAvatarResponses]; export type CreateAgentProfileAvatarUploadData = { - body: CreateAgentProfileAvatarUploadRequestApplicationJson; + body: CreateAgentProfileAvatarUploadRequest; path: { projectId: string; }; @@ -25520,41 +11360,41 @@ export type CreateAgentProfileAvatarUploadErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson; + 403: CreateAgentProfileAvatarUploadForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson; + 504: CreateAgentProfileAvatarUploadGatewayTimeoutProblem; }; export type CreateAgentProfileAvatarUploadError = CreateAgentProfileAvatarUploadErrors[keyof CreateAgentProfileAvatarUploadErrors]; @@ -25563,7 +11403,7 @@ export type CreateAgentProfileAvatarUploadResponses = { /** * A short-lived, project-bound presigned S3 POST. */ - 201: CreateAgentProfileAvatarUploadResponse201ApplicationJson; + 201: AgentProfileAvatarUpload; }; export type CreateAgentProfileAvatarUploadResult = CreateAgentProfileAvatarUploadResponses[keyof CreateAgentProfileAvatarUploadResponses]; @@ -25581,60 +11421,60 @@ export type ListProjectApiKeysErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListProjectApiKeysResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListProjectApiKeysResponse403ApplicationProblemPlusJson; + 403: ListProjectApiKeysForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: ListProjectApiKeysResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: ListProjectApiKeysResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListProjectApiKeysResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListProjectApiKeysResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: ListProjectApiKeysResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type ListProjectApiKeysError = ListProjectApiKeysErrors[keyof ListProjectApiKeysErrors]; export type ListProjectApiKeysResponses = { /** - * Every live key on the project, newest first. Never includes secrets. + * The project's keys that have not been revoked, newest first. Never includes secrets. */ - 200: ListProjectApiKeysResponse200ApplicationJson; + 200: ListProjectApiKeysResponse; }; export type ListProjectApiKeysResult = ListProjectApiKeysResponses[keyof ListProjectApiKeysResponses]; export type CreateProjectApiKeyData = { - body: CreateProjectApiKeyRequestApplicationJson; + body: CreateProjectApiKeyRequest; headers: { /** * Identifies one logical mutation across retries. @@ -25652,62 +11492,62 @@ export type CreateProjectApiKeyErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: CreateProjectApiKeyResponse400ApplicationProblemPlusJson; + 400: CreateProjectApiKeyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateProjectApiKeyResponse403ApplicationProblemPlusJson; + 403: CreateProjectApiKeyForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found */ - 404: CreateProjectApiKeyResponse404ApplicationProblemPlusJson; + 404: ProjectNotFoundProblem; /** * API_KEY_LIMIT_REACHED: API Key Limit Reached */ - 409: CreateProjectApiKeyResponse409ApplicationProblemPlusJson; + 409: ApiKeyLimitReachedProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: CreateProjectApiKeyResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: CreateProjectApiKeyResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateProjectApiKeyResponse422ApplicationProblemPlusJson; + 422: CreateProjectApiKeyUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateProjectApiKeyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: CreateProjectApiKeyResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type CreateProjectApiKeyError = CreateProjectApiKeyErrors[keyof CreateProjectApiKeyErrors]; export type CreateProjectApiKeyResponses = { /** - * The created key, with its secret. The secret is shown only here and cannot be recovered afterwards. + * The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation. */ - 201: CreateProjectApiKeyResponse201ApplicationJson; + 201: CreateProjectApiKeyResponse; }; export type CreateProjectApiKeyResult = CreateProjectApiKeyResponses[keyof CreateProjectApiKeyResponses]; @@ -25730,47 +11570,47 @@ export type RevokeProjectApiKeyData = { export type RevokeProjectApiKeyErrors = { /** - * INVALID_ARGUMENT: Invalid Argument + * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: RevokeProjectApiKeyResponse400ApplicationProblemPlusJson; + 400: RevokeProjectApiKeyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RevokeProjectApiKeyResponse403ApplicationProblemPlusJson; + 403: RevokeProjectApiKeyForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found */ - 404: RevokeProjectApiKeyResponse404ApplicationProblemPlusJson; + 404: RevokeProjectApiKeyNotFoundProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: RevokeProjectApiKeyResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** - * VALIDATION_FAILED: Request Validation Failed + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: RevokeProjectApiKeyResponse422ApplicationProblemPlusJson; + 422: RevokeProjectApiKeyUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RevokeProjectApiKeyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: RevokeProjectApiKeyResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type RevokeProjectApiKeyError = RevokeProjectApiKeyErrors[keyof RevokeProjectApiKeyErrors]; @@ -25779,13 +11619,13 @@ export type RevokeProjectApiKeyResponses = { /** * The revoked key. Repeating the delete returns the same revokedAt. */ - 200: RevokeProjectApiKeyResponse200ApplicationJson; + 200: ProjectApiKeyResponse; }; export type RevokeProjectApiKeyResult = RevokeProjectApiKeyResponses[keyof RevokeProjectApiKeyResponses]; export type UpdateProjectApiKeyData = { - body: UpdateProjectApiKeyRequestApplicationJson; + body: UpdateProjectApiKeyRequest; headers: { /** * Identifies one logical mutation across retries. @@ -25804,53 +11644,53 @@ export type UpdateProjectApiKeyErrors = { /** * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: UpdateProjectApiKeyResponse400ApplicationProblemPlusJson; + 400: UpdateProjectApiKeyBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateProjectApiKeyResponse403ApplicationProblemPlusJson; + 403: UpdateProjectApiKeyForbiddenProblem; /** * PROJECT_NOT_FOUND: Project Not Found; API_KEY_NOT_FOUND: API Key Not Found */ - 404: UpdateProjectApiKeyResponse404ApplicationProblemPlusJson; + 404: UpdateProjectApiKeyNotFoundProblem; /** * API_KEY_REVOKED: API Key Revoked */ - 409: UpdateProjectApiKeyResponse409ApplicationProblemPlusJson; + 409: ApiKeyRevokedProblem; /** * PROJECT_DELETED: Project Deleted */ - 410: UpdateProjectApiKeyResponse410ApplicationProblemPlusJson; + 410: ProjectDeletedProblem; /** * PAYLOAD_TOO_LARGE: Payload Too Large */ - 413: UpdateProjectApiKeyResponse413ApplicationProblemPlusJson; + 413: PayloadTooLargeProblem; /** * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: UpdateProjectApiKeyResponse422ApplicationProblemPlusJson; + 422: UpdateProjectApiKeyUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateProjectApiKeyResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout */ - 504: UpdateProjectApiKeyResponse504ApplicationProblemPlusJson; + 504: RequestTimeoutProblem; }; export type UpdateProjectApiKeyError = UpdateProjectApiKeyErrors[keyof UpdateProjectApiKeyErrors]; @@ -25859,7 +11699,7 @@ export type UpdateProjectApiKeyResponses = { /** * The key with its new permission list. Sending the list it already holds returns it unchanged. */ - 200: UpdateProjectApiKeyResponse200ApplicationJson; + 200: ProjectApiKeyResponse; }; export type UpdateProjectApiKeyResult = UpdateProjectApiKeyResponses[keyof UpdateProjectApiKeyResponses]; @@ -25880,43 +11720,43 @@ export type GetBillingOverviewErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetBillingOverviewResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetBillingOverviewResponse403ApplicationProblemPlusJson; + 403: GetBillingOverviewForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: GetBillingOverviewResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetBillingOverviewResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetBillingOverviewResponse500ApplicationProblemPlusJson; + 500: GetBillingOverviewInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetBillingOverviewResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetBillingOverviewResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetBillingOverviewResponse504ApplicationProblemPlusJson; + 504: GetBillingOverviewGatewayTimeoutProblem; }; export type GetBillingOverviewError = GetBillingOverviewErrors[keyof GetBillingOverviewErrors]; @@ -25925,7 +11765,7 @@ export type GetBillingOverviewResponses = { /** * Plan, entitlements, and current-period usage. */ - 200: GetBillingOverviewResponse200ApplicationJson; + 200: GetBillingOverviewResponse; }; export type GetBillingOverviewResult = GetBillingOverviewResponses[keyof GetBillingOverviewResponses]; @@ -25950,47 +11790,47 @@ export type GetBillingOperationErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetBillingOperationResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetBillingOperationResponse403ApplicationProblemPlusJson; + 403: GetBillingOperationForbiddenProblem; /** * OPERATION_NOT_FOUND: Operation Not Found */ - 404: GetBillingOperationResponse404ApplicationProblemPlusJson; + 404: OperationNotFoundProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: GetBillingOperationResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: GetBillingOperationResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: GetBillingOperationResponse500ApplicationProblemPlusJson; + 500: GetBillingOperationInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetBillingOperationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetBillingOperationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetBillingOperationResponse504ApplicationProblemPlusJson; + 504: GetBillingOperationGatewayTimeoutProblem; }; export type GetBillingOperationError = GetBillingOperationErrors[keyof GetBillingOperationErrors]; @@ -25999,7 +11839,7 @@ export type GetBillingOperationResponses = { /** * Authoritative recovery snapshot for a billing operation. */ - 200: GetBillingOperationResponse200ApplicationJson; + 200: BillingOperation; }; export type GetBillingOperationResult = GetBillingOperationResponses[keyof GetBillingOperationResponses]; @@ -26020,43 +11860,43 @@ export type ListBillingPlansErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListBillingPlansResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListBillingPlansResponse403ApplicationProblemPlusJson; + 403: ListBillingPlansForbiddenProblem; /** * FAILED_PRECONDITION: Failed Precondition */ - 409: ListBillingPlansResponse409ApplicationProblemPlusJson; + 409: FailedPreconditionProblem; /** * VALIDATION_FAILED: Request Validation Failed */ - 422: ListBillingPlansResponse422ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INVALID_AUTH_CONTEXT: Invalid Authentication Context * * INTERNAL_ERROR: Internal Server Error */ - 500: ListBillingPlansResponse500ApplicationProblemPlusJson; + 500: ListBillingPlansInternalServerErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListBillingPlansResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListBillingPlansResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListBillingPlansResponse504ApplicationProblemPlusJson; + 504: ListBillingPlansGatewayTimeoutProblem; }; export type ListBillingPlansError = ListBillingPlansErrors[keyof ListBillingPlansErrors]; @@ -26065,7 +11905,7 @@ export type ListBillingPlansResponses = { /** * Billing plans grouped by their public plan-metadata type. */ - 200: ListBillingPlansResponse200ApplicationJson; + 200: ListBillingPlansResponse; }; export type ListBillingPlansResult = ListBillingPlansResponses[keyof ListBillingPlansResponses]; @@ -26089,25 +11929,25 @@ export type GetMessageMetricsBackfillErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetMessageMetricsBackfillResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetMessageMetricsBackfillResponse403ApplicationProblemPlusJson; + 403: GetMessageMetricsBackfillForbiddenProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetMessageMetricsBackfillResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; }; export type GetMessageMetricsBackfillError = GetMessageMetricsBackfillErrors[keyof GetMessageMetricsBackfillErrors]; @@ -26116,7 +11956,7 @@ export type GetMessageMetricsBackfillResponses = { /** * Project-scoped backfill progress. */ - 200: GetMessageMetricsBackfillResponse200ApplicationJson; + 200: GetMessageMetricsBackfillResponse; }; export type GetMessageMetricsBackfillResult = GetMessageMetricsBackfillResponses[keyof GetMessageMetricsBackfillResponses]; @@ -26140,25 +11980,25 @@ export type GetMessageMetricsSqlSchemaErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson; + 403: GetMessageMetricsSqlSchemaForbiddenProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; }; export type GetMessageMetricsSqlSchemaError = GetMessageMetricsSqlSchemaErrors[keyof GetMessageMetricsSqlSchemaErrors]; @@ -26167,7 +12007,7 @@ export type GetMessageMetricsSqlSchemaResponses = { /** * The Project-scoped SQL surface of the resolved contracts date. */ - 200: GetMessageMetricsSqlSchemaResponse200ApplicationJson; + 200: GetMessageMetricsSqlSchemaResponse; }; export type GetMessageMetricsSqlSchemaResult = GetMessageMetricsSqlSchemaResponses[keyof GetMessageMetricsSqlSchemaResponses]; @@ -26191,37 +12031,41 @@ export type QueryMessageMetricsErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: QueryMessageMetricsResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: QueryMessageMetricsResponse403ApplicationProblemPlusJson; + 403: QueryMessageMetricsForbiddenProblem; /** * QUERY_RESOURCE_LIMIT: Query Resource Limit; VALIDATION_FAILED: Request Validation Failed */ - 422: QueryMessageMetricsResponse422ApplicationProblemPlusJson; + 422: QueryMessageMetricsUnprocessableEntityProblem; + /** + * QUERY_CONCURRENCY_LIMIT: Query Concurrency Limit + */ + 429: QueryConcurrencyLimitProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: QueryMessageMetricsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: QueryMessageMetricsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** * UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout */ - 504: QueryMessageMetricsResponse504ApplicationProblemPlusJson; + 504: QueryMessageMetricsGatewayTimeoutProblem; }; export type QueryMessageMetricsError = QueryMessageMetricsErrors[keyof QueryMessageMetricsErrors]; @@ -26230,7 +12074,7 @@ export type QueryMessageMetricsResponses = { /** * Dynamic SQL columns and rows followed by bounded ClickHouse read statistics. */ - 200: QueryMessageMetricsResponse200ApplicationJson; + 200: QueryMessageMetricsResponse; }; export type QueryMessageMetricsResult = QueryMessageMetricsResponses[keyof QueryMessageMetricsResponses]; @@ -26248,29 +12092,33 @@ export type ListWebhookApiVersionsErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + */ + 403: ListWebhookApiVersionsForbiddenProblem; + /** + * VALIDATION_FAILED: Request Validation Failed */ - 403: ListWebhookApiVersionsResponse403ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListWebhookApiVersionsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListWebhookApiVersionsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListWebhookApiVersionsResponse504ApplicationProblemPlusJson; + 504: ListWebhookApiVersionsGatewayTimeoutProblem; }; export type ListWebhookApiVersionsError = ListWebhookApiVersionsErrors[keyof ListWebhookApiVersionsErrors]; @@ -26279,7 +12127,7 @@ export type ListWebhookApiVersionsResponses = { /** * Published webhook payload API versions. */ - 200: ListWebhookApiVersionsResponse200ApplicationJson; + 200: ListWebhookApiVersionsResponse; }; export type ListWebhookApiVersionsResult = ListWebhookApiVersionsResponses[keyof ListWebhookApiVersionsResponses]; @@ -26300,33 +12148,37 @@ export type ListWebhookDestinationsErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListWebhookDestinationsResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + */ + 403: ListWebhookDestinationsForbiddenProblem; + /** + * VALIDATION_FAILED: Request Validation Failed */ - 403: ListWebhookDestinationsResponse403ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListWebhookDestinationsResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListWebhookDestinationsResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListWebhookDestinationsResponse504ApplicationProblemPlusJson; + 504: ListWebhookDestinationsGatewayTimeoutProblem; }; export type ListWebhookDestinationsError = ListWebhookDestinationsErrors[keyof ListWebhookDestinationsErrors]; @@ -26335,13 +12187,13 @@ export type ListWebhookDestinationsResponses = { /** * One page of active webhook destinations. */ - 200: ListWebhookDestinationsResponse200ApplicationJson; + 200: WebhookDestinationPage; }; export type ListWebhookDestinationsResult = ListWebhookDestinationsResponses[keyof ListWebhookDestinationsResponses]; export type CreateWebhookDestinationData = { - body: CreateWebhookDestinationRequestApplicationJson; + body: CreateWebhookDestinationRequest; headers: { /** * Identifies one logical mutation across retries. @@ -26357,48 +12209,52 @@ export type CreateWebhookDestinationData = { export type CreateWebhookDestinationErrors = { /** - * INVALID_ARGUMENT: Invalid Argument + * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: CreateWebhookDestinationResponse400ApplicationProblemPlusJson; + 400: CreateWebhookDestinationBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: CreateWebhookDestinationResponse403ApplicationProblemPlusJson; + 403: CreateWebhookDestinationForbiddenProblem; /** - * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused + * PAYLOAD_TOO_LARGE: Payload Too Large + */ + 413: PayloadTooLargeProblem; + /** + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: CreateWebhookDestinationResponse422ApplicationProblemPlusJson; + 422: CreateWebhookDestinationUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: CreateWebhookDestinationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: CreateWebhookDestinationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: CreateWebhookDestinationResponse504ApplicationProblemPlusJson; + 504: CreateWebhookDestinationGatewayTimeoutProblem; }; export type CreateWebhookDestinationError = CreateWebhookDestinationErrors[keyof CreateWebhookDestinationErrors]; export type CreateWebhookDestinationResponses = { /** - * The created destination and its one-time signing secret. + * The created destination and its signing secret. */ - 201: CreateWebhookDestinationResponse201ApplicationJson; + 201: CreateWebhookDestinationResponse; }; export type CreateWebhookDestinationResult = CreateWebhookDestinationResponses[keyof CreateWebhookDestinationResponses]; @@ -26417,33 +12273,37 @@ export type DeleteWebhookDestinationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: DeleteWebhookDestinationResponse403ApplicationProblemPlusJson; + 403: DeleteWebhookDestinationForbiddenProblem; /** * WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found */ - 404: DeleteWebhookDestinationResponse404ApplicationProblemPlusJson; + 404: WebhookDestinationNotFoundProblem; + /** + * VALIDATION_FAILED: Request Validation Failed + */ + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: DeleteWebhookDestinationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: DeleteWebhookDestinationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: DeleteWebhookDestinationResponse504ApplicationProblemPlusJson; + 504: DeleteWebhookDestinationGatewayTimeoutProblem; }; export type DeleteWebhookDestinationError = DeleteWebhookDestinationErrors[keyof DeleteWebhookDestinationErrors]; @@ -26452,7 +12312,7 @@ export type DeleteWebhookDestinationResponses = { /** * The stable webhook destination tombstone. */ - 200: DeleteWebhookDestinationResponse200ApplicationJson; + 200: WebhookDestination; }; export type DeleteWebhookDestinationResult = DeleteWebhookDestinationResponses[keyof DeleteWebhookDestinationResponses]; @@ -26471,37 +12331,41 @@ export type GetWebhookDestinationErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWebhookDestinationResponse403ApplicationProblemPlusJson; + 403: GetWebhookDestinationForbiddenProblem; /** * WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found */ - 404: GetWebhookDestinationResponse404ApplicationProblemPlusJson; + 404: WebhookDestinationNotFoundProblem; /** * WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted */ - 410: GetWebhookDestinationResponse410ApplicationProblemPlusJson; + 410: WebhookDestinationDeletedProblem; + /** + * VALIDATION_FAILED: Request Validation Failed + */ + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetWebhookDestinationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetWebhookDestinationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetWebhookDestinationResponse504ApplicationProblemPlusJson; + 504: GetWebhookDestinationGatewayTimeoutProblem; }; export type GetWebhookDestinationError = GetWebhookDestinationErrors[keyof GetWebhookDestinationErrors]; @@ -26510,13 +12374,13 @@ export type GetWebhookDestinationResponses = { /** * The requested webhook destination. */ - 200: GetWebhookDestinationResponse200ApplicationJson; + 200: WebhookDestination; }; export type GetWebhookDestinationResult = GetWebhookDestinationResponses[keyof GetWebhookDestinationResponses]; export type UpdateWebhookDestinationData = { - body: UpdateWebhookDestinationRequestApplicationJson; + body: UpdateWebhookDestinationRequest; headers: { /** * Identifies one logical mutation across retries. @@ -26533,47 +12397,51 @@ export type UpdateWebhookDestinationData = { export type UpdateWebhookDestinationErrors = { /** - * INVALID_ARGUMENT: Invalid Argument + * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: UpdateWebhookDestinationResponse400ApplicationProblemPlusJson; + 400: UpdateWebhookDestinationBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: UpdateWebhookDestinationResponse403ApplicationProblemPlusJson; + 403: UpdateWebhookDestinationForbiddenProblem; /** * WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found */ - 404: UpdateWebhookDestinationResponse404ApplicationProblemPlusJson; + 404: WebhookDestinationNotFoundProblem; /** * WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted */ - 410: UpdateWebhookDestinationResponse410ApplicationProblemPlusJson; + 410: WebhookDestinationDeletedProblem; /** - * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused + * PAYLOAD_TOO_LARGE: Payload Too Large + */ + 413: PayloadTooLargeProblem; + /** + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: UpdateWebhookDestinationResponse422ApplicationProblemPlusJson; + 422: UpdateWebhookDestinationUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: UpdateWebhookDestinationResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: UpdateWebhookDestinationResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: UpdateWebhookDestinationResponse504ApplicationProblemPlusJson; + 504: UpdateWebhookDestinationGatewayTimeoutProblem; }; export type UpdateWebhookDestinationError = UpdateWebhookDestinationErrors[keyof UpdateWebhookDestinationErrors]; @@ -26582,13 +12450,13 @@ export type UpdateWebhookDestinationResponses = { /** * The updated webhook destination. */ - 200: UpdateWebhookDestinationResponse200ApplicationJson; + 200: WebhookDestination; }; export type UpdateWebhookDestinationResult = UpdateWebhookDestinationResponses[keyof UpdateWebhookDestinationResponses]; export type RotateWebhookSigningSecretData = { - body: RotateWebhookSigningSecretRequestApplicationJson; + body: RotateWebhookSigningSecretRequest; headers: { /** * Identifies one logical mutation across retries. @@ -26605,56 +12473,60 @@ export type RotateWebhookSigningSecretData = { export type RotateWebhookSigningSecretErrors = { /** - * INVALID_ARGUMENT: Invalid Argument + * IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument */ - 400: RotateWebhookSigningSecretResponse400ApplicationProblemPlusJson; + 400: RotateWebhookSigningSecretBadRequestProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: RotateWebhookSigningSecretResponse403ApplicationProblemPlusJson; + 403: RotateWebhookSigningSecretForbiddenProblem; /** * WEBHOOK_DESTINATION_NOT_FOUND: Webhook Destination Not Found */ - 404: RotateWebhookSigningSecretResponse404ApplicationProblemPlusJson; + 404: WebhookDestinationNotFoundProblem; /** * WEBHOOK_DESTINATION_DELETED: Webhook Destination Deleted */ - 410: RotateWebhookSigningSecretResponse410ApplicationProblemPlusJson; + 410: WebhookDestinationDeletedProblem; /** - * IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused + * PAYLOAD_TOO_LARGE: Payload Too Large + */ + 413: PayloadTooLargeProblem; + /** + * VALIDATION_FAILED: Request Validation Failed; IDEMPOTENCY_KEY_REUSED: Idempotency Key Reused */ - 422: RotateWebhookSigningSecretResponse422ApplicationProblemPlusJson; + 422: RotateWebhookSigningSecretUnprocessableEntityProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: RotateWebhookSigningSecretResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: RotateWebhookSigningSecretResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: RotateWebhookSigningSecretResponse504ApplicationProblemPlusJson; + 504: RotateWebhookSigningSecretGatewayTimeoutProblem; }; export type RotateWebhookSigningSecretError = RotateWebhookSigningSecretErrors[keyof RotateWebhookSigningSecretErrors]; export type RotateWebhookSigningSecretResponses = { /** - * A new one-time signing secret. + * The new signing secret. */ - 200: RotateWebhookSigningSecretResponse200ApplicationJson; + 200: RotateWebhookSigningSecretResponse; }; export type RotateWebhookSigningSecretResult = RotateWebhookSigningSecretResponses[keyof RotateWebhookSigningSecretResponses]; @@ -26672,21 +12544,29 @@ export type ListWebhookEgressAddressesErrors = { /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required + */ + 403: ListWebhookEgressAddressesForbiddenProblem; + /** + * VALIDATION_FAILED: Request Validation Failed */ - 403: ListWebhookEgressAddressesResponse403ApplicationProblemPlusJson; + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: PhotonProblem_UPSTREAM_UNAVAILABLE_503; + 503: UpstreamUnavailableProblem; + /** + * REQUEST_TIMEOUT: Request Timeout + */ + 504: RequestTimeoutProblem; }; export type ListWebhookEgressAddressesError = ListWebhookEgressAddressesErrors[keyof ListWebhookEgressAddressesErrors]; @@ -26695,7 +12575,7 @@ export type ListWebhookEgressAddressesResponses = { /** * The public addresses webhook deliveries originate from in this environment. */ - 200: ListWebhookEgressAddressesResponse200ApplicationJson; + 200: ListWebhookEgressAddressesResponse; }; export type ListWebhookEgressAddressesResult = ListWebhookEgressAddressesResponses[keyof ListWebhookEgressAddressesResponses]; @@ -26715,33 +12595,37 @@ export type ListWebhookEventTypesErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: ListWebhookEventTypesResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: ListWebhookEventTypesResponse403ApplicationProblemPlusJson; + 403: ListWebhookEventTypesForbiddenProblem; + /** + * VALIDATION_FAILED: Request Validation Failed + */ + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: ListWebhookEventTypesResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: ListWebhookEventTypesResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: ListWebhookEventTypesResponse504ApplicationProblemPlusJson; + 504: ListWebhookEventTypesGatewayTimeoutProblem; }; export type ListWebhookEventTypesError = ListWebhookEventTypesErrors[keyof ListWebhookEventTypesErrors]; @@ -26750,7 +12634,7 @@ export type ListWebhookEventTypesResponses = { /** * Events available in the selected API version. */ - 200: ListWebhookEventTypesResponse200ApplicationJson; + 200: ListWebhookEventTypesResponse; }; export type ListWebhookEventTypesResult = ListWebhookEventTypesResponses[keyof ListWebhookEventTypesResponses]; @@ -26771,33 +12655,37 @@ export type GetWebhookEventSchemaErrors = { /** * INVALID_ARGUMENT: Invalid Argument */ - 400: GetWebhookEventSchemaResponse400ApplicationProblemPlusJson; + 400: InvalidArgumentProblem; /** * NOT_AUTHENTICATED: Not Authenticated */ - 401: PhotonProblem_NOT_AUTHENTICATED_401; + 401: NotAuthenticatedProblem; /** * FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch * - * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope + * FORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required */ - 403: GetWebhookEventSchemaResponse403ApplicationProblemPlusJson; + 403: GetWebhookEventSchemaForbiddenProblem; + /** + * VALIDATION_FAILED: Request Validation Failed + */ + 422: ValidationFailedProblem; /** * INTERNAL_ERROR: Internal Server Error */ - 500: PhotonProblem_INTERNAL_ERROR_500; + 500: InternalErrorProblem; /** * UPSTREAM_FAILURE: Upstream Service Failure */ - 502: GetWebhookEventSchemaResponse502ApplicationProblemPlusJson; + 502: UpstreamFailureProblem; /** * UPSTREAM_UNAVAILABLE: Upstream Service Unavailable */ - 503: GetWebhookEventSchemaResponse503ApplicationProblemPlusJson; + 503: UpstreamUnavailableProblem; /** - * UPSTREAM_TIMEOUT: Upstream Service Timeout + * REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout */ - 504: GetWebhookEventSchemaResponse504ApplicationProblemPlusJson; + 504: GetWebhookEventSchemaGatewayTimeoutProblem; }; export type GetWebhookEventSchemaError = GetWebhookEventSchemaErrors[keyof GetWebhookEventSchemaErrors]; @@ -26806,7 +12694,7 @@ export type GetWebhookEventSchemaResponses = { /** * The published reader JSON Schema for the event. */ - 200: GetWebhookEventSchemaResponse200ApplicationSchemaPlusJson; + 200: WebhookEventSchema; }; export type GetWebhookEventSchemaResult = GetWebhookEventSchemaResponses[keyof GetWebhookEventSchemaResponses]; diff --git a/packages/typescript/src/generated/zod.gen.ts b/packages/typescript/src/generated/zod.gen.ts index c5f914a..4dc8038 100644 --- a/packages/typescript/src/generated/zod.gen.ts +++ b/packages/typescript/src/generated/zod.gen.ts @@ -2,25650 +2,9003 @@ import type * as PhotonWireTypes from './types.gen.js'; // This file is auto-generated by @hey-api/openapi-ts -import { openEnum, prefixItems } from '../validation.js'; +import { absent, openEnum, prefixItems } from '../validation.js'; import * as z from 'zod'; -export const zAssignSmsLineCampaignRequestApplicationJson = z.looseObject({ - campaignId: z.string(), - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export const zAccount = /* @__PURE__ */ (() => z.looseObject({ + accountId: z.string(), + createdAt: z.string().nullable(), + deletedAt: z.string().nullable(), + email: z.string(), + firstName: z.string().nullable(), + lastName: z.string().nullable(), + phoneNumber: z.string().nullable(), + phoneVerifiedAt: z.string().nullable(), + pictureUrl: z.string(), + updatedAt: z.string().nullable() +}))(); -export type AssignSmsLineCampaignRequestApplicationJsonZodInput = z.input; +export type AccountZodInput = z.input; -export type AssignSmsLineCampaignRequestApplicationJsonZodOutput = z.output; +export type AccountZodOutput = z.output; -export const zAssignSmsLineCampaignResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), +export const zAccountServiceKey = /* @__PURE__ */ (() => z.looseObject({ + accountId: z.string(), createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() + expiresAt: z.string().nullable(), + name: z.string(), + revokedAt: z.string().nullable(), + serviceKeyId: z.string() }))(); -export type AssignSmsLineCampaignResponse200ApplicationJsonZodInput = z.input; +export type AccountServiceKeyZodInput = z.input; -export type AssignSmsLineCampaignResponse200ApplicationJsonZodOutput = z.output; +export type AccountServiceKeyZodOutput = z.output; -export const zAssignSmsLineCampaignResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() +export const zAgentProfile = /* @__PURE__ */ (() => z.looseObject({ + avatarUrl: z.string(), + firstName: z.string(), + lastName: z.string().nullable() }))(); -export type AssignSmsLineCampaignResponse202ApplicationJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse202ApplicationJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_INVALID_REQUEST'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid SMS campaign request'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-invalid-request') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Campaign not found'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-found') - }), - z.looseObject({ - code: z.literal('SMS_LINE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('SMS line not found'), - type: z.literal('https://photon.codes/docs/problems/sms-line-not-found') - }) -]))(); - -export type AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('SMS_LINE_UNSUPPORTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('SMS line unsupported'), - type: z.literal('https://photon.codes/docs/problems/sms-line-unsupported') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign not ready'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-ready') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment version conflict'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-version-conflict') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_MUTATION_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment mutation in progress'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-mutation-in-progress') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CAPACITY_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign number capacity exhausted'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-capacity-exceeded') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_RECONCILIATION_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign reconciliation required'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-reconciliation-required') - }) -]))(); - -export type AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') -}))(); +export type AgentProfileZodInput = z.input; + +export type AgentProfileZodOutput = z.output; -export type AssignSmsLineCampaignResponse422ApplicationProblemPlusJsonZodInput = z.input; +export const zAgentProfileAvatarContentType = /* @__PURE__ */ (() => openEnum([ + 'image/jpeg', + 'image/png', + 'image/webp' +]))(); -export type AssignSmsLineCampaignResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type AgentProfileAvatarContentTypeZodInput = z.input; -export const zAssignSmsLineCampaignResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export type AgentProfileAvatarContentTypeZodOutput = z.output; + +export const zAgentProfileAvatarUploadFormFields = /* @__PURE__ */ (() => z.object({}).catchall(z.string()))(); + +export type AgentProfileAvatarUploadFormFieldsZodInput = z.input; + +export type AgentProfileAvatarUploadFormFieldsZodOutput = z.output; + +export const zAgentProfileAvatarUpload = /* @__PURE__ */ (() => z.looseObject({ + expiresAt: z.string(), + formFields: zAgentProfileAvatarUploadFormFields, + uploadId: z.string(), + uploadUrl: z.string() }))(); -export type AssignSmsLineCampaignResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type AgentProfileAvatarUploadZodInput = z.input; -export type AssignSmsLineCampaignResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type AgentProfileAvatarUploadZodOutput = z.output; -export const zAssignSmsLineCampaignResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zApiKey = /* @__PURE__ */ (() => z.looseObject({ + apiKeyId: z.string(), + createdAt: z.string(), + createdByAccountId: z.string(), + expiresAt: z.string().nullable(), + name: z.string(), + permissions: z.array(z.string()), + permissionsUpdatedAt: z.string().nullable(), + projectId: z.string(), + revokedAt: z.string().nullable() }))(); -export type AssignSmsLineCampaignResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Campaign context unavailable'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-context-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileRequestApplicationJson = z.looseObject({ +export type ApiKeyZodInput = z.input; + +export type ApiKeyZodOutput = z.output; + +export const zApiKeyPermission = /* @__PURE__ */ (() => openEnum([ + 'events:read', + 'events:write', + 'platforms:read', + 'platforms:write', + 'project:read', + 'project:write' +]))(); + +export type ApiKeyPermissionZodInput = z.input; + +export type ApiKeyPermissionZodOutput = z.output; + +export const zAssignSmsLineCampaignRequest = z.looseObject({ + campaignId: z.string(), + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); + +export type AssignSmsLineCampaignRequestZodInput = z.input; + +export type AssignSmsLineCampaignRequestZodOutput = z.output; + +export const zAssignVoiceLineProfileRequest = z.looseObject({ expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), profileId: z.string() }); -export type AssignVoiceLineProfileRequestApplicationJsonZodInput = z.input; +export type AssignVoiceLineProfileRequestZodInput = z.input; -export type AssignVoiceLineProfileRequestApplicationJsonZodOutput = z.output; +export type AssignVoiceLineProfileRequestZodOutput = z.output; -export const zAssignVoiceLineProfileResponse200ApplicationJson = z.looseObject({ - profileId: z.string().optional(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), +export const zAttachment = z.looseObject({ + contentType: z.string(), + createdAt: z.string(), + filename: z.string().optional(), + id: z.string(), + metadata: z.looseObject({}).optional(), projectId: z.string(), - resourceId: z.string(), - resourceVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + sizeBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), updatedAt: z.string() }); -export type AssignVoiceLineProfileResponse200ApplicationJsonZodInput = z.input; - -export type AssignVoiceLineProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') - }) -]))(); - -export type AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignVoiceLineProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Default Profile Assignment Forbidden'), - type: z.literal('https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }) -]))(); - -export type AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignVoiceLineProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type AttachmentZodInput = z.input; -export type AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type AttachmentZodOutput = z.output; -export type AssignVoiceLineProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zAttachmentNotReadyRetryAfter = /* @__PURE__ */ (() => z.enum(['5']))(); -export type AssignVoiceLineProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type AttachmentNotReadyRetryAfterZodInput = z.input; -export type AssignVoiceLineProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type AttachmentNotReadyRetryAfterZodOutput = z.output; -export const zAssignVoiceLineProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zAttachmentPage = /* @__PURE__ */ (() => z.looseObject({ + items: z.array(zAttachment), + nextPageToken: z.string().optional() }))(); -export type AssignVoiceLineProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type AttachmentPageZodInput = z.input; -export type AssignVoiceLineProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type AttachmentPageZodOutput = z.output; -export const zAssignVoiceLineProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zAuthorizedOAuthApplicationRedirectUri = /* @__PURE__ */ (() => z.looseObject({ + default: z.boolean(), + uri: z.string() }))(); -export type AssignVoiceLineProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type AuthorizedOAuthApplicationRedirectUriZodInput = z.input; -export type AssignVoiceLineProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type AuthorizedOAuthApplicationRedirectUriZodOutput = z.output; -export const zAssignVoiceLineProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +/** + * The OAuth application authorized by the authenticated user. + */ +export const zAuthorizedOAuthApplication = /* @__PURE__ */ (() => z.looseObject({ + applicationType: z.string(), + clientId: z.string(), + createdAt: z.string(), + description: z.string().nullable(), + id: z.string(), + isFirstParty: z.boolean(), + name: z.string(), + redirectUris: z.array(zAuthorizedOAuthApplicationRedirectUri), + scopes: z.array(z.string()), + updatedAt: z.string(), + usesPkce: z.boolean() +}))(); -export type AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type AuthorizedOAuthApplicationZodInput = z.input; -export type AssignVoiceLineProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type AuthorizedOAuthApplicationZodOutput = z.output; -export const zAuthorization_Problem_INSUFFICIENT_SCOPE_403 = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INSUFFICIENT_SCOPE'), - detail: z.string().optional(), - instance: z.string().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Insufficient Scope'), - type: z.literal('https://photon.codes/docs/problems/insufficient-scope') +export const zAuthorizedApplication = /* @__PURE__ */ (() => z.looseObject({ + application: zAuthorizedOAuthApplication, + authorizationId: z.string(), + grantedScopes: z.array(z.string()), + oauthResource: z.string().nullable() }))(); -export type Authorization_Problem_INSUFFICIENT_SCOPE_403ZodInput = z.input; - -export type Authorization_Problem_INSUFFICIENT_SCOPE_403ZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_ORGANIZATION_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Campaign belongs to another organization'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-organization-mismatch') - }) -]))(); - -export type AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignVoiceLineProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson = z.looseObject({ - updates: z.array(z.looseObject({ - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - profileId: z.string().nullable(), - resourceId: z.string() - })) -}); +export type AuthorizedApplicationZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonZodInput = z.input; +export type AuthorizedApplicationZodOutput = z.output; -export type BatchUpdateVoiceLineProfileAssignmentsRequestApplicationJsonZodOutput = z.output; +export const zAvailableProjectSlug = /* @__PURE__ */ (() => z.looseObject({ + available: z.literal(true), + slug: z.string() +}))(); -export const zBatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson = z.looseObject({ - assignments: z.array(z.looseObject({ - profileId: z.string().optional(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), - projectId: z.string(), - resourceId: z.string(), - resourceVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() - })) -}); +export type AvailableProjectSlugZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonZodInput = z.input; - -export type BatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type BatchUpdateVoiceLineProfileAssignmentsResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') - }) -]))(); - -export type BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type BatchUpdateVoiceLineProfileAssignmentsResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Default Profile Assignment Forbidden'), - type: z.literal('https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }) -]))(); - -export type BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type BatchUpdateVoiceLineProfileAssignmentsResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export type AvailableProjectSlugZodOutput = z.output; + +export const zBeginInvitationSsoRequest = /* @__PURE__ */ (() => z.looseObject({ + returnTo: z.string(), + token: z.string() }))(); -export type BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type BeginInvitationSsoRequestZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginInvitationSsoRequestZodOutput = z.output; -export const zBatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +/** + * Stable provider-neutral failure category. + */ +export const zBillingOperationFailureCode = /* @__PURE__ */ (() => openEnum([ + 'payment_method_required', + 'payment_failed', + 'not_provisioned', + 'invalid_target', + 'internal' +]))(); -export type BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type BillingOperationFailureCodeZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingOperationFailureCodeZodOutput = z.output; -export const zBatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zBillingOperationFailureDetail = /* @__PURE__ */ (() => openEnum([ + 'cancellation_scheduled', + 'feature_not_sold_by_plan', + 'feature_not_found', + 'payment_timeout', + 'plan_activation_timeout', + 'plan_not_found', + 'quantity_out_of_range', + 'target_rejected' +]))(); -export type BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BillingOperationFailureDetailZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingOperationFailureDetailZodOutput = z.output; -export const zBatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zBillingOperationFailure = /* @__PURE__ */ (() => z.looseObject({ + code: zBillingOperationFailureCode, + detail: zBillingOperationFailureDetail.nullable(), + retryable: z.boolean() }))(); -export type BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type BillingOperationFailureZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingOperationFailureZodOutput = z.output; -export const zBatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +export const zBillingOperationKind = /* @__PURE__ */ (() => openEnum(['change_plan', 'adjust_fixed_charge_quantity']))(); -export type BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type BillingOperationKindZodInput = z.input; -export type BatchUpdateVoiceLineProfileAssignmentsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingOperationKindZodOutput = z.output; -export const zBeginInvitationSsoRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - returnTo: z.string(), - token: z.string() +export const zBillingOperationResult = /* @__PURE__ */ (() => z.looseObject({ + type: z.literal('version'), + version: z.string() }))(); -export type BeginInvitationSsoRequestApplicationJsonZodInput = z.input; +export type BillingOperationResultZodInput = z.input; -export type BeginInvitationSsoRequestApplicationJsonZodOutput = z.output; +export type BillingOperationResultZodOutput = z.output; -export const zBeginInvitationSsoResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() +export const zBillingPlanEntitlement = /* @__PURE__ */ (() => z.looseObject({ + featureKey: z.string(), + value: z.string() }))(); -export type BeginInvitationSsoResponse200ApplicationJsonZodInput = z.input; +export type BillingPlanEntitlementZodInput = z.input; -export type BeginInvitationSsoResponse200ApplicationJsonZodOutput = z.output; +export type BillingPlanEntitlementZodOutput = z.output; -export const zBeginInvitationSsoResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) +export const zBillingPlanInterval = /* @__PURE__ */ (() => openEnum([ + 'weekly', + 'monthly', + 'quarterly', + 'semiannual', + 'yearly' ]))(); -export type BeginInvitationSsoResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type BillingPlanIntervalZodInput = z.input; -export type BeginInvitationSsoResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingPlanIntervalZodOutput = z.output; -export const zBeginInvitationSsoResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') +export const zCancelSubscriptionRequest = /* @__PURE__ */ (() => z.looseObject({ + category: z.string() }))(); -export type BeginInvitationSsoResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionRequestZodInput = z.input; -export type BeginInvitationSsoResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionRequestZodOutput = z.output; -export const zBeginInvitationSsoResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') +export const zCancelSubscriptionResponse = /* @__PURE__ */ (() => z.looseObject({ + cancellationScheduled: z.boolean(), + cancelsAt: z.string().nullable(), + category: z.string() }))(); -export type BeginInvitationSsoResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionResponseZodInput = z.input; -export type BeginInvitationSsoResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionResponseZodOutput = z.output; -export const zBeginInvitationSsoResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') -}))(); +export const zCaptchaProvider = /* @__PURE__ */ (() => openEnum(['turnstile', 'hcaptcha']))(); -export type BeginInvitationSsoResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type CaptchaProviderZodInput = z.input; -export type BeginInvitationSsoResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type CaptchaProviderZodOutput = z.output; -export const zBeginInvitationSsoResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zChangePlanRequest = /* @__PURE__ */ (() => z.looseObject({ + category: z.string(), + planCode: z.string() }))(); -export type BeginInvitationSsoResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ChangePlanRequestZodInput = z.input; -export type BeginInvitationSsoResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ChangePlanRequestZodOutput = z.output; -export const zBeginInvitationSsoResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zClickHouseSqlQueryRequest = /* @__PURE__ */ (() => z.looseObject({ + parameters: z.object({}).catchall(z.string()).optional(), + sql: z.string() }))(); -export type BeginInvitationSsoResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ClickHouseSqlQueryRequestZodInput = z.input; -export type BeginInvitationSsoResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ClickHouseSqlQueryRequestZodOutput = z.output; -export const zBeginInvitationSsoResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zCommitAccountProfilePictureRequest = /* @__PURE__ */ (() => z.looseObject({ + uploadId: z.string() }))(); -export type BeginInvitationSsoResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CommitAccountProfilePictureRequestZodInput = z.input; -export type BeginInvitationSsoResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAccountProfilePictureRequestZodOutput = z.output; -export const zBeginInvitationSsoResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); +export const zCommitAgentProfileAvatarRequest = /* @__PURE__ */ (() => z.looseObject({ + uploadId: z.string() +}))(); -export type BeginInvitationSsoResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CommitAgentProfileAvatarRequestZodInput = z.input; -export type BeginInvitationSsoResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAgentProfileAvatarRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - returnTo: z.string() +export const zConfirmAccountPhoneVerificationRequest = /* @__PURE__ */ (() => z.looseObject({ + code: z.string(), + phoneNumber: z.string() }))(); -export type BeginOrganizationAuthenticationRequestApplicationJsonZodInput = z.input; +export type ConfirmAccountPhoneVerificationRequestZodInput = z.input; -export type BeginOrganizationAuthenticationRequestApplicationJsonZodOutput = z.output; +export type ConfirmAccountPhoneVerificationRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() +export const zConnectEmailDomainRequest = /* @__PURE__ */ (() => z.looseObject({ + domain: z.string() }))(); -export type BeginOrganizationAuthenticationResponse200ApplicationJsonZodInput = z.input; +export type ConnectEmailDomainRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse200ApplicationJsonZodOutput = z.output; +export type ConnectEmailDomainRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); +export const zConnectTelegramBotRequest = /* @__PURE__ */ (() => z.looseObject({}))(); -export type BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectTelegramBotRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectTelegramBotRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') +export const zConnectWhatsappBusinessRequest = /* @__PURE__ */ (() => z.looseObject({ + code: z.string(), + phoneNumberId: z.string(), + wabaId: z.string() }))(); -export type BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectWhatsappBusinessRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') +export const zCreateAccountServiceKeyRequest = /* @__PURE__ */ (() => z.looseObject({ + expiresAt: z.string().optional(), + name: z.string() }))(); -export type BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountServiceKeyRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') +export const zCreateAccountServiceKeyResponse = /* @__PURE__ */ (() => z.looseObject({ + secret: z.string(), + serviceKey: zAccountServiceKey }))(); -export type BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyResponseZodInput = z.input; -export type BeginOrganizationAuthenticationResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountServiceKeyResponseZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zCreateAgentProfileAvatarUploadRequest = /* @__PURE__ */ (() => z.looseObject({ + contentType: zAgentProfileAvatarContentType }))(); -export type BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAgentProfileAvatarUploadRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAgentProfileAvatarUploadRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zCreateAppInstallationRequestRequest = /* @__PURE__ */ (() => z.looseObject({ + appId: z.string(), + clientAssertion: z.string(), + redirectUri: z.string(), + state: z.string() }))(); -export type BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAppInstallationRequestRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAppInstallationRequestRequestZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zCreateAppInstallationRequestResponse = /* @__PURE__ */ (() => z.looseObject({ + appId: z.string(), + appVersion: z.string(), + createdAt: z.string(), + redirectUri: z.string(), + requestId: z.string(), + state: z.string() }))(); -export type BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAppInstallationRequestResponseZodInput = z.input; -export type BeginOrganizationAuthenticationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAppInstallationRequestResponseZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); +export const zCreateOrganizationPaymentMethodCheckoutResponse = /* @__PURE__ */ (() => z.looseObject({ + checkoutUrl: z.string() +}))(); -export type BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutResponseZodInput = z.input; -export type BeginOrganizationAuthenticationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutResponseZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - returnTo: z.string() +export const zCreateOrganizationSetupIntentResponse = /* @__PURE__ */ (() => z.looseObject({ + clientSecret: z.string(), + publishableKey: z.string() }))(); -export type BeginOrganizationClosureAuthenticationRequestApplicationJsonZodInput = z.input; +export type CreateOrganizationSetupIntentResponseZodInput = z.input; -export type BeginOrganizationClosureAuthenticationRequestApplicationJsonZodOutput = z.output; +export type CreateOrganizationSetupIntentResponseZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() -}))(); +/** + * @default "sso" + */ +export const zCreateOrganizationSsoPortalLinkRequestIntent = /* @__PURE__ */ (() => openEnum(['sso', 'domain_verification']))(); -export type BeginOrganizationClosureAuthenticationResponse200ApplicationJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkRequestIntentZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse200ApplicationJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkRequestIntentZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); +export const zCreateOrganizationSsoPortalLinkRequest = /* @__PURE__ */ (() => z.looseObject({ + intent: zCreateOrganizationSsoPortalLinkRequestIntent.optional(), + returnTo: z.string() +}))(); -export type BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkRequestZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') +export const zCreateOrganizationSsoPortalLinkResponse = /* @__PURE__ */ (() => z.looseObject({ + url: z.string() }))(); -export type BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkResponseZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkResponseZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') +export const zCreateProjectApiKeyRequest = /* @__PURE__ */ (() => z.looseObject({ + expiresAt: z.string().optional(), + name: z.string(), + permissions: z.array(zApiKeyPermission) }))(); -export type BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectApiKeyRequestZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectApiKeyRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') +export const zCreateProjectApiKeyResponse = /* @__PURE__ */ (() => z.looseObject({ + apiKey: zApiKey, + secret: z.string() }))(); -export type BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectApiKeyResponseZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectApiKeyResponseZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zCreateProjectRequest = /* @__PURE__ */ (() => z.looseObject({ + name: z.string(), + slug: z.string() }))(); -export type BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectRequestZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zCreateWhatsappSharedLineAssignmentRequest = /* @__PURE__ */ (() => z.looseObject({ + email: z.string().optional(), + firstName: z.string().optional(), + handle: z.string(), + lastName: z.string().optional() }))(); -export type BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappSharedLineAssignmentRequestZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappSharedLineAssignmentRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zCreateWhatsappVoipSenderRequest = /* @__PURE__ */ (() => z.looseObject({ + displayName: z.string().optional(), + voipResourceId: z.string() }))(); -export type BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderRequestZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); +export const zCreatedAppInstallationDelivery = /* @__PURE__ */ (() => z.looseObject({ + clientId: z.string(), + clientSecret: z.string(), + installationId: z.string(), + status: z.literal('created') +}))(); -export type BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreatedAppInstallationDeliveryZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreatedAppInstallationDeliveryZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - returnTo: z.string() +export const zDedicatedProjectPlatformSettings = /* @__PURE__ */ (() => z.looseObject({ + mode: z.literal('dedicated') }))(); -export type BeginOrganizationSsoAdmissionRequestApplicationJsonZodInput = z.input; +export type DedicatedProjectPlatformSettingsZodInput = z.input; -export type BeginOrganizationSsoAdmissionRequestApplicationJsonZodOutput = z.output; +export type DedicatedProjectPlatformSettingsZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() -}))(); +export const zDeleteVoiceProfileForceInput = /* @__PURE__ */ (() => openEnum(['true', 'false']))(); -export type BeginOrganizationSsoAdmissionResponse200ApplicationJsonZodInput = z.input; +export type DeleteVoiceProfileForceInputZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse200ApplicationJsonZodOutput = z.output; +export type DeleteVoiceProfileForceInputZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); +export const zDeleteVoiceProfileOutboundResponse = z.looseObject({ + outbound: z.null(), + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileOutboundResponseZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileOutboundResponseZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') +export const zDeviceAuthorizeResponse = /* @__PURE__ */ (() => z.looseObject({ + device_code: z.string(), + expires_in: z.number(), + interval: z.number(), + user_code: z.string(), + verification_uri: z.string(), + verification_uri_complete: z.string() }))(); -export type BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceAuthorizeResponseZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceAuthorizeResponseZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') +export const zDeviceCodeGrantRequest = /* @__PURE__ */ (() => z.looseObject({ + device_code: z.string(), + grant_type: z.literal('urn:ietf:params:oauth:grant-type:device_code') }))(); -export type BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceCodeGrantRequestZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceCodeGrantRequestZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') +export const zDeviceTokenBadRequestResponse = /* @__PURE__ */ (() => z.looseObject({ + error: z.string(), + error_description: z.string().optional() }))(); -export type BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceTokenBadRequestResponseZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceTokenBadRequestResponseZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +/** + * Profile of the authenticated user. + */ +export const zDeviceTokenResponseUser = /* @__PURE__ */ (() => z.looseObject({ + email: z.string(), + first_name: z.string().nullable(), + id: z.string(), + last_name: z.string().nullable() }))(); -export type BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceTokenResponseUserZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceTokenResponseUserZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zDeviceTokenResponse = /* @__PURE__ */ (() => z.looseObject({ + access_token: z.string(), + authentication_method: z.string().optional(), + expires_in: z.number(), + refresh_token: z.string(), + user: zDeviceTokenResponseUser }))(); -export type BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceTokenResponseZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceTokenResponseZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zDisableOrganizationSsoRequest = /* @__PURE__ */ (() => z.looseObject({ + domains: z.array(z.string()).optional(), + expectedVersion: z.string() }))(); -export type BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoRequestZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoRequestZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zDownloadAttachmentResponse = /* @__PURE__ */ (() => z.unknown())(); + +export type DownloadAttachmentResponseZodInput = z.input; + +export type DownloadAttachmentResponseZodOutput = z.output; + +export const zExistingAppInstallationDeliveryStatus = /* @__PURE__ */ (() => openEnum([ + 'delivery_consumed', + 'recovery_required', + 'revocation_pending', + 'revoked' ]))(); -export type BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ExistingAppInstallationDeliveryStatusZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ExistingAppInstallationDeliveryStatusZodOutput = z.output; -export const zCancelOperationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), +export const zExistingAppInstallationDelivery = /* @__PURE__ */ (() => z.looseObject({ + installationId: z.string(), + status: zExistingAppInstallationDeliveryStatus +}))(); + +export type ExistingAppInstallationDeliveryZodInput = z.input; + +export type ExistingAppInstallationDeliveryZodOutput = z.output; + +export const zFailedBillingOperation = /* @__PURE__ */ (() => z.looseObject({ + failure: zBillingOperationFailure, + kind: zBillingOperationKind, operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() + resolvedAt: z.string().nullable(), + result: z.null(), + status: z.literal('failed'), + submittedAt: z.string().nullable() }))(); -export type CancelOperationResponse200ApplicationJsonZodInput = z.input; +export type FailedBillingOperationZodInput = z.input; -export type CancelOperationResponse200ApplicationJsonZodOutput = z.output; +export type FailedBillingOperationZodOutput = z.output; -export const zCancelOperationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zFixedChargeModel = /* @__PURE__ */ (() => openEnum([ + 'graduated', + 'standard', + 'volume' ]))(); -export type CancelOperationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type FixedChargeModelZodInput = z.input; -export type CancelOperationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type FixedChargeModelZodOutput = z.output; -export const zCancelOperationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('OPERATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Operation Not Found'), - type: z.literal('https://photon.codes/docs/problems/operation-not-found') -}))(); +export const zFixedChargeTier = z.looseObject({ + flatAmount: z.string().nullable(), + fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + perUnitAmount: z.string().nullable(), + toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() +}); -export type CancelOperationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type FixedChargeTierZodInput = z.input; -export type CancelOperationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type FixedChargeTierZodOutput = z.output; -export const zCancelOperationResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('OPERATION_NOT_CANCELLABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Operation Not Cancellable'), - type: z.literal('https://photon.codes/docs/problems/operation-not-cancellable') +export const zFixedChargePricing = /* @__PURE__ */ (() => z.looseObject({ + amount: z.string().nullable(), + tiers: z.array(zFixedChargeTier) }))(); -export type CancelOperationResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type FixedChargePricingZodInput = z.input; -export type CancelOperationResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type FixedChargePricingZodOutput = z.output; -export const zCancelOperationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zFixedCharge = z.looseObject({ + chargeModel: zFixedChargeModel, + displayName: z.string(), + fixedChargeCode: z.string(), + payInAdvance: z.boolean(), + pricing: zFixedChargePricing, + prorated: z.boolean(), + quantity: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type CancelOperationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type FixedChargeZodInput = z.input; -export type CancelOperationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type FixedChargeZodOutput = z.output; -export const zCancelOperationResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zGetWhatsappBusinessVerificationCodeResponse = /* @__PURE__ */ (() => z.looseObject({ + code: z.string(), + receivedAt: z.string() }))(); -export type CancelOperationResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessVerificationCodeResponseZodInput = z.input; -export type CancelOperationResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessVerificationCodeResponseZodOutput = z.output; -export const zCancelOperationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zGetWhatsappSignupConfigResponse = /* @__PURE__ */ (() => z.looseObject({ + configId: z.string(), + graphVersion: z.string(), + scopes: z.array(z.string()) }))(); -export type CancelOperationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappSignupConfigResponseZodInput = z.input; -export type CancelOperationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappSignupConfigResponseZodOutput = z.output; -export const zCancelOperationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zImessageHandle = /* @__PURE__ */ (() => z.string())(); + +export type ImessageHandleZodInput = z.input; + +export type ImessageHandleZodOutput = z.output; + +export const zCreateSharedLineAssignmentRequest = /* @__PURE__ */ (() => z.looseObject({ + email: z.string().optional(), + firstName: z.string().optional(), + handle: zImessageHandle, + lastName: z.string().optional() +}))(); + +export type CreateSharedLineAssignmentRequestZodInput = z.input; + +export type CreateSharedLineAssignmentRequestZodOutput = z.output; + +export const zInvitationEnterpriseLoginRequest = /* @__PURE__ */ (() => z.looseObject({ + invitationToken: z.string(), + returnTo: z.string() }))(); -export type CancelOperationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type InvitationEnterpriseLoginRequestZodInput = z.input; -export type CancelOperationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type InvitationEnterpriseLoginRequestZodOutput = z.output; -export const zCancelOperationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +/** + * What produced the invoice. + */ +export const zInvoiceKind = /* @__PURE__ */ (() => openEnum([ + 'subscription', + 'one_off', + 'credit' ]))(); -export type CancelOperationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type InvoiceKindZodInput = z.input; -export type CancelOperationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type InvoiceKindZodOutput = z.output; -export const zCancelSubscriptionRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - category: z.string() -}))(); +/** + * Provider-neutral payment status. + */ +export const zInvoicePaymentStatus = /* @__PURE__ */ (() => openEnum([ + 'pending', + 'succeeded', + 'failed' +]))(); -export type CancelSubscriptionRequestApplicationJsonZodInput = z.input; +export type InvoicePaymentStatusZodInput = z.input; -export type CancelSubscriptionRequestApplicationJsonZodOutput = z.output; +export type InvoicePaymentStatusZodOutput = z.output; -export const zCancelSubscriptionResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellationScheduled: z.boolean(), - cancelsAt: z.string().nullable(), - category: z.string() -}))(); +export const zJsonValue = /* @__PURE__ */ (() => z.union([ + z.string(), + z.number(), + z.boolean(), + z.array(z.lazy((): any => zJsonValue)), + z.object({}).catchall(z.lazy((): any => zJsonValue)) +]).nullable())(); -export type CancelSubscriptionResponse200ApplicationJsonZodInput = z.input; - -export type CancelSubscriptionResponse200ApplicationJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type CancelSubscriptionResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CancelSubscriptionResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_REQUEST_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Idempotency Request In Progress'), - type: z.literal('https://photon.codes/docs/problems/idempotency-request-in-progress') - }) -]))(); - -export type CancelSubscriptionResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CancelSubscriptionResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export type JsonValueZodInput = z.input; + +export type JsonValueZodOutput = z.output; + +export const zAccountDeletedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ACCOUNT_DELETED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(410), + title: z.literal('Account Deleted'), + type: z.literal('https://photon.codes/docs/problems/account-deleted') +}).catchall(zJsonValue))(); -export type CancelSubscriptionResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Idempotency Unavailable'), - type: z.literal('https://photon.codes/docs/problems/idempotency-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type CancelSubscriptionResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type CancelSubscriptionResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - category: z.string(), - planCode: z.string() -}))(); +export type AccountDeletedProblemZodInput = z.input; -export type ChangePlanRequestApplicationJsonZodInput = z.input; - -export type ChangePlanRequestApplicationJsonZodOutput = z.output; - -export const zChangePlanResponse200ApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - failure: z.null(), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.string().nullable(), - result: z.looseObject({ - type: z.literal('version'), - version: z.string() - }), - status: z.literal('succeeded'), - submittedAt: z.string().nullable() - }), - z.looseObject({ - failure: z.looseObject({ - code: openEnum([ - 'payment_method_required', - 'payment_failed', - 'not_provisioned', - 'invalid_target', - 'internal' - ]), - detail: openEnum([ - 'cancellation_scheduled', - 'feature_not_sold_by_plan', - 'feature_not_found', - 'payment_timeout', - 'plan_activation_timeout', - 'plan_not_found', - 'quantity_out_of_range', - 'target_rejected' - ]).nullable(), - retryable: z.boolean() - }), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.string().nullable(), - result: z.null(), - status: z.literal('failed'), - submittedAt: z.string().nullable() - }) -]))(); - -export type ChangePlanResponse200ApplicationJsonZodInput = z.input; - -export type ChangePlanResponse200ApplicationJsonZodOutput = z.output; - -export const zChangePlanResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - failure: z.null(), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.null(), - result: z.null(), - status: z.literal('pending'), - submittedAt: z.string().nullable() -}))(); +export type AccountDeletedProblemZodOutput = z.output; -export type ChangePlanResponse202ApplicationJsonZodInput = z.input; - -export type ChangePlanResponse202ApplicationJsonZodOutput = z.output; - -export const zChangePlanResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type ChangePlanResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ChangePlanResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_REQUEST_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Idempotency Request In Progress'), - type: z.literal('https://photon.codes/docs/problems/idempotency-request-in-progress') - }) -]))(); - -export type ChangePlanResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), +export const zAccountNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ACCOUNT_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); + status: z.literal(404), + title: z.literal('Account Not Found'), + type: z.literal('https://photon.codes/docs/problems/account-not-found') +}).catchall(zJsonValue))(); -export type ChangePlanResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ChangePlanResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type AccountNotFoundProblemZodInput = z.input; -export type ChangePlanResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Idempotency Unavailable'), - type: z.literal('https://photon.codes/docs/problems/idempotency-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ChangePlanResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ChangePlanResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCheckProjectSlugAvailabilityResponse200ApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - available: z.literal(true), - slug: z.string() - }), - z.looseObject({ - available: z.literal(false), - reason: openEnum([ - 'reserved', - 'retired', - 'taken', - 'too_short' - ]), - slug: z.string(), - suggestion: z.string().optional() - }) -]))(); - -export type CheckProjectSlugAvailabilityResponse200ApplicationJsonZodInput = z.input; - -export type CheckProjectSlugAvailabilityResponse200ApplicationJsonZodOutput = z.output; - -export const zCheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), +export type AccountNotFoundProblemZodOutput = z.output; + +export const zAccountOwnsOrganizationsProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ACCOUNT_OWNS_ORGANIZATIONS'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); - -export type CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CheckProjectSlugAvailabilityResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); + status: z.literal(409), + title: z.literal('Account Owns Organizations'), + type: z.literal('https://photon.codes/docs/problems/account-owns-organizations') +}).catchall(zJsonValue))(); -export type CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type AccountOwnsOrganizationsProblemZodInput = z.input; -export type CheckProjectSlugAvailabilityResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type AccountOwnsOrganizationsProblemZodOutput = z.output; -export const zCheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zAccountServiceKeyLimitReachedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ACCOUNT_SERVICE_KEY_LIMIT_REACHED'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(409), + title: z.literal('Account Service Key Limit Reached'), + type: z.literal('https://photon.codes/docs/problems/account-service-key-limit-reached') +}).catchall(zJsonValue))(); -export type CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type AccountServiceKeyLimitReachedProblemZodInput = z.input; -export type CheckProjectSlugAvailabilityResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type AccountServiceKeyLimitReachedProblemZodOutput = z.output; -export const zCheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zAccountServiceKeyNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ACCOUNT_SERVICE_KEY_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(404), + title: z.literal('Account Service Key Not Found'), + type: z.literal('https://photon.codes/docs/problems/account-service-key-not-found') +}).catchall(zJsonValue))(); -export type CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type AccountServiceKeyNotFoundProblemZodInput = z.input; -export type CheckProjectSlugAvailabilityResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type AccountServiceKeyNotFoundProblemZodOutput = z.output; -export const zCheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zApiKeyLimitReachedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('API_KEY_LIMIT_REACHED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CheckProjectSlugAvailabilityResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonZodInput = z.input; + status: z.literal(409), + title: z.literal('API Key Limit Reached'), + type: z.literal('https://photon.codes/docs/problems/api-key-limit-reached') +}).catchall(zJsonValue))(); -export type CheckProjectSlugAvailabilityResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ApiKeyLimitReachedProblemZodInput = z.input; -export const zClickHouseSqlQueryRequest = /* @__PURE__ */ (() => z.looseObject({ - parameters: z.object({}).catchall(z.string()).optional(), - sql: z.string() -}))(); +export type ApiKeyLimitReachedProblemZodOutput = z.output; -export type ClickHouseSqlQueryRequestZodInput = z.input; +export const zApiKeyNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('API_KEY_NOT_FOUND'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(404), + title: z.literal('API Key Not Found'), + type: z.literal('https://photon.codes/docs/problems/api-key-not-found') +}).catchall(zJsonValue))(); -export type ClickHouseSqlQueryRequestZodOutput = z.output; +export type ApiKeyNotFoundProblemZodInput = z.input; -export const zCommitAccountProfilePictureRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - uploadId: z.string() -}))(); +export type ApiKeyNotFoundProblemZodOutput = z.output; -export type CommitAccountProfilePictureRequestApplicationJsonZodInput = z.input; +export const zApiKeyRevokedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('API_KEY_REVOKED'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(409), + title: z.literal('API Key Revoked'), + type: z.literal('https://photon.codes/docs/problems/api-key-revoked') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureRequestApplicationJsonZodOutput = z.output; +export type ApiKeyRevokedProblemZodInput = z.input; -export const zCommitAccountProfilePictureResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() -}))(); +export type ApiKeyRevokedProblemZodOutput = z.output; -export type CommitAccountProfilePictureResponse200ApplicationJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse200ApplicationJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), +export const zAppInstallationAssertionInvalidProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('APP_INSTALLATION_ASSERTION_INVALID'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); + status: z.literal(401), + title: z.literal('Invalid Installation Client Assertion'), + type: z.literal('https://photon.codes/docs/problems/app-installation-assertion-invalid') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type AppInstallationAssertionInvalidProblemZodInput = z.input; -export type CommitAccountProfilePictureResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type AppInstallationAssertionInvalidProblemZodOutput = z.output; -export const zCommitAccountProfilePictureResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), +export const zAppInstallationAssertionReplayedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('APP_INSTALLATION_ASSERTION_REPLAYED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); + status: z.literal(409), + title: z.literal('Installation Assertion Already Used'), + type: z.literal('https://photon.codes/docs/problems/app-installation-assertion-replayed') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type AppInstallationAssertionReplayedProblemZodInput = z.input; -export type CommitAccountProfilePictureResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type AppInstallationAssertionReplayedProblemZodOutput = z.output; -export const zCommitAccountProfilePictureResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), +export const zAppInstallationConfigChangedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('APP_INSTALLATION_CONFIG_CHANGED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); + status: z.literal(409), + title: z.literal('Installation App Configuration Changed'), + type: z.literal('https://photon.codes/docs/problems/app-installation-config-changed') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export type AppInstallationConfigChangedProblemZodInput = z.input; + +export type AppInstallationConfigChangedProblemZodOutput = z.output; + +export const zAppInstallationDeliveryUnavailableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('APP_INSTALLATION_DELIVERY_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Installation Delivery Unavailable'), + type: z.literal('https://photon.codes/docs/problems/app-installation-delivery-unavailable') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type AppInstallationDeliveryUnavailableProblemZodInput = z.input; -export type CommitAccountProfilePictureResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type AppInstallationDeliveryUnavailableProblemZodOutput = z.output; -export const zCommitAccountProfilePictureResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zAssignmentExistsProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ASSIGNMENT_EXISTS'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type CommitAccountProfilePictureResponse503ApplicationProblemPlusJsonZodInput = z.input; + status: z.literal(409), + title: z.literal('Assignment Exists'), + type: z.literal('https://photon.codes/docs/problems/assignment-exists') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignmentExistsProblemZodInput = z.input; -export const zCommitAccountProfilePictureResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); +export type AssignmentExistsProblemZodOutput = z.output; -export type CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonZodInput = z.input; +export const zAssignmentNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ASSIGNMENT_NOT_FOUND'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(404), + title: z.literal('Assignment Not Found'), + type: z.literal('https://photon.codes/docs/problems/assignment-not-found') +}).catchall(zJsonValue))(); -export type CommitAccountProfilePictureResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignmentNotFoundProblemZodInput = z.input; -export const zCommitAgentProfileAvatarRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - uploadId: z.string() -}))(); +export type AssignmentNotFoundProblemZodOutput = z.output; -export type CommitAgentProfileAvatarRequestApplicationJsonZodInput = z.input; +export const zAttachmentConflictProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ATTACHMENT_CONFLICT'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(409), + title: z.literal('Attachment Conflict'), + type: z.literal('https://photon.codes/docs/problems/attachment-conflict') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarRequestApplicationJsonZodOutput = z.output; +export type AttachmentConflictProblemZodInput = z.input; -export const zCommitAgentProfileAvatarResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() -}))(); +export type AttachmentConflictProblemZodOutput = z.output; -export type CommitAgentProfileAvatarResponse200ApplicationJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse200ApplicationJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); - -export type CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), +export const zAttachmentNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ATTACHMENT_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); + title: z.literal('Attachment Not Found'), + type: z.literal('https://photon.codes/docs/problems/attachment-not-found') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type AttachmentNotFoundProblemZodInput = z.input; -export type CommitAgentProfileAvatarResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type AttachmentNotFoundProblemZodOutput = z.output; -export const zCommitAgentProfileAvatarResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), +export const zAttachmentNotReadyProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ATTACHMENT_NOT_READY'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); + status: z.literal(409), + title: z.literal('Attachment Not Ready'), + type: z.literal('https://photon.codes/docs/problems/attachment-not-ready') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type AttachmentNotReadyProblemZodInput = z.input; -export type CommitAgentProfileAvatarResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type AttachmentNotReadyProblemZodOutput = z.output; -export const zCommitAgentProfileAvatarResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), +export const zAttachmentUploadNotReadyProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ATTACHMENT_UPLOAD_NOT_READY'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); + status: z.literal(409), + title: z.literal('Attachment Upload Not Ready'), + type: z.literal('https://photon.codes/docs/problems/attachment-upload-not-ready') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export type AttachmentUploadNotReadyProblemZodInput = z.input; + +export type AttachmentUploadNotReadyProblemZodOutput = z.output; + +export const zBillingNotProvisionedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('BILLING_NOT_PROVISIONED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(503), + title: z.literal('Billing Not Provisioned'), + type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BillingNotProvisionedProblemZodInput = z.input; -export type CommitAgentProfileAvatarResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingNotProvisionedProblemZodOutput = z.output; -export const zCommitAgentProfileAvatarResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zCaptchaRequiredProblem = /* @__PURE__ */ (() => z.object({ + challengeContext: z.string(), + code: z.literal('CAPTCHA_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + provider: zCaptchaProvider, + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + siteKey: z.string(), + status: z.literal(403), + title: z.literal('Captcha Required'), + type: z.literal('https://photon.codes/docs/problems/captcha-required') +}).catchall(zJsonValue))(); -export type CommitAgentProfileAvatarResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAgentProfileAvatarResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAgentProfileAvatarResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundRequestApplicationJson = z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']) - }), - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type CaptchaRequiredProblemZodInput = z.input; -export type ConfigureVoiceProfileOutboundRequestApplicationJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundRequestApplicationJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse200ApplicationJson = z.looseObject({ - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }), - password: z.string().nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type CaptchaRequiredProblemZodOutput = z.output; -export type ConfigureVoiceProfileOutboundResponse200ApplicationJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse200ApplicationJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse201ApplicationJson = z.looseObject({ - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }), - password: z.string().nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export const zCreateAppInstallationRequestConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zAppInstallationAssertionReplayedProblem, + zAppInstallationConfigChangedProblem +]))(); -export type ConfigureVoiceProfileOutboundResponse201ApplicationJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse201ApplicationJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), +export type CreateAppInstallationRequestConflictProblemZodInput = z.input; + +export type CreateAppInstallationRequestConflictProblemZodOutput = z.output; + +export const zEmailDomainAlreadyConnectedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('EMAIL_DOMAIN_ALREADY_CONNECTED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); + status: z.literal(409), + title: z.literal('Email Domain Already Connected'), + type: z.literal('https://photon.codes/docs/problems/email-domain-already-connected') +}).catchall(zJsonValue))(); -export type ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Already Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-configured') - }) -]))(); - -export type ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type EmailDomainAlreadyConnectedProblemZodInput = z.input; + +export type EmailDomainAlreadyConnectedProblemZodOutput = z.output; + +export const zEmailDomainCapExceededProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('EMAIL_DOMAIN_CAP_EXCEEDED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(409), + title: z.literal('Email Domain Cap Exceeded'), + type: z.literal('https://photon.codes/docs/problems/email-domain-cap-exceeded') +}).catchall(zJsonValue))(); -export type ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type EmailDomainCapExceededProblemZodInput = z.input; -export type ConfigureVoiceProfileOutboundResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type EmailDomainCapExceededProblemZodOutput = z.output; -export const zConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zEntitlementRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ENTITLEMENT_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(402), + title: z.literal('Entitlement Required'), + type: z.literal('https://photon.codes/docs/problems/entitlement-required') +}).catchall(zJsonValue))(); -export type ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type EntitlementRequiredProblemZodInput = z.input; -export type ConfigureVoiceProfileOutboundResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type EntitlementRequiredProblemZodOutput = z.output; -export const zConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zFailedPreconditionProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('FAILED_PRECONDITION'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('Failed Precondition'), + type: z.literal('https://photon.codes/docs/problems/failed-precondition') +}).catchall(zJsonValue))(); -export type ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type FailedPreconditionProblemZodInput = z.input; -export type ConfigureVoiceProfileOutboundResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type FailedPreconditionProblemZodOutput = z.output; -export const zConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +export const zForbiddenProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('FORBIDDEN'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(403), + title: z.literal('Forbidden'), + type: z.literal('https://photon.codes/docs/problems/forbidden') +}).catchall(zJsonValue))(); -export type ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ForbiddenProblemZodInput = z.input; -export type ConfigureVoiceProfileOutboundResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ForbiddenProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.string(), - phoneNumber: z.string() -}))(); +export const zHttpErrorProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('HTTP_ERROR'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(400), + title: z.literal('Request Failed'), + type: z.literal('https://photon.codes/docs/problems/http-error') +}).catchall(zJsonValue))(); -export type ConfirmAccountPhoneVerificationRequestApplicationJsonZodInput = z.input; +export type HttpErrorProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationRequestApplicationJsonZodOutput = z.output; +export type HttpErrorProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() -}))(); +export const zIdempotencyKeyInvalidProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IDEMPOTENCY_KEY_INVALID'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(400), + title: z.literal('Idempotency Key Invalid'), + type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') +}).catchall(zJsonValue))(); -export type ConfirmAccountPhoneVerificationResponse200ApplicationJsonZodInput = z.input; +export type IdempotencyKeyInvalidProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse200ApplicationJsonZodOutput = z.output; +export type IdempotencyKeyInvalidProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), +export const zIdempotencyKeyRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); + title: z.literal('Idempotency Key Required'), + type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') +}).catchall(zJsonValue))(); -export type ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type IdempotencyKeyRequiredProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type IdempotencyKeyRequiredProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zConfigureVoiceProfileOutboundBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ConfigureVoiceProfileOutboundBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export const zConnectEmailDomainBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export const zConnectTelegramBotBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectTelegramBotBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectTelegramBotBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export const zConnectWhatsappBusinessBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse413ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectWhatsappBusinessBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateSharedLineAssignmentBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateSharedLineAssignmentBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateSharedLineAssignmentBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zCreateWhatsappSharedLineAssignmentBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappSharedLineAssignmentBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappSharedLineAssignmentBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCreateWhatsappVoipSenderBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zDeleteProjectBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteProjectBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteProjectBadRequestProblemZodOutput = z.output; -export const zConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zDisconnectWhatsappBusinessAccountBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem ]))(); -export type ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type DisconnectWhatsappBusinessAccountBadRequestProblemZodInput = z.input; -export type ConfirmAccountPhoneVerificationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type DisconnectWhatsappBusinessAccountBadRequestProblemZodOutput = z.output; -export const zConnectEmailDomainRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - domain: z.string() -}))(); +export const zIdempotencyKeyReusedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IDEMPOTENCY_KEY_REUSED'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(422), + title: z.literal('Idempotency Key Reused'), + type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') +}).catchall(zJsonValue))(); -export type ConnectEmailDomainRequestApplicationJsonZodInput = z.input; +export type IdempotencyKeyReusedProblemZodInput = z.input; -export type ConnectEmailDomainRequestApplicationJsonZodOutput = z.output; +export type IdempotencyKeyReusedProblemZodOutput = z.output; -export const zConnectEmailDomainResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zIdempotencyRequestInProgressProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IDEMPOTENCY_REQUEST_IN_PROGRESS'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(409), + title: z.literal('Idempotency Request In Progress'), + type: z.literal('https://photon.codes/docs/problems/idempotency-request-in-progress') +}).catchall(zJsonValue))(); -export type ConnectEmailDomainResponse202ApplicationJsonZodInput = z.input; +export type IdempotencyRequestInProgressProblemZodInput = z.input; -export type ConnectEmailDomainResponse202ApplicationJsonZodOutput = z.output; +export type IdempotencyRequestInProgressProblemZodOutput = z.output; -export const zConnectEmailDomainResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) +export const zCancelSubscriptionConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zFailedPreconditionProblem, + zIdempotencyRequestInProgressProblem ]))(); -export type ConnectEmailDomainResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionConflictProblemZodInput = z.input; -export type ConnectEmailDomainResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionConflictProblemZodOutput = z.output; -export const zConnectEmailDomainResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') -}))(); +export const zChangePlanConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zFailedPreconditionProblem, + zIdempotencyRequestInProgressProblem +]))(); -export type ConnectEmailDomainResponse402ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse402ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ConnectEmailDomainResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('EMAIL_DOMAIN_ALREADY_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Email Domain Already Connected'), - type: z.literal('https://photon.codes/docs/problems/email-domain-already-connected') - }), - z.looseObject({ - code: z.literal('EMAIL_DOMAIN_CAP_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Email Domain Cap Exceeded'), - type: z.literal('https://photon.codes/docs/problems/email-domain-cap-exceeded') - }) -]))(); - -export type ConnectEmailDomainResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ConnectEmailDomainResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type ChangePlanConflictProblemZodInput = z.input; + +export type ChangePlanConflictProblemZodOutput = z.output; + +export const zIdempotencyUnavailableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IDEMPOTENCY_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(503), + title: z.literal('Idempotency Unavailable'), + type: z.literal('https://photon.codes/docs/problems/idempotency-unavailable') +}).catchall(zJsonValue))(); -export type ConnectEmailDomainResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type IdempotencyUnavailableProblemZodInput = z.input; -export type ConnectEmailDomainResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type IdempotencyUnavailableProblemZodOutput = z.output; -export const zConnectEmailDomainResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zImessageModeDedicatedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('IMESSAGE_MODE_DEDICATED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('iMessage Mode Is Dedicated'), + type: z.literal('https://photon.codes/docs/problems/imessage-mode-dedicated') +}).catchall(zJsonValue))(); -export type ConnectEmailDomainResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ConnectEmailDomainResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ConnectEmailDomainResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({}))(); - -export type ConnectTelegramBotRequestApplicationJsonZodInput = z.input; - -export type ConnectTelegramBotRequestApplicationJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export type ImessageModeDedicatedProblemZodInput = z.input; -export type ConnectTelegramBotResponse202ApplicationJsonZodInput = z.input; - -export type ConnectTelegramBotResponse202ApplicationJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type ConnectTelegramBotResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectTelegramBotResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ConnectTelegramBotResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectTelegramBotResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('TELEGRAM_PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Telegram Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/telegram-project-deleted') - }), - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('TELEGRAM_PROVISION_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - operationId: z.string(), - operationUrl: z.string(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Telegram Provision In Progress'), - type: z.literal('https://photon.codes/docs/problems/telegram-provision-in-progress') - }) -]))(); - -export type ConnectTelegramBotResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectTelegramBotResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ConnectTelegramBotResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectTelegramBotResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type ImessageModeDedicatedProblemZodOutput = z.output; + +export const zInsufficientScopeProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INSUFFICIENT_SCOPE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(403), + title: z.literal('Insufficient Scope'), + type: z.literal('https://photon.codes/docs/problems/insufficient-scope') +}).catchall(zJsonValue))(); -export type ConnectTelegramBotResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type InsufficientScopeProblemZodInput = z.input; -export type ConnectTelegramBotResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type InsufficientScopeProblemZodOutput = z.output; -export const zConnectTelegramBotResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zInternalErrorProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INTERNAL_ERROR'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(500), + title: z.literal('Internal Server Error'), + type: z.literal('https://photon.codes/docs/problems/internal-error') +}).catchall(zJsonValue))(); -export type ConnectTelegramBotResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type InternalErrorProblemZodInput = z.input; -export type ConnectTelegramBotResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type InternalErrorProblemZodOutput = z.output; -export const zConnectTelegramBotResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zInvalidArgumentProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INVALID_ARGUMENT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(400), + title: z.literal('Invalid Argument'), + type: z.literal('https://photon.codes/docs/problems/invalid-argument') +}).catchall(zJsonValue))(); -export type ConnectTelegramBotResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type InvalidArgumentProblemZodInput = z.input; -export type ConnectTelegramBotResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type InvalidArgumentProblemZodOutput = z.output; -export const zConnectTelegramBotResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zCancelSubscriptionBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ConnectTelegramBotResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionBadRequestProblemZodInput = z.input; -export type ConnectTelegramBotResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.string(), - phoneNumberId: z.string(), - wabaId: z.string() -}))(); +export const zChangePlanBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ConnectWhatsappBusinessRequestApplicationJsonZodInput = z.input; +export type ChangePlanBadRequestProblemZodInput = z.input; -export type ConnectWhatsappBusinessRequestApplicationJsonZodOutput = z.output; +export type ChangePlanBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zCommitAccountProfilePictureBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem +]))(); -export type ConnectWhatsappBusinessResponse202ApplicationJsonZodInput = z.input; +export type CommitAccountProfilePictureBadRequestProblemZodInput = z.input; -export type ConnectWhatsappBusinessResponse202ApplicationJsonZodOutput = z.output; +export type CommitAccountProfilePictureBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) +export const zCommitAgentProfileAvatarBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem ]))(); -export type ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CommitAgentProfileAvatarBadRequestProblemZodInput = z.input; -export type ConnectWhatsappBusinessResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAgentProfileAvatarBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') -}))(); +export const zCreateAccountServiceKeyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem +]))(); -export type ConnectWhatsappBusinessResponse402ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyBadRequestProblemZodInput = z.input; -export type ConnectWhatsappBusinessResponse402ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountServiceKeyBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zCreateOrganizationPaymentMethodCheckoutBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutBadRequestProblemZodInput = z.input; -export type ConnectWhatsappBusinessResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutBadRequestProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_CLOSING'), +export const zCreateOrganizationSetupIntentBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); + +export type CreateOrganizationSetupIntentBadRequestProblemZodInput = z.input; + +export type CreateOrganizationSetupIntentBadRequestProblemZodOutput = z.output; + +export const zCreateProjectApiKeyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); + +export type CreateProjectApiKeyBadRequestProblemZodInput = z.input; + +export type CreateProjectApiKeyBadRequestProblemZodOutput = z.output; + +export const zCreateProjectBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); + +export type CreateProjectBadRequestProblemZodInput = z.input; + +export type CreateProjectBadRequestProblemZodOutput = z.output; + +export const zCreateWebhookDestinationBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); + +export type CreateWebhookDestinationBadRequestProblemZodInput = z.input; + +export type CreateWebhookDestinationBadRequestProblemZodOutput = z.output; + +export const zInvalidAttachmentRequestProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INVALID_ATTACHMENT_REQUEST'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') -}))(); + status: z.literal(400), + title: z.literal('Invalid Attachment Request'), + type: z.literal('https://photon.codes/docs/problems/invalid-attachment-request') +}).catchall(zJsonValue))(); -export type ConnectWhatsappBusinessResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectWhatsappBusinessResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectWhatsappBusinessResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type InvalidAttachmentRequestProblemZodInput = z.input; + +export type InvalidAttachmentRequestProblemZodOutput = z.output; + +export const zInvalidAuthContextProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INVALID_AUTH_CONTEXT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(500), + title: z.literal('Invalid Authentication Context'), + type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') +}).catchall(zJsonValue))(); -export type ConnectWhatsappBusinessResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type InvalidAuthContextProblemZodInput = z.input; -export type ConnectWhatsappBusinessResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type InvalidAuthContextProblemZodOutput = z.output; -export const zConnectWhatsappBusinessResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zAssignSmsLineCampaignInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ConnectWhatsappBusinessResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectWhatsappBusinessResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectWhatsappBusinessResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCountProjectsResponse200ApplicationJson = z.looseObject({ - count: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type AssignSmsLineCampaignInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse200ApplicationJsonZodInput = z.input; +export type AssignSmsLineCampaignInternalServerErrorProblemZodOutput = z.output; -export type CountProjectsResponse200ApplicationJsonZodOutput = z.output; +export const zAssignVoiceLineProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCountProjectsResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type AssignVoiceLineProfileInternalServerErrorProblemZodInput = z.input; + +export type AssignVoiceLineProfileInternalServerErrorProblemZodOutput = z.output; + +export const zBatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CountProjectsResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsInternalServerErrorProblemZodOutput = z.output; -export const zCountProjectsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zBeginInvitationSsoInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CountProjectsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type BeginInvitationSsoInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginInvitationSsoInternalServerErrorProblemZodOutput = z.output; -export const zCountProjectsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zBeginOrganizationAuthenticationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CountProjectsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationAuthenticationInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationAuthenticationInternalServerErrorProblemZodOutput = z.output; -export const zCountProjectsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zBeginOrganizationClosureAuthenticationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CountProjectsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationClosureAuthenticationInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationClosureAuthenticationInternalServerErrorProblemZodOutput = z.output; -export const zCountProjectsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zBeginOrganizationSsoAdmissionInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CountProjectsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationSsoAdmissionInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationSsoAdmissionInternalServerErrorProblemZodOutput = z.output; -export const zCountProjectsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCancelOperationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CountProjectsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CancelOperationInternalServerErrorProblemZodInput = z.input; -export type CountProjectsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelOperationInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - contentType: openEnum([ - 'image/jpeg', - 'image/png', - 'image/webp' - ]) -}))(); +export const zCancelSubscriptionInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadRequestApplicationJsonZodInput = z.input; +export type CancelSubscriptionInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadRequestApplicationJsonZodOutput = z.output; +export type CancelSubscriptionInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - expiresAt: z.string(), - formFields: z.object({}).catchall(z.string()), - uploadId: z.string(), - uploadUrl: z.string() -}))(); +export const zChangePlanInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse201ApplicationJsonZodInput = z.input; +export type ChangePlanInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse201ApplicationJsonZodOutput = z.output; +export type ChangePlanInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zCommitAccountProfilePictureInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CommitAccountProfilePictureInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAccountProfilePictureInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zConfigureVoiceProfileOutboundInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ConfigureVoiceProfileOutboundInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export const zConfirmAccountPhoneVerificationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ConfirmAccountPhoneVerificationInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfirmAccountPhoneVerificationInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export const zConnectEmailDomainInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export const zConnectTelegramBotInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectTelegramBotInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse413ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectTelegramBotInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zConnectWhatsappBusinessInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectWhatsappBusinessInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCreateAccountProfilePictureUploadInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountProfilePictureUploadInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountProfilePictureUploadInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zCreateAccountServiceKeyInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountServiceKeyInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCreateDefaultVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateDefaultVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type CreateAccountProfilePictureUploadResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateDefaultVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - expiresAt: z.string().optional(), - name: z.string() -}))(); +export const zCreateOrganizationPaymentMethodCheckoutInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountServiceKeyRequestApplicationJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyRequestApplicationJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - secret: z.string(), - serviceKey: z.looseObject({ - accountId: z.string(), - createdAt: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - revokedAt: z.string().nullable(), - serviceKeyId: z.string() - }) -}))(); - -export type CreateAccountServiceKeyResponse201ApplicationJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export const zCreateOrganizationSetupIntentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountServiceKeyResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSetupIntentInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSetupIntentInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_SERVICE_KEY_LIMIT_REACHED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Account Service Key Limit Reached'), - type: z.literal('https://photon.codes/docs/problems/account-service-key-limit-reached') -}))(); +export const zCreateOrganizationSsoPortalLinkInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountServiceKeyResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export const zCreateSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountServiceKeyResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type CreateSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export const zCreateVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAccountServiceKeyResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type CreateVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export type CreateAccountServiceKeyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateWhatsappSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCreateAccountServiceKeyResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type CreateWhatsappSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; + +export type CreateWhatsappSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; -export type CreateAccountServiceKeyResponse503ApplicationProblemPlusJsonZodInput = z.input; +export const zCreateWhatsappVoipSenderInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); + +export type CreateWhatsappVoipSenderInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderInternalServerErrorProblemZodOutput = z.output; -export const zCreateAccountServiceKeyResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zDeleteAccountInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteAccountInternalServerErrorProblemZodInput = z.input; -export type CreateAccountServiceKeyResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteAccountInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - contentType: openEnum([ - 'image/jpeg', - 'image/png', - 'image/webp' - ]) -}))(); +export const zDeleteVoiceProfileInboundInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadRequestApplicationJsonZodInput = z.input; +export type DeleteVoiceProfileInboundInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadRequestApplicationJsonZodOutput = z.output; +export type DeleteVoiceProfileInboundInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - expiresAt: z.string(), - formFields: z.object({}).catchall(z.string()), - uploadId: z.string(), - uploadUrl: z.string() -}))(); +export const zDeleteVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse201ApplicationJsonZodInput = z.input; +export type DeleteVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse201ApplicationJsonZodOutput = z.output; +export type DeleteVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zDeleteVoiceProfileOutboundInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileOutboundInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileOutboundInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export const zDisableOrganizationSsoInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export const zDisconnectWhatsappBusinessAccountInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type DisconnectWhatsappBusinessAccountInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type DisconnectWhatsappBusinessAccountInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zDownloadAttachmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DownloadAttachmentInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DownloadAttachmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetAccountInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetAccountInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAccountInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetAttachmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetAttachmentInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAttachmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zGetBillingOperationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetBillingOperationInternalServerErrorProblemZodInput = z.input; -export type CreateAgentProfileAvatarUploadResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetBillingOperationInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - appId: z.string(), - clientAssertion: z.string(), - redirectUri: z.string(), - state: z.string() -}))(); +export const zGetBillingOverviewInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestRequestApplicationJsonZodInput = z.input; +export type GetBillingOverviewInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestRequestApplicationJsonZodOutput = z.output; +export type GetBillingOverviewInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - appId: z.string(), - appVersion: z.string(), - createdAt: z.string(), - redirectUri: z.string(), - requestId: z.string(), - state: z.string() -}))(); +export const zGetDefaultVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse201ApplicationJsonZodInput = z.input; +export type GetDefaultVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse201ApplicationJsonZodOutput = z.output; +export type GetDefaultVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zGetOperationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type GetOperationInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOperationInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse401ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('APP_INSTALLATION_ASSERTION_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(401), - title: z.literal('Invalid Installation Client Assertion'), - type: z.literal('https://photon.codes/docs/problems/app-installation-assertion-invalid') -}))(); +export const zGetOrganizationBillingOverviewInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse401ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationBillingOverviewInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse401ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationBillingOverviewInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('APP_INSTALLATION_ASSERTION_REPLAYED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Installation Assertion Already Used'), - type: z.literal('https://photon.codes/docs/problems/app-installation-assertion-replayed') - }), - z.looseObject({ - code: z.literal('APP_INSTALLATION_CONFIG_CHANGED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Installation App Configuration Changed'), - type: z.literal('https://photon.codes/docs/problems/app-installation-config-changed') - }) +export const zGetOrganizationConnectionStatusInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationConnectionStatusInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationConnectionStatusInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetOrganizationPaymentMethodInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationPaymentMethodInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationPaymentMethodInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetOrganizationSsoConfigurationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationSsoConfigurationInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationSsoConfigurationInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetProjectImessagePlatformInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateAppInstallationRequestResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectImessagePlatformInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectImessagePlatformInternalServerErrorProblemZodOutput = z.output; -export const zCreateAppInstallationRequestResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zGetProjectWhatsappPlatformInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectWhatsappPlatformInternalServerErrorProblemZodInput = z.input; -export type CreateAppInstallationRequestResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectWhatsappPlatformInternalServerErrorProblemZodOutput = z.output; -export const zCreateDefaultVoiceProfileRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - mediaEncryption: openEnum(['auto', 'srtp']).optional(), - protocol: z.literal('sip') -}))(); +export const zGetResourceInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateDefaultVoiceProfileRequestApplicationJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileRequestApplicationJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse200ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type GetResourceInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse200ApplicationJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse201ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type GetResourceInternalServerErrorProblemZodOutput = z.output; -export type CreateDefaultVoiceProfileResponse201ApplicationJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_DEFAULT_PROFILE_EXISTS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Default Profile Exists'), - type: z.literal('https://photon.codes/docs/problems/voice-default-profile-exists') - }) -]))(); - -export type CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateDefaultVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zGetSmsLineCampaignAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetSmsLineCampaignAssignmentInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSmsLineCampaignAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateDefaultVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetVoiceLineProfileAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetVoiceLineProfileAssignmentInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetVoiceLineProfileAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zCreateDefaultVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zCreateDefaultVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zGetWhatsappBusinessAccountInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessAccountInternalServerErrorProblemZodInput = z.input; -export type CreateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessAccountInternalServerErrorProblemZodOutput = z.output; -export const zCreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - checkoutUrl: z.string() -}))(); +export const zGetWhatsappBusinessVerificationCodeInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse200ApplicationJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export type GetWhatsappBusinessVerificationCodeInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type GetWhatsappBusinessVerificationCodeInternalServerErrorProblemZodOutput = z.output; -export type CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PAYMENT_PROVIDER_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Payment Provider Not Ready'), - type: z.literal('https://photon.codes/docs/problems/payment-provider-not-ready') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - clientSecret: z.string(), - publishableKey: z.string() -}))(); +export const zGetWhatsappSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateOrganizationSetupIntentResponse200ApplicationJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse200ApplicationJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export type GetWhatsappSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type GetWhatsappSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; + +export const zGetWhatsappSignupConfigInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappSignupConfigInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationSetupIntentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappSignupConfigInternalServerErrorProblemZodOutput = z.output; -export const zCreateOrganizationSetupIntentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zInvalidReturnToProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('INVALID_RETURN_TO'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(400), + title: z.literal('Invalid Return To'), + type: z.literal('https://photon.codes/docs/problems/invalid-return-to') +}).catchall(zJsonValue))(); -export type CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type InvalidReturnToProblemZodInput = z.input; -export type CreateOrganizationSetupIntentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type InvalidReturnToProblemZodOutput = z.output; -export const zCreateOrganizationSetupIntentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zBeginInvitationSsoBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem ]))(); -export type CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type BeginInvitationSsoBadRequestProblemZodInput = z.input; -export type CreateOrganizationSetupIntentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginInvitationSsoBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - intent: openEnum(['sso', 'domain_verification']).optional(), - returnTo: z.string() -}))(); +export const zBeginOrganizationAuthenticationBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type CreateOrganizationSsoPortalLinkRequestApplicationJsonZodInput = z.input; +export type BeginOrganizationAuthenticationBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkRequestApplicationJsonZodOutput = z.output; +export type BeginOrganizationAuthenticationBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() -}))(); +export const zBeginOrganizationClosureAuthenticationBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse200ApplicationJsonZodInput = z.input; +export type BeginOrganizationClosureAuthenticationBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse200ApplicationJsonZodOutput = z.output; +export type BeginOrganizationClosureAuthenticationBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) +export const zBeginOrganizationSsoAdmissionBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem ]))(); -export type CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationSsoAdmissionBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationSsoAdmissionBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') -}))(); +export const zCreateOrganizationSsoPortalLinkBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') -}))(); +export const zDisableOrganizationSsoBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') -}))(); +export const zGetOrganizationSsoConfigurationBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationSsoConfigurationBadRequestProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationSsoConfigurationBadRequestProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zListAccountServiceKeysInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListAccountServiceKeysInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAccountServiceKeysInternalServerErrorProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zListAccountServiceKeysResponse = /* @__PURE__ */ (() => z.looseObject({ + serviceKeys: z.array(zAccountServiceKey) }))(); -export type CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListAccountServiceKeysResponseZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAccountServiceKeysResponseZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zListAttachmentsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListAttachmentsInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAttachmentsInternalServerErrorProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zListAuthorizedApplicationsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListAuthorizedApplicationsInternalServerErrorProblemZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAuthorizedApplicationsInternalServerErrorProblemZodOutput = z.output; -export const zCreateProjectApiKeyRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - expiresAt: z.string().optional(), - name: z.string(), - permissions: z.array(openEnum([ - 'events:read', - 'events:write', - 'platforms:read', - 'platforms:write', - 'project:read', - 'project:write' - ])) -}))(); - -export type CreateProjectApiKeyRequestApplicationJsonZodInput = z.input; - -export type CreateProjectApiKeyRequestApplicationJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - apiKey: z.looseObject({ - apiKeyId: z.string(), - createdAt: z.string(), - createdByAccountId: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - permissions: z.array(z.string()), - permissionsUpdatedAt: z.string().nullable(), - projectId: z.string(), - revokedAt: z.string().nullable() - }), - secret: z.string() -}))(); - -export type CreateProjectApiKeyResponse201ApplicationJsonZodInput = z.input; - -export type CreateProjectApiKeyResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); - -export type CreateProjectApiKeyResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectApiKeyResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateProjectApiKeyResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectApiKeyResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export const zListAuthorizedApplicationsOrder = /* @__PURE__ */ (() => openEnum([ + 'normal', + 'desc', + 'asc' +]))(); -export type CreateProjectApiKeyResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListAuthorizedApplicationsOrderZodInput = z.input; -export type CreateProjectApiKeyResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAuthorizedApplicationsOrderZodOutput = z.output; -export const zCreateProjectApiKeyResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('API_KEY_LIMIT_REACHED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('API Key Limit Reached'), - type: z.literal('https://photon.codes/docs/problems/api-key-limit-reached') +/** + * Pagination cursors to pass as after or before in the next list request. + */ +export const zListAuthorizedApplicationsResponseListMetadata = /* @__PURE__ */ (() => z.looseObject({ + after: z.string().nullable(), + before: z.string().nullable() }))(); -export type CreateProjectApiKeyResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type ListAuthorizedApplicationsResponseListMetadataZodInput = z.input; -export type CreateProjectApiKeyResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAuthorizedApplicationsResponseListMetadataZodOutput = z.output; -export const zCreateProjectApiKeyResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') +export const zListAuthorizedApplicationsResponse = /* @__PURE__ */ (() => z.looseObject({ + authorizedApplications: z.array(zAuthorizedApplication), + listMetadata: zListAuthorizedApplicationsResponseListMetadata }))(); -export type CreateProjectApiKeyResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ListAuthorizedApplicationsResponseZodInput = z.input; -export type CreateProjectApiKeyResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAuthorizedApplicationsResponseZodOutput = z.output; -export const zCreateProjectApiKeyResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export const zListBillingPlansInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateProjectApiKeyResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectApiKeyResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateProjectApiKeyResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectApiKeyResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectApiKeyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ListBillingPlansInternalServerErrorProblemZodInput = z.input; -export type CreateProjectApiKeyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListBillingPlansInternalServerErrorProblemZodOutput = z.output; -export type CreateProjectApiKeyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zListInvoicesInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCreateProjectApiKeyResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); +export type ListInvoicesInternalServerErrorProblemZodInput = z.input; -export type CreateProjectApiKeyResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListInvoicesInternalServerErrorProblemZodOutput = z.output; -export type CreateProjectApiKeyResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - name: z.string(), - slug: z.string() -}))(); - -export type CreateProjectRequestApplicationJsonZodInput = z.input; +export const zListNumberAreaCodesInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateProjectRequestApplicationJsonZodOutput = z.output; +export type ListNumberAreaCodesInternalServerErrorProblemZodInput = z.input; -export const zCreateProjectResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - agentProfile: z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() - }), - billingInitialization: openEnum([ - 'pending', - 'retry_required', - 'completed', - 'unknown' - ]).optional(), - createdAt: z.string(), - createdByAccountId: z.string().nullable(), - createdByActorId: z.string().nullable(), - createdByActorKind: openEnum(['account', 'service_identity']).nullable(), - deletedAt: z.string().nullable(), - name: z.string(), - organizationId: z.string(), - projectId: z.string(), - slug: z.string(), - updatedAt: z.string() -}))(); +export type ListNumberAreaCodesInternalServerErrorProblemZodOutput = z.output; -export type CreateProjectResponse201ApplicationJsonZodInput = z.input; - -export type CreateProjectResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateProjectResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); - -export type CreateProjectResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateProjectResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('SLUG_TAKEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - suggestion: z.string().optional(), - title: z.literal('Slug Already Taken'), - type: z.literal('https://photon.codes/docs/problems/slug-taken') +export const zListNumberAreaCodesResponse = /* @__PURE__ */ (() => z.looseObject({ + areaCodes: z.array(z.string()), + countryCode: z.literal('US') }))(); -export type CreateProjectResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberAreaCodesResponseZodInput = z.input; -export type CreateProjectResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type ListNumberAreaCodesResponseZodOutput = z.output; -export type CreateProjectResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateProjectResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateProjectResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateProjectResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListNumberCountriesInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateProjectResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberCountriesInternalServerErrorProblemZodInput = z.input; -export type CreateProjectResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberCountriesInternalServerErrorProblemZodOutput = z.output; -export const zCreateProjectResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zListOauthScopesResponse = /* @__PURE__ */ (() => z.looseObject({ + scopes: z.array(z.string()) }))(); -export type CreateProjectResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListOauthScopesResponseZodInput = z.input; -export type CreateProjectResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListOauthScopesResponseZodOutput = z.output; -export const zCreateProjectResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zListOperationsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateProjectResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListOperationsInternalServerErrorProblemZodInput = z.input; -export type CreateProjectResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ListOperationsInternalServerErrorProblemZodOutput = z.output; -export const zCreateSharedLineAssignmentRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional() +export const zListProjectApiKeysResponse = /* @__PURE__ */ (() => z.looseObject({ + apiKeys: z.array(zApiKey) }))(); -export type CreateSharedLineAssignmentRequestApplicationJsonZodInput = z.input; +export type ListProjectApiKeysResponseZodInput = z.input; -export type CreateSharedLineAssignmentRequestApplicationJsonZodOutput = z.output; +export type ListProjectApiKeysResponseZodOutput = z.output; -export const zCreateSharedLineAssignmentResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() -}))(); +export const zListProjectPlatformsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateSharedLineAssignmentResponse201ApplicationJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('IMESSAGE_MODE_DEDICATED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('iMessage Mode Is Dedicated'), - type: z.literal('https://photon.codes/docs/problems/imessage-mode-dedicated') - }), - z.looseObject({ - code: z.literal('SHARED_LINE_CAP_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Shared Line Cap Exceeded'), - type: z.literal('https://photon.codes/docs/problems/shared-line-cap-exceeded') - }), - z.looseObject({ - code: z.literal('ASSIGNMENT_EXISTS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment Exists'), - type: z.literal('https://photon.codes/docs/problems/assignment-exists') - }) -]))(); - -export type CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type ListProjectPlatformsInternalServerErrorProblemZodInput = z.input; -export type CreateSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListProjectPlatformsInternalServerErrorProblemZodOutput = z.output; -export type CreateSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export const zListResourcesInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCreateSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ListResourcesInternalServerErrorProblemZodInput = z.input; -export type CreateSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('SHARED_LINE_POOL_EXHAUSTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Shared Line Pool Exhausted'), - type: z.literal('https://photon.codes/docs/problems/shared-line-pool-exhausted') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateVoiceProfileRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - mediaEncryption: openEnum(['auto', 'srtp']).optional(), - name: z.string(), - protocol: z.literal('sip') -}))(); +export type ListResourcesInternalServerErrorProblemZodOutput = z.output; -export type CreateVoiceProfileRequestApplicationJsonZodInput = z.input; - -export type CreateVoiceProfileRequestApplicationJsonZodOutput = z.output; - -export const zCreateVoiceProfileResponse201ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export const zListSharedLineAssignmentsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateVoiceProfileResponse201ApplicationJsonZodInput = z.input; - -export type CreateVoiceProfileResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateVoiceProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_DEFAULT_PROFILE_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Default Profile Required'), - type: z.literal('https://photon.codes/docs/problems/voice-default-profile-required') - }) -]))(); - -export type CreateVoiceProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateVoiceProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type ListSharedLineAssignmentsInternalServerErrorProblemZodInput = z.input; -export type CreateVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListSharedLineAssignmentsInternalServerErrorProblemZodOutput = z.output; -export type CreateVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zListVoiceProfilesDefaultInput = /* @__PURE__ */ (() => openEnum(['true', 'false']))(); -export const zCreateVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type ListVoiceProfilesDefaultInputZodInput = z.input; -export type CreateVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListVoiceProfilesDefaultInputZodOutput = z.output; -export type CreateVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export const zListVoiceProfilesInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCreateVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ListVoiceProfilesInternalServerErrorProblemZodInput = z.input; -export type CreateVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListVoiceProfilesInternalServerErrorProblemZodOutput = z.output; -export type CreateVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zListWhatsappAccountPhoneNumbersInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zCreateVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type ListWhatsappAccountPhoneNumbersInternalServerErrorProblemZodInput = z.input; + +export type ListWhatsappAccountPhoneNumbersInternalServerErrorProblemZodOutput = z.output; + +export const zListWhatsappSharedLineAssignmentsInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type CreateVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappSharedLineAssignmentsInternalServerErrorProblemZodInput = z.input; -export type CreateVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappSharedLineAssignmentsInternalServerErrorProblemZodOutput = z.output; -export const zCreateVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zMessageMetricsBackfillState = /* @__PURE__ */ (() => openEnum([ + 'disabled', + 'pending', + 'running', + 'verifying', + 'completed', + 'paused', + 'failed' ]))(); -export type CreateVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsBackfillStateZodInput = z.input; -export type CreateVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsBackfillStateZodOutput = z.output; -export const zCreateWebhookDestinationRequestApplicationJson = z.looseObject({ - apiVersion: z.string(), - description: z.string().optional(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), - name: z.string(), - status: openEnum(['enabled', 'disabled']).optional(), - url: z.string() +export const zGetMessageMetricsBackfillResponse = z.looseObject({ + failedWrites: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + lastVerifiedAt: z.string().nullable(), + processedWrites: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + state: zMessageMetricsBackfillState, + version: z.string() }); -export type CreateWebhookDestinationRequestApplicationJsonZodInput = z.input; - -export type CreateWebhookDestinationRequestApplicationJsonZodOutput = z.output; - -export const zCreateWebhookDestinationResponse201ApplicationJson = z.looseObject({ - destination: z.looseObject({ - apiVersion: z.string(), - createdAt: z.string(), - deletedAt: z.string().nullable(), - description: z.string().nullable(), - destinationId: z.string(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), - name: z.string(), - projectId: z.string(), - status: openEnum(['enabled', 'disabled']), - updatedAt: z.string(), - url: z.string() - }), - signingSecret: z.string() -}); +export type GetMessageMetricsBackfillResponseZodInput = z.input; -export type CreateWebhookDestinationResponse201ApplicationJsonZodInput = z.input; +export type GetMessageMetricsBackfillResponseZodOutput = z.output; -export type CreateWebhookDestinationResponse201ApplicationJsonZodOutput = z.output; +export const zMessageMetricsDirection = /* @__PURE__ */ (() => openEnum(['addressed', 'received']))(); -export const zCreateWebhookDestinationResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') +export type MessageMetricsDirectionZodInput = z.input; + +export type MessageMetricsDirectionZodOutput = z.output; + +export const zMessageMetricsJsonOneOfPathsDiscriminator = /* @__PURE__ */ (() => z.looseObject({ + oneOfPaths: z.array(z.string()).readonly() +}))(); + +export type MessageMetricsJsonOneOfPathsDiscriminatorZodInput = z.input; + +export type MessageMetricsJsonOneOfPathsDiscriminatorZodOutput = z.output; + +export const zMessageMetricsJsonPathDiscriminator = /* @__PURE__ */ (() => z.looseObject({ + path: z.string(), + values: z.array(z.string()).readonly() }))(); -export type CreateWebhookDestinationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsJsonPathDiscriminatorZodInput = z.input; -export type CreateWebhookDestinationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsJsonPathDiscriminatorZodOutput = z.output; -export const zCreateWebhookDestinationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zMessageMetricsJsonDiscriminator = /* @__PURE__ */ (() => z.union([ + zMessageMetricsJsonPathDiscriminator, + zMessageMetricsJsonOneOfPathsDiscriminator ]))(); -export type CreateWebhookDestinationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsJsonDiscriminatorZodInput = z.input; -export type CreateWebhookDestinationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsJsonDiscriminatorZodOutput = z.output; -export const zCreateWebhookDestinationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') -}))(); +export const zMessageMetricsJsonPathValue: z.ZodType = /* @__PURE__ */ (() => z.union([ + z.boolean(), + z.number(), + z.string() +]))(); -export type CreateWebhookDestinationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsJsonPathValueZodInput = z.input; -export type CreateWebhookDestinationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsJsonPathValueZodOutput = z.output; -export const zCreateWebhookDestinationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zMessageMetricsJsonPath = /* @__PURE__ */ (() => z.looseObject({ + additionalProperties: z.literal(true).optional(), + contentTypes: z.array(z.string()).readonly().optional(), + directions: z.array(zMessageMetricsDirection).readonly().optional(), + expression: z.string(), + itemTypes: z.array(z.string()).readonly().optional(), + path: z.string(), + required: z.boolean(), + type: z.string(), + values: z.array(zMessageMetricsJsonPathValue).readonly().optional() }))(); -export type CreateWebhookDestinationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsJsonPathZodInput = z.input; -export type CreateWebhookDestinationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsJsonPathZodOutput = z.output; -export const zCreateWebhookDestinationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zMessageMetricsJsonResource = /* @__PURE__ */ (() => z.looseObject({ + contractsVersion: z.string(), + type: z.literal('message') }))(); -export type CreateWebhookDestinationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsJsonResourceZodInput = z.input; -export type CreateWebhookDestinationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsJsonResourceZodOutput = z.output; -export const zCreateWebhookDestinationResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zMessageMetricsPlatform = /* @__PURE__ */ (() => openEnum([ + 'email', + 'imessage', + 'sms', + 'telegram', + 'voice', + 'whatsapp', + 'whatsapp_business' +]))(); -export type CreateWebhookDestinationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsPlatformZodInput = z.input; -export type CreateWebhookDestinationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsPlatformZodOutput = z.output; -export const zCreateWhatsappSharedLineAssignmentRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional() +export const zMessageMetricsPlatformJsonPaths = /* @__PURE__ */ (() => z.looseObject({ + name: zMessageMetricsPlatform, + paths: z.array(zMessageMetricsJsonPath).readonly() }))(); -export type CreateWhatsappSharedLineAssignmentRequestApplicationJsonZodInput = z.input; +export type MessageMetricsPlatformJsonPathsZodInput = z.input; -export type CreateWhatsappSharedLineAssignmentRequestApplicationJsonZodOutput = z.output; +export type MessageMetricsPlatformJsonPathsZodOutput = z.output; -export const zCreateWhatsappSharedLineAssignmentResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() +export const zMessageMetricsJsonCatalog = /* @__PURE__ */ (() => z.looseObject({ + commonPaths: z.array(zMessageMetricsJsonPath).readonly(), + discriminators: z.array(zMessageMetricsJsonDiscriminator).readonly(), + platforms: z.array(zMessageMetricsPlatformJsonPaths).readonly(), + resource: zMessageMetricsJsonResource }))(); -export type CreateWhatsappSharedLineAssignmentResponse201ApplicationJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse201ApplicationJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('WHATSAPP_MODE_DEDICATED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Mode Is Dedicated'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-mode-dedicated') - }), - z.looseObject({ - code: z.literal('SHARED_LINE_CAP_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Shared Line Cap Exceeded'), - type: z.literal('https://photon.codes/docs/problems/shared-line-cap-exceeded') - }), - z.looseObject({ - code: z.literal('ASSIGNMENT_EXISTS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment Exists'), - type: z.literal('https://photon.codes/docs/problems/assignment-exists') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export type MessageMetricsJsonCatalogZodInput = z.input; + +export type MessageMetricsJsonCatalogZodOutput = z.output; + +export const zMessageMetricsQueryColumn = /* @__PURE__ */ (() => z.looseObject({ + name: z.string(), + type: z.string() }))(); -export type CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsQueryColumnZodInput = z.input; -export type CreateWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsQueryColumnZodOutput = z.output; -export const zCreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zMessageMetricsQueryStatistics = /* @__PURE__ */ (() => z.looseObject({ + bytesRead: z.number(), + elapsedSeconds: z.number(), + rowsRead: z.number() }))(); -export type CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('SHARED_LINE_POOL_EXHAUSTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Shared Line Pool Exhausted'), - type: z.literal('https://photon.codes/docs/problems/shared-line-pool-exhausted') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - displayName: z.string().optional(), - voipResourceId: z.string() +export type MessageMetricsQueryStatisticsZodInput = z.input; + +export type MessageMetricsQueryStatisticsZodOutput = z.output; + +export const zMessageMetricsSqlCapabilities = /* @__PURE__ */ (() => z.looseObject({ + arrayJoin: z.boolean(), + ctes: z.boolean(), + joins: z.boolean(), + parameters: z.boolean(), + selectWithoutFrom: z.boolean(), + subqueries: z.boolean(), + unions: z.boolean() }))(); -export type CreateWhatsappVoipSenderRequestApplicationJsonZodInput = z.input; +export type MessageMetricsSqlCapabilitiesZodInput = z.input; -export type CreateWhatsappVoipSenderRequestApplicationJsonZodOutput = z.output; +export type MessageMetricsSqlCapabilitiesZodOutput = z.output; -export const zCreateWhatsappVoipSenderResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() +export const zMessageMetricsSqlColumn = /* @__PURE__ */ (() => z.looseObject({ + description: z.string(), + json: zMessageMetricsJsonCatalog.optional(), + name: z.string(), + type: z.string() }))(); -export type CreateWhatsappVoipSenderResponse202ApplicationJsonZodInput = z.input; +export type MessageMetricsSqlColumnZodInput = z.input; -export type CreateWhatsappVoipSenderResponse202ApplicationJsonZodOutput = z.output; +export type MessageMetricsSqlColumnZodOutput = z.output; -export const zCreateWhatsappVoipSenderResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); +export const zMessageMetricsSqlLimits = z.looseObject({ + maximumParameterValueBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + maximumParameters: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + maximumSqlBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + maximumTotalParameterBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type MessageMetricsSqlLimitsZodInput = z.input; -export type CreateWhatsappVoipSenderResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type MessageMetricsSqlLimitsZodOutput = z.output; -export const zCreateWhatsappVoipSenderResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') +export const zMessageMetricsSqlTableName = /* @__PURE__ */ (() => z.enum(['message_events']))(); + +export type MessageMetricsSqlTableNameZodInput = z.input; + +export type MessageMetricsSqlTableNameZodOutput = z.output; + +export const zMessageMetricsSqlTable = /* @__PURE__ */ (() => z.looseObject({ + columns: z.array(zMessageMetricsSqlColumn), + currentState: z.string(), + description: z.string(), + name: zMessageMetricsSqlTableName }))(); -export type CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse402ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('WHATSAPP_WABA_NOT_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp Business Account Not Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-waba-not-connected') - }), - z.looseObject({ - code: z.literal('WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp VoIP Source Not Eligible'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('WHATSAPP_ACCOUNT_DISCONNECTING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Business Account Disconnecting'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-account-disconnecting') - }), - z.looseObject({ - code: z.literal('WHATSAPP_ACCOUNT_PROVISIONING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Business Account Has Provisioning Numbers'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-account-provisioning') - }), - z.looseObject({ - code: z.literal('WHATSAPP_SENDER_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Sender Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-connected') - }), - z.looseObject({ - code: z.literal('WHATSAPP_SENDER_PROVISIONING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Sender Provisioning'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-provisioning') - }), - z.looseObject({ - code: z.literal('WHATSAPP_VOIP_SOURCE_RELEASING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp VoIP Source Releasing'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-voip-source-releasing') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('WHATSAPP_DISPLAY_NAME_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('WhatsApp Display Name Unavailable'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-display-name-unavailable') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export type MessageMetricsSqlTableZodInput = z.input; + +export type MessageMetricsSqlTableZodOutput = z.output; + +export const zGetMessageMetricsSqlSchemaResponse = /* @__PURE__ */ (() => z.looseObject({ + capabilities: zMessageMetricsSqlCapabilities, + dialect: z.string(), + limits: zMessageMetricsSqlLimits, + projectScoped: z.literal(true), + tables: z.array(zMessageMetricsSqlTable), + version: z.string() }))(); -export type CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetMessageMetricsSqlSchemaResponseZodInput = z.input; -export type CreateWhatsappVoipSenderResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetMessageMetricsSqlSchemaResponseZodOutput = z.output; -export const zCreateWhatsappVoipSenderResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zMeteredUsage = z.looseObject({ + amountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + category: z.string(), + categoryDisplayName: z.string().nullish(), + currency: z.string(), + displayName: z.string(), + metricCode: z.string(), + units: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); + +export type MeteredUsageZodInput = z.input; + +export type MeteredUsageZodOutput = z.output; + +export const zNotAuthenticatedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('NOT_AUTHENTICATED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(401), + title: z.literal('Not Authenticated'), + type: z.literal('https://photon.codes/docs/problems/not-authenticated') +}).catchall(zJsonValue))(); -export type CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteAccountResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() +export type NotAuthenticatedProblemZodInput = z.input; + +export type NotAuthenticatedProblemZodOutput = z.output; + +export const zNumberCountry = /* @__PURE__ */ (() => z.looseObject({ + callingCode: z.string(), + countryCode: z.string(), + displayName: z.string() }))(); -export type DeleteAccountResponse200ApplicationJsonZodInput = z.input; +export type NumberCountryZodInput = z.input; -export type DeleteAccountResponse200ApplicationJsonZodOutput = z.output; +export type NumberCountryZodOutput = z.output; -export const zDeleteAccountResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zListNumberCountriesResponse = /* @__PURE__ */ (() => z.looseObject({ + countries: z.array(zNumberCountry) +}))(); -export type DeleteAccountResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberCountriesResponseZodInput = z.input; -export type DeleteAccountResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberCountriesResponseZodOutput = z.output; -export const zDeleteAccountResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') +export const zOperationError = /* @__PURE__ */ (() => z.looseObject({ + code: z.string(), + detail: z.string() }))(); -export type DeleteAccountResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OperationErrorZodInput = z.input; -export type DeleteAccountResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type OperationErrorZodOutput = z.output; -export const zDeleteAccountResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_OWNS_ORGANIZATIONS'), +export const zOperationNotCancellableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('OPERATION_NOT_CANCELLABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(409), - title: z.literal('Account Owns Organizations'), - type: z.literal('https://photon.codes/docs/problems/account-owns-organizations') -}))(); + title: z.literal('Operation Not Cancellable'), + type: z.literal('https://photon.codes/docs/problems/operation-not-cancellable') +}).catchall(zJsonValue))(); -export type DeleteAccountResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type OperationNotCancellableProblemZodInput = z.input; -export type DeleteAccountResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type OperationNotCancellableProblemZodOutput = z.output; -export const zDeleteAccountResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zOperationNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('OPERATION_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(404), + title: z.literal('Operation Not Found'), + type: z.literal('https://photon.codes/docs/problems/operation-not-found') +}).catchall(zJsonValue))(); -export type DeleteAccountResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type OperationNotFoundProblemZodInput = z.input; -export type DeleteAccountResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type OperationNotFoundProblemZodOutput = z.output; -export const zDeleteAccountResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zOperationState = /* @__PURE__ */ (() => openEnum([ + 'pending', + 'running', + 'succeeded', + 'failed', + 'cancelled' +]))(); + +export type OperationStateZodInput = z.input; + +export type OperationStateZodOutput = z.output; + +export const zOperationType = /* @__PURE__ */ (() => openEnum([ + 'resource.provision', + 'resource.release', + 'whatsapp.account.disconnect', + 'sms.campaign.assign', + 'sms.campaign.unassign' +]))(); + +export type OperationTypeZodInput = z.input; -export type DeleteAccountResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteAccountResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteAccountResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type DeleteAccountResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteAccountResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - agentProfile: z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() - }), - billingInitialization: openEnum([ - 'pending', - 'retry_required', - 'completed', - 'unknown' - ]).optional(), +export type OperationTypeZodOutput = z.output; + +export const zOperation = /* @__PURE__ */ (() => z.looseObject({ + cancellable: z.boolean(), createdAt: z.string(), - createdByAccountId: z.string().nullable(), - createdByActorId: z.string().nullable(), - createdByActorKind: openEnum(['account', 'service_identity']).nullable(), - deletedAt: z.string().nullable(), - name: z.string(), - organizationId: z.string(), + detail: z.looseObject({}).optional(), + endedAt: z.string().optional(), + error: zOperationError.optional(), + operationId: z.string(), projectId: z.string(), - slug: z.string(), + resourceId: z.string().optional(), + resourceType: z.string(), + startedAt: z.string().optional(), + state: zOperationState, + type: zOperationType, updatedAt: z.string() }))(); -export type DeleteProjectResponse200ApplicationJsonZodInput = z.input; - -export type DeleteProjectResponse200ApplicationJsonZodOutput = z.output; - -export const zDeleteProjectResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type DeleteProjectResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DeleteProjectResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export type OperationZodInput = z.input; -export type DeleteProjectResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OperationZodOutput = z.output; -export type DeleteProjectResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') +export const zOperationPage = /* @__PURE__ */ (() => z.looseObject({ + nextPageToken: z.string().optional(), + operations: z.array(zOperation) }))(); -export type DeleteProjectResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type DeleteProjectResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export type OperationPageZodInput = z.input; + +export type OperationPageZodOutput = z.output; + +export const zOrganizationAuthenticationRedirect = /* @__PURE__ */ (() => z.looseObject({ + url: z.string() }))(); -export type DeleteProjectResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationAuthenticationRedirectZodInput = z.input; -export type DeleteProjectResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationAuthenticationRedirectZodOutput = z.output; -export const zDeleteProjectResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zOrganizationAuthenticationRequest = /* @__PURE__ */ (() => z.looseObject({ + returnTo: z.string() }))(); -export type DeleteProjectResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteProjectResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type DeleteProjectResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteProjectResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileInboundResponse200ApplicationJson = z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type OrganizationAuthenticationRequestZodInput = z.input; -export type DeleteVoiceProfileInboundResponse200ApplicationJsonZodInput = z.input; - -export type DeleteVoiceProfileInboundResponse200ApplicationJsonZodOutput = z.output; - -export const zDeleteVoiceProfileInboundResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileInboundResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), +export type OrganizationAuthenticationRequestZodOutput = z.output; + +export const zOrganizationConnectionNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_CONNECTION_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); + title: z.literal('Organization Connection Not Found'), + type: z.literal('https://photon.codes/docs/problems/organization-connection-not-found') +}).catchall(zJsonValue))(); -export type DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationConnectionNotFoundProblemZodInput = z.input; -export type DeleteVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationConnectionNotFoundProblemZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }) +export const zOrganizationConnectionSyncStatus = /* @__PURE__ */ (() => openEnum([ + 'pending', + 'syncing', + 'ready', + 'error', + 'blocked' ]))(); -export type DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationConnectionSyncStatusZodInput = z.input; -export type DeleteVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationConnectionSyncStatusZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zOrganizationConnectionStatusMembership = /* @__PURE__ */ (() => z.looseObject({ + errorCode: z.string().nullable(), + retryAt: z.string().nullable(), + status: zOrganizationConnectionSyncStatus }))(); -export type DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationConnectionStatusMembershipZodInput = z.input; -export type DeleteVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationConnectionStatusMembershipZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zOrganizationConnectionStatusOrganization = /* @__PURE__ */ (() => z.looseObject({ + errorCode: z.string().nullable(), + status: zOrganizationConnectionSyncStatus }))(); -export type DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationConnectionStatusOrganizationZodInput = z.input; -export type DeleteVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationConnectionStatusOrganizationZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zOrganizationConnectionStatus = /* @__PURE__ */ (() => z.looseObject({ + membership: zOrganizationConnectionStatusMembership, + organization: zOrganizationConnectionStatusOrganization, + organizationId: z.string(), + synchronized: z.boolean() }))(); -export type DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationConnectionStatusZodInput = z.input; -export type DeleteVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationConnectionStatusZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zOrganizationEnterpriseLoginRequest = /* @__PURE__ */ (() => z.looseObject({ + invitationToken: z.string().optional(), + organizationId: z.string(), + returnTo: z.string() +}))(); + +export type OrganizationEnterpriseLoginRequestZodInput = z.input; + +export type OrganizationEnterpriseLoginRequestZodOutput = z.output; + +export const zOrganizationInvoiceSubject = /* @__PURE__ */ (() => z.looseObject({ + organizationId: z.string(), + type: z.literal('organization') }))(); -export type DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationInvoiceSubjectZodInput = z.input; -export type DeleteVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationInvoiceSubjectZodOutput = z.output; -export const zDeleteVoiceProfileInboundResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zOrganizationSsoConfigurationConnectionState = /* @__PURE__ */ (() => openEnum([ + 'not_configured', + 'configuring', + 'ready', + 'error' ]))(); -export type DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoConfigurationConnectionStateZodInput = z.input; -export type DeleteVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoConfigurationConnectionStateZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse200ApplicationJson = z.looseObject({ - outbound: z.null(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export const zOrganizationSsoConfigurationPolicySyncStatus = /* @__PURE__ */ (() => openEnum(['synced', 'manual_required']))(); -export type DeleteVoiceProfileOutboundResponse200ApplicationJsonZodInput = z.input; - -export type DeleteVoiceProfileOutboundResponse200ApplicationJsonZodOutput = z.output; - -export const zDeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileOutboundResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), +export type OrganizationSsoConfigurationPolicySyncStatusZodInput = z.input; + +export type OrganizationSsoConfigurationPolicySyncStatusZodOutput = z.output; + +export const zOrganizationSsoConflictProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_SSO_CONFLICT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); + status: z.literal(409), + title: z.literal('Organization SSO Conflict'), + type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') +}).catchall(zJsonValue))(); -export type DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoConflictProblemZodInput = z.input; -export type DeleteVoiceProfileOutboundResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoConflictProblemZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_NOT_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Not Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-not-configured') - }) +export const zOrganizationSsoDomainState = /* @__PURE__ */ (() => openEnum([ + 'verified', + 'pending', + 'failed' ]))(); -export type DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoDomainStateZodInput = z.input; -export type DeleteVoiceProfileOutboundResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoDomainStateZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zOrganizationSsoDomain = /* @__PURE__ */ (() => z.looseObject({ + domain: z.string(), + state: zOrganizationSsoDomainState }))(); -export type DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoDomainZodInput = z.input; -export type DeleteVoiceProfileOutboundResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoDomainZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zOrganizationSsoConfiguration = /* @__PURE__ */ (() => z.looseObject({ + connectionChangedAt: z.string().nullable(), + connectionGeneration: z.string(), + connectionState: zOrganizationSsoConfigurationConnectionState, + connectionType: z.string().optional(), + desiredSsoEnforced: z.boolean(), + domains: z.array(zOrganizationSsoDomain).optional(), + organizationId: z.string(), + policySyncStatus: zOrganizationSsoConfigurationPolicySyncStatus, + providerAvailable: z.boolean().optional(), + ssoEnforced: z.boolean(), + ssoJitEnabled: z.boolean(), + version: z.string() }))(); -export type DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoConfigurationZodInput = z.input; -export type DeleteVoiceProfileOutboundResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoConfigurationZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zOrganizationSsoNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(404), + title: z.literal('Organization SSO Not Found'), + type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') +}).catchall(zJsonValue))(); -export type DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoNotFoundProblemZodInput = z.input; -export type DeleteVoiceProfileOutboundResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoNotFoundProblemZodOutput = z.output; -export const zDeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zOrganizationSsoPreconditionFailedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(412), + title: z.literal('Organization SSO Precondition Failed'), + type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') +}).catchall(zJsonValue))(); -export type DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileOutboundResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileOutboundResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DeleteVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), +export type OrganizationSsoPreconditionFailedProblemZodInput = z.input; + +export type OrganizationSsoPreconditionFailedProblemZodOutput = z.output; + +export const zOrganizationSsoRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_SSO_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); + status: z.literal(403), + title: z.literal('Organization SSO Required'), + type: z.literal('https://photon.codes/docs/problems/organization-sso-required') +}).catchall(zJsonValue))(); -export type DeleteVoiceProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSsoRequiredProblemZodInput = z.input; -export type DeleteVoiceProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSsoRequiredProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VOICE_PROFILE_IN_USE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile In Use'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-in-use') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }) +export const zBeginInvitationSsoForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem ]))(); -export type DeleteVoiceProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type BeginInvitationSsoForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginInvitationSsoForbiddenProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zBeginOrganizationAuthenticationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type DeleteVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationAuthenticationForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationAuthenticationForbiddenProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zBeginOrganizationClosureAuthenticationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type DeleteVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationClosureAuthenticationForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationClosureAuthenticationForbiddenProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zBeginOrganizationSsoAdmissionForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type DeleteVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationSsoAdmissionForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationSsoAdmissionForbiddenProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zCreateOrganizationSsoPortalLinkForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type DeleteVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkForbiddenProblemZodOutput = z.output; -export const zDeleteVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zDisableOrganizationSsoForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem ]))(); -export type DeleteVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoForbiddenProblemZodInput = z.input; -export type DeleteVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoForbiddenProblemZodOutput = z.output; -export const zDeleteWebhookDestinationResponse200ApplicationJson = z.looseObject({ - apiVersion: z.string(), - createdAt: z.string(), - deletedAt: z.string().nullable(), - description: z.string().nullable(), - destinationId: z.string(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), - name: z.string(), - projectId: z.string(), - status: openEnum(['enabled', 'disabled']), - updatedAt: z.string(), - url: z.string() -}); +export const zGetOrganizationConnectionStatusForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type DeleteWebhookDestinationResponse200ApplicationJsonZodInput = z.input; - -export type DeleteWebhookDestinationResponse200ApplicationJsonZodOutput = z.output; - -export const zDeleteWebhookDestinationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteWebhookDestinationResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteWebhookDestinationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Webhook Destination Not Found'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-not-found') +export type GetOrganizationConnectionStatusForbiddenProblemZodInput = z.input; + +export type GetOrganizationConnectionStatusForbiddenProblemZodOutput = z.output; + +export const zGetOrganizationSsoConfigurationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); + +export type GetOrganizationSsoConfigurationForbiddenProblemZodInput = z.input; + +export type GetOrganizationSsoConfigurationForbiddenProblemZodOutput = z.output; + +export const zListAuthorizedApplicationsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); + +export type ListAuthorizedApplicationsForbiddenProblemZodInput = z.input; + +export type ListAuthorizedApplicationsForbiddenProblemZodOutput = z.output; + +export const zOrganizationSubscriptionEntitlement = /* @__PURE__ */ (() => z.looseObject({ + featureKey: z.string(), + value: z.string() }))(); -export type DeleteWebhookDestinationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSubscriptionEntitlementZodInput = z.input; -export type DeleteWebhookDestinationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSubscriptionEntitlementZodOutput = z.output; -export const zDeleteWebhookDestinationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zOrganizationSyncUnavailableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('ORGANIZATION_SYNC_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Organization Synchronization Unavailable'), + type: z.literal('https://photon.codes/docs/problems/organization-sync-unavailable') +}).catchall(zJsonValue))(); -export type DeleteWebhookDestinationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSyncUnavailableProblemZodInput = z.input; -export type DeleteWebhookDestinationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSyncUnavailableProblemZodOutput = z.output; -export const zDeleteWebhookDestinationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zPayloadTooLargeProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('PAYLOAD_TOO_LARGE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(413), + title: z.literal('Payload Too Large'), + type: z.literal('https://photon.codes/docs/problems/payload-too-large') +}).catchall(zJsonValue))(); -export type DeleteWebhookDestinationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type PayloadTooLargeProblemZodInput = z.input; -export type DeleteWebhookDestinationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type PayloadTooLargeProblemZodOutput = z.output; -export const zDeleteWebhookDestinationResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), +export const zPaymentMethod = z.looseObject({ + brand: z.string().nullable(), + expiresMonth: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), + expiresYear: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), + last4: z.string().nullable() +}); + +export type PaymentMethodZodInput = z.input; + +export type PaymentMethodZodOutput = z.output; + +export const zGetOrganizationPaymentMethodResponse = z.looseObject({ + cardOnFile: z.boolean(), + paymentMethod: zPaymentMethod.nullable() +}); + +export type GetOrganizationPaymentMethodResponseZodInput = z.input; + +export type GetOrganizationPaymentMethodResponseZodOutput = z.output; + +export const zPaymentProviderNotReadyProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('PAYMENT_PROVIDER_NOT_READY'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') + status: z.literal(503), + title: z.literal('Payment Provider Not Ready'), + type: z.literal('https://photon.codes/docs/problems/payment-provider-not-ready') +}).catchall(zJsonValue))(); + +export type PaymentProviderNotReadyProblemZodInput = z.input; + +export type PaymentProviderNotReadyProblemZodOutput = z.output; + +export const zPendingBillingOperation = /* @__PURE__ */ (() => z.looseObject({ + failure: z.null(), + kind: zBillingOperationKind, + operationId: z.string(), + resolvedAt: z.null(), + result: z.null(), + status: z.literal('pending'), + submittedAt: z.string().nullable() }))(); -export type DeleteWebhookDestinationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type PendingBillingOperationZodInput = z.input; -export type DeleteWebhookDestinationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type PendingBillingOperationZodOutput = z.output; -export const zDeviceAuthorizeResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - device_code: z.string(), - expires_in: z.number(), - interval: z.number(), - user_code: z.string(), - verification_uri: z.string(), - verification_uri_complete: z.string() +export const zPhoneVerificationCaptcha = /* @__PURE__ */ (() => z.looseObject({ + challengeContext: z.string(), + token: z.string() }))(); -export type DeviceAuthorizeResponse200ApplicationJsonZodInput = z.input; +export type PhoneVerificationCaptchaZodInput = z.input; -export type DeviceAuthorizeResponse200ApplicationJsonZodOutput = z.output; +export type PhoneVerificationCaptchaZodOutput = z.output; -export const zDeviceTokenRequestApplicationForm: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - device_code: z.string(), - grant_type: z.literal('urn:ietf:params:oauth:grant-type:device_code') - }), - z.looseObject({ - grant_type: z.literal('refresh_token'), - refresh_token: z.string() - }) +export const zProfilePictureContentType = /* @__PURE__ */ (() => openEnum([ + 'image/jpeg', + 'image/png', + 'image/webp' ]))(); -export type DeviceTokenRequestApplicationFormZodInput = z.input; +export type ProfilePictureContentTypeZodInput = z.input; -export type DeviceTokenRequestApplicationFormZodOutput = z.output; +export type ProfilePictureContentTypeZodOutput = z.output; -export const zDeviceTokenRequestApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - device_code: z.string(), - grant_type: z.literal('urn:ietf:params:oauth:grant-type:device_code') - }), - z.looseObject({ - grant_type: z.literal('refresh_token'), - refresh_token: z.string() - }) -]))(); +export const zProfilePictureUploadFormFields = /* @__PURE__ */ (() => z.object({}).catchall(z.string()))(); -export type DeviceTokenRequestApplicationJsonZodInput = z.input; +export type ProfilePictureUploadFormFieldsZodInput = z.input; -export type DeviceTokenRequestApplicationJsonZodOutput = z.output; +export type ProfilePictureUploadFormFieldsZodOutput = z.output; -export const zDeviceTokenResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - access_token: z.string(), - authentication_method: z.string().optional(), - expires_in: z.number(), - refresh_token: z.string(), - user: z.looseObject({ - email: z.string(), - first_name: z.string().nullable(), - id: z.string(), - last_name: z.string().nullable() - }) +export const zProfilePictureUpload = /* @__PURE__ */ (() => z.looseObject({ + expiresAt: z.string(), + formFields: zProfilePictureUploadFormFields, + uploadId: z.string(), + uploadUrl: z.string() }))(); -export type DeviceTokenResponse200ApplicationJsonZodInput = z.input; +export type ProfilePictureUploadZodInput = z.input; -export type DeviceTokenResponse200ApplicationJsonZodOutput = z.output; +export type ProfilePictureUploadZodOutput = z.output; -export const zDeviceTokenResponse400ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - error: z.string(), - error_description: z.string().optional() +export const zProfilePictureUploadRequest = /* @__PURE__ */ (() => z.looseObject({ + contentType: zProfilePictureContentType }))(); -export type DeviceTokenResponse400ApplicationJsonZodInput = z.input; +export type ProfilePictureUploadRequestZodInput = z.input; -export type DeviceTokenResponse400ApplicationJsonZodOutput = z.output; +export type ProfilePictureUploadRequestZodOutput = z.output; -export const zDisconnectWhatsappBusinessAccountResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() +export const zProjectApiKeyResponse = /* @__PURE__ */ (() => z.looseObject({ + apiKey: zApiKey }))(); -export type DisconnectWhatsappBusinessAccountResponse200ApplicationJsonZodInput = z.input; +export type ProjectApiKeyResponseZodInput = z.input; -export type DisconnectWhatsappBusinessAccountResponse200ApplicationJsonZodOutput = z.output; +export type ProjectApiKeyResponseZodOutput = z.output; -export const zDisconnectWhatsappBusinessAccountResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zProjectBillingInitialization = /* @__PURE__ */ (() => openEnum([ + 'pending', + 'retry_required', + 'completed', + 'unknown' +]))(); -export type DisconnectWhatsappBusinessAccountResponse202ApplicationJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse202ApplicationJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WHATSAPP_WABA_NOT_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp Business Account Not Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-waba-not-connected') -}))(); +export type ProjectBillingInitializationZodInput = z.input; -export type DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('WHATSAPP_ACCOUNT_DISCONNECTING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Business Account Disconnecting'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-account-disconnecting') - }), - z.looseObject({ - code: z.literal('WHATSAPP_ACCOUNT_PROVISIONING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Business Account Has Provisioning Numbers'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-account-provisioning') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type ProjectBillingInitializationZodOutput = z.output; + +export const zProjectClosingProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('PROJECT_CLOSING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(409), + title: z.literal('Project Is Closing'), + type: z.literal('https://photon.codes/docs/problems/project-closing') +}).catchall(zJsonValue))(); -export type DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectClosingProblemZodInput = z.input; -export type DisconnectWhatsappBusinessAccountResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectClosingProblemZodOutput = z.output; -export const zDisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zConnectEmailDomainConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zEmailDomainAlreadyConnectedProblem, + zEmailDomainCapExceededProblem +]))(); -export type DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainConflictProblemZodInput = z.input; -export type DisconnectWhatsappBusinessAccountResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainConflictProblemZodOutput = z.output; -export const zDisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zProjectClosureDomain = /* @__PURE__ */ (() => openEnum([ + 'projects', + 'billing', + 'platforms', + 'call_registry' +]))(); -export type DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDownloadAttachmentResponse200ApplicationOctetStream = /* @__PURE__ */ (() => z.unknown())(); - -export type DownloadAttachmentResponse200ApplicationOctetStreamZodInput = z.input; - -export type DownloadAttachmentResponse200ApplicationOctetStreamZodOutput = z.output; - -export const zDownloadAttachmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type DownloadAttachmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type DownloadAttachmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDownloadAttachmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ATTACHMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Attachment Not Found'), - type: z.literal('https://photon.codes/docs/problems/attachment-not-found') +export type ProjectClosureDomainZodInput = z.input; + +export type ProjectClosureDomainZodOutput = z.output; + +export const zProjectClosureDomainStatus = /* @__PURE__ */ (() => z.looseObject({ + blockers: z.array(z.string()), + domain: zProjectClosureDomain, + ready: z.boolean() }))(); -export type DownloadAttachmentResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectClosureDomainStatusZodInput = z.input; -export type DownloadAttachmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectClosureDomainStatusZodOutput = z.output; -export const zDownloadAttachmentResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ATTACHMENT_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Attachment Not Ready'), - type: z.literal('https://photon.codes/docs/problems/attachment-not-ready') +export const zGetProjectClosureStatusResponse = /* @__PURE__ */ (() => z.looseObject({ + deletionOperationId: z.string().nullable(), + domains: z.array(zProjectClosureDomainStatus), + organizationId: z.string(), + projectId: z.string(), + ready: z.boolean() }))(); -export type DownloadAttachmentResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectClosureStatusResponseZodInput = z.input; -export type DownloadAttachmentResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectClosureStatusResponseZodOutput = z.output; -export const zDownloadAttachmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zProjectCount = z.looseObject({ + count: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type DownloadAttachmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectCountZodInput = z.input; -export type DownloadAttachmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectCountZodOutput = z.output; -export const zDownloadAttachmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zProjectCreatedByActorKind = /* @__PURE__ */ (() => openEnum(['account', 'service_identity']))(); + +export type ProjectCreatedByActorKindZodInput = z.input; + +export type ProjectCreatedByActorKindZodOutput = z.output; + +export const zProject = /* @__PURE__ */ (() => z.looseObject({ + agentProfile: zAgentProfile, + billingInitialization: zProjectBillingInitialization.optional(), + createdAt: z.string(), + createdByAccountId: z.string().nullable(), + createdByActorId: z.string().nullable(), + createdByActorKind: zProjectCreatedByActorKind.nullable(), + deletedAt: z.string().nullable(), + name: z.string(), + organizationId: z.string(), + projectId: z.string(), + slug: z.string(), + updatedAt: z.string() }))(); -export type DownloadAttachmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectZodInput = z.input; -export type DownloadAttachmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectZodOutput = z.output; -export const zDownloadAttachmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zProjectDeletedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('PROJECT_DELETED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') + status: z.literal(410), + title: z.literal('Project Deleted'), + type: z.literal('https://photon.codes/docs/problems/project-deleted') +}).catchall(zJsonValue))(); + +export type ProjectDeletedProblemZodInput = z.input; + +export type ProjectDeletedProblemZodOutput = z.output; + +export const zProjectInvoiceSubject = /* @__PURE__ */ (() => z.looseObject({ + projectId: z.string(), + type: z.literal('project') }))(); -export type DownloadAttachmentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectInvoiceSubjectZodInput = z.input; -export type DownloadAttachmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectInvoiceSubjectZodOutput = z.output; -export const zDownloadAttachmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zInvoiceSubject: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectInvoiceSubject, + zOrganizationInvoiceSubject ]))(); -export type DownloadAttachmentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type InvoiceSubjectZodInput = z.input; -export type DownloadAttachmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type InvoiceSubjectZodOutput = z.output; -export const zGetAccountResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() -}))(); +export const zInvoice = z.looseObject({ + currency: z.string(), + invoiceId: z.string(), + issuedAt: z.string().nullable(), + kind: zInvoiceKind, + number: z.string(), + paymentStatus: zInvoicePaymentStatus, + pdfUrl: z.string().nullable(), + subjects: z.array(zInvoiceSubject), + totalCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type GetAccountResponse200ApplicationJsonZodInput = z.input; +export type InvoiceZodInput = z.input; -export type GetAccountResponse200ApplicationJsonZodOutput = z.output; +export type InvoiceZodOutput = z.output; -export const zGetAccountResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zListInvoicesResponse = /* @__PURE__ */ (() => z.looseObject({ + invoices: z.array(zInvoice) +}))(); -export type GetAccountResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListInvoicesResponseZodInput = z.input; -export type GetAccountResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListInvoicesResponseZodOutput = z.output; -export const zGetAccountResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), +export const zProjectNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('PROJECT_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); + title: z.literal('Project Not Found'), + type: z.literal('https://photon.codes/docs/problems/project-not-found') +}).catchall(zJsonValue))(); -export type GetAccountResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectNotFoundProblemZodInput = z.input; -export type GetAccountResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectNotFoundProblemZodOutput = z.output; -export const zGetAccountResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') +export const zProjectPage = /* @__PURE__ */ (() => z.looseObject({ + nextPageToken: z.string().optional(), + projects: z.array(zProject) }))(); -export type GetAccountResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectPageZodInput = z.input; -export type GetAccountResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectPageZodOutput = z.output; -export const zGetAccountResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zProjectSubscriptionEntitlement = /* @__PURE__ */ (() => z.looseObject({ + featureKey: z.string(), + value: z.string() }))(); -export type GetAccountResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectSubscriptionEntitlementZodInput = z.input; -export type GetAccountResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectSubscriptionEntitlementZodOutput = z.output; -export const zGetAccountResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zProvisionImessageDedicatedLineBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type GetAccountResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineBadRequestProblemZodInput = z.input; -export type GetAccountResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionImessageDedicatedLineBadRequestProblemZodOutput = z.output; -export const zGetAccountResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zProvisionImessageDedicatedLineInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetAccountResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineInternalServerErrorProblemZodInput = z.input; -export type GetAccountResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionImessageDedicatedLineInternalServerErrorProblemZodOutput = z.output; -export const zGetAgentProfileResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() -}))(); +export const zProvisionWhatsappDedicatedLineBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type GetAgentProfileResponse200ApplicationJsonZodInput = z.input; +export type ProvisionWhatsappDedicatedLineBadRequestProblemZodInput = z.input; -export type GetAgentProfileResponse200ApplicationJsonZodOutput = z.output; +export type ProvisionWhatsappDedicatedLineBadRequestProblemZodOutput = z.output; -export const zGetAgentProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zProvisionWhatsappDedicatedLineInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetAgentProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionWhatsappDedicatedLineInternalServerErrorProblemZodInput = z.input; -export type GetAgentProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionWhatsappDedicatedLineInternalServerErrorProblemZodOutput = z.output; -export const zGetAgentProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') +export const zPurchaseSmsNumberBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); + +export type PurchaseSmsNumberBadRequestProblemZodInput = z.input; + +export type PurchaseSmsNumberBadRequestProblemZodOutput = z.output; + +export const zPurchaseSmsNumberInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); + +export type PurchaseSmsNumberInternalServerErrorProblemZodInput = z.input; + +export type PurchaseSmsNumberInternalServerErrorProblemZodOutput = z.output; + +export const zPurchaseSmsNumberRequest = /* @__PURE__ */ (() => z.looseObject({ + areaCode: z.string().optional(), + countryCode: z.literal('US') }))(); -export type GetAgentProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type PurchaseSmsNumberRequestZodInput = z.input; -export type GetAgentProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type PurchaseSmsNumberRequestZodOutput = z.output; -export const zGetAgentProfileResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), +export const zQueryConcurrencyLimitProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('QUERY_CONCURRENCY_LIMIT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') + status: z.literal(429), + title: z.literal('Query Concurrency Limit'), + type: z.literal('https://photon.codes/docs/problems/query-concurrency-limit') +}).catchall(zJsonValue))(); + +export type QueryConcurrencyLimitProblemZodInput = z.input; + +export type QueryConcurrencyLimitProblemZodOutput = z.output; + +export const zQueryMessageMetricsResponse = /* @__PURE__ */ (() => z.looseObject({ + columns: z.array(zMessageMetricsQueryColumn), + rows: z.array(z.array(z.unknown())), + statistics: zMessageMetricsQueryStatistics }))(); -export type GetAgentProfileResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type QueryMessageMetricsResponseZodInput = z.input; -export type GetAgentProfileResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type QueryMessageMetricsResponseZodOutput = z.output; -export const zGetAgentProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zQueryResourceLimitProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('QUERY_RESOURCE_LIMIT'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + title: z.literal('Query Resource Limit'), + type: z.literal('https://photon.codes/docs/problems/query-resource-limit') +}).catchall(zJsonValue))(); -export type GetAgentProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type QueryResourceLimitProblemZodInput = z.input; -export type GetAgentProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type QueryResourceLimitProblemZodOutput = z.output; -export const zGetAgentProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zRateLimitedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('RATE_LIMITED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(429), + title: z.literal('Too Many Requests'), + type: z.literal('https://photon.codes/docs/problems/rate-limited') +}).catchall(zJsonValue))(); -export type GetAgentProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RateLimitedProblemZodInput = z.input; -export type GetAgentProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RateLimitedProblemZodOutput = z.output; -export const zGetAgentProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zRedeemAppInstallationDeliveryRequest = /* @__PURE__ */ (() => z.looseObject({ + appId: z.string(), + clientAssertion: z.string(), + code: z.string() }))(); -export type GetAgentProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type RedeemAppInstallationDeliveryRequestZodInput = z.input; -export type GetAgentProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type RedeemAppInstallationDeliveryRequestZodOutput = z.output; -export const zGetAgentProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zRedeemAppInstallationDeliveryResponse: z.ZodType = /* @__PURE__ */ (() => z.union([ + zCreatedAppInstallationDelivery, + zExistingAppInstallationDelivery ]))(); -export type GetAgentProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type RedeemAppInstallationDeliveryResponseZodInput = z.input; -export type GetAgentProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type RedeemAppInstallationDeliveryResponseZodOutput = z.output; -export const zGetAttachmentResponse200ApplicationJson = z.looseObject({ - contentType: z.string(), - createdAt: z.string(), - filename: z.string().optional(), - id: z.string(), - metadata: z.looseObject({}).optional(), - projectId: z.string(), - sizeBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() -}); +export const zRefreshOrganizationSsoConnectionBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type GetAttachmentResponse200ApplicationJsonZodInput = z.input; - -export type GetAttachmentResponse200ApplicationJsonZodOutput = z.output; - -export const zGetAttachmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetAttachmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetAttachmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetAttachmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ATTACHMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Attachment Not Found'), - type: z.literal('https://photon.codes/docs/problems/attachment-not-found') -}))(); +export type RefreshOrganizationSsoConnectionBadRequestProblemZodInput = z.input; -export type GetAttachmentResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type RefreshOrganizationSsoConnectionBadRequestProblemZodOutput = z.output; -export type GetAttachmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zRefreshOrganizationSsoConnectionForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export const zGetAttachmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type RefreshOrganizationSsoConnectionForbiddenProblemZodInput = z.input; -export type GetAttachmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type RefreshOrganizationSsoConnectionForbiddenProblemZodOutput = z.output; -export type GetAttachmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zRefreshOrganizationSsoConnectionInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export const zGetAttachmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export type RefreshOrganizationSsoConnectionInternalServerErrorProblemZodInput = z.input; + +export type RefreshOrganizationSsoConnectionInternalServerErrorProblemZodOutput = z.output; + +export const zRefreshTokenGrantRequest = /* @__PURE__ */ (() => z.looseObject({ + grant_type: z.literal('refresh_token'), + refresh_token: z.string() }))(); -export type GetAttachmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RefreshTokenGrantRequestZodInput = z.input; -export type GetAttachmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RefreshTokenGrantRequestZodOutput = z.output; -export const zGetAttachmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zDeviceTokenRequest: z.ZodType = /* @__PURE__ */ (() => z.union([ + zDeviceCodeGrantRequest, + zRefreshTokenGrantRequest +]))(); -export type GetAttachmentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type DeviceTokenRequestZodInput = z.input; -export type GetAttachmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type DeviceTokenRequestZodOutput = z.output; -export const zGetAttachmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zReleaseImessageDedicatedLineInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetAttachmentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseImessageDedicatedLineInternalServerErrorProblemZodInput = z.input; -export type GetAttachmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseImessageDedicatedLineInternalServerErrorProblemZodOutput = z.output; -/** - * Authoritative provisioning state. Poll the operation route while pending. - */ -export const zGetBillingOperationResponse200ApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - failure: z.null(), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.null(), - result: z.null(), - status: z.literal('pending'), - submittedAt: z.string().nullable() - }), - z.looseObject({ - failure: z.null(), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.string().nullable(), - result: z.looseObject({ - type: z.literal('version'), - version: z.string() - }), - status: z.literal('succeeded'), - submittedAt: z.string().nullable() - }), - z.looseObject({ - failure: z.looseObject({ - code: openEnum([ - 'payment_method_required', - 'payment_failed', - 'not_provisioned', - 'invalid_target', - 'internal' - ]), - detail: openEnum([ - 'cancellation_scheduled', - 'feature_not_sold_by_plan', - 'feature_not_found', - 'payment_timeout', - 'plan_activation_timeout', - 'plan_not_found', - 'quantity_out_of_range', - 'target_rejected' - ]).nullable(), - retryable: z.boolean() - }), - kind: openEnum(['change_plan', 'adjust_fixed_charge_quantity']), - operationId: z.string(), - resolvedAt: z.string().nullable(), - result: z.null(), - status: z.literal('failed'), - submittedAt: z.string().nullable() - }) -]))(); - -export type GetBillingOperationResponse200ApplicationJsonZodInput = z.input; - -export type GetBillingOperationResponse200ApplicationJsonZodOutput = z.output; - -export const zGetBillingOperationResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zReleaseResourceInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type GetBillingOperationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseResourceInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseResourceInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOperationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zReleaseSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetBillingOperationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOperationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('OPERATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Operation Not Found'), - type: z.literal('https://photon.codes/docs/problems/operation-not-found') -}))(); +export const zReleaseWhatsappDedicatedLineInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type GetBillingOperationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappDedicatedLineInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseWhatsappDedicatedLineInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOperationResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export const zReleaseWhatsappSharedLineAssignmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type GetBillingOperationResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseWhatsappSharedLineAssignmentInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOperationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zReplaceVoiceProfileInboundInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type GetBillingOperationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ReplaceVoiceProfileInboundInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ReplaceVoiceProfileInboundInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOperationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zRequestTimeoutProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('REQUEST_TIMEOUT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(504), + title: z.literal('Request Timeout'), + type: z.literal('https://photon.codes/docs/problems/request-timeout') +}).catchall(zJsonValue))(); -export type GetBillingOperationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RequestTimeoutProblemZodInput = z.input; -export type GetBillingOperationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RequestTimeoutProblemZodOutput = z.output; -export const zGetBillingOperationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zResetAccountProfilePictureBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem +]))(); -export type GetBillingOperationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ResetAccountProfilePictureBadRequestProblemZodInput = z.input; -export type GetBillingOperationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ResetAccountProfilePictureBadRequestProblemZodOutput = z.output; -export const zGetBillingOperationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zResetAccountProfilePictureInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetBillingOperationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ResetAccountProfilePictureInternalServerErrorProblemZodInput = z.input; -export type GetBillingOperationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ResetAccountProfilePictureInternalServerErrorProblemZodOutput = z.output; -export const zGetBillingOverviewResponse200ApplicationJson = z.looseObject({ - entitlementsVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - subscriptions: z.array(z.looseObject({ - cancelsAt: z.string().nullable(), - category: z.string(), - categoryDisplayName: z.string().nullish(), - currentPeriodEnd: z.string().nullable(), - entitlements: z.array(z.looseObject({ - featureKey: z.string(), - value: z.string() - })), - fixedCharges: z.array(z.looseObject({ - chargeModel: openEnum([ - 'graduated', - 'standard', - 'volume' - ]), - displayName: z.string(), - fixedChargeCode: z.string(), - payInAdvance: z.boolean(), - pricing: z.looseObject({ - amount: z.string().nullable(), - tiers: z.array(z.looseObject({ - flatAmount: z.string().nullable(), - fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - perUnitAmount: z.string().nullable(), - toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() - })) - }), - prorated: z.boolean(), - quantity: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })), - planCode: z.string(), - status: openEnum([ - 'active', - 'past_due', - 'terminated' - ]) - })), - usage: z.array(z.looseObject({ - amountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - category: z.string(), - categoryDisplayName: z.string().nullish(), - currency: z.string(), - displayName: z.string(), - metricCode: z.string(), - units: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })) -}); +export const zResetAgentProfileAvatarBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type GetBillingOverviewResponse200ApplicationJsonZodInput = z.input; +export type ResetAgentProfileAvatarBadRequestProblemZodInput = z.input; -export type GetBillingOverviewResponse200ApplicationJsonZodOutput = z.output; +export type ResetAgentProfileAvatarBadRequestProblemZodOutput = z.output; -export const zGetBillingOverviewResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), +export const zResourceMismatchProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('RESOURCE_MISMATCH'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); + status: z.literal(403), + title: z.literal('Resource Mismatch'), + type: z.literal('https://photon.codes/docs/problems/resource-mismatch') +}).catchall(zJsonValue))(); -export type GetBillingOverviewResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ResourceMismatchProblemZodInput = z.input; -export type GetBillingOverviewResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ResourceMismatchProblemZodOutput = z.output; -export const zGetBillingOverviewResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zAssignVoiceLineProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetBillingOverviewResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type AssignVoiceLineProfileForbiddenProblemZodInput = z.input; -export type GetBillingOverviewResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignVoiceLineProfileForbiddenProblemZodOutput = z.output; -export const zGetBillingOverviewResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export const zBatchUpdateVoiceLineProfileAssignmentsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetBillingOverviewResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsForbiddenProblemZodInput = z.input; -export type GetBillingOverviewResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsForbiddenProblemZodOutput = z.output; -export const zGetBillingOverviewResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCancelOperationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetBillingOverviewResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CancelOperationForbiddenProblemZodInput = z.input; -export type GetBillingOverviewResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelOperationForbiddenProblemZodOutput = z.output; -export const zGetBillingOverviewResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCancelSubscriptionForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetBillingOverviewResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionForbiddenProblemZodInput = z.input; -export type GetBillingOverviewResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionForbiddenProblemZodOutput = z.output; -export const zGetBillingOverviewResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zChangePlanForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetBillingOverviewResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetBillingOverviewResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetBillingOverviewResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetBillingOverviewResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetBillingOverviewResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetDefaultVoiceProfileResponse200ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type ChangePlanForbiddenProblemZodInput = z.input; -export type GetDefaultVoiceProfileResponse200ApplicationJsonZodInput = z.input; - -export type GetDefaultVoiceProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zGetDefaultVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetDefaultVoiceProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); +export type ChangePlanForbiddenProblemZodOutput = z.output; -export type GetDefaultVoiceProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; +export const zCheckProjectSlugAvailabilityForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetDefaultVoiceProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CheckProjectSlugAvailabilityForbiddenProblemZodInput = z.input; -export const zGetDefaultVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type CheckProjectSlugAvailabilityForbiddenProblemZodOutput = z.output; -export type GetDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export const zCommitAccountProfilePictureForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAccountProfilePictureForbiddenProblemZodInput = z.input; -export const zGetDefaultVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type CommitAccountProfilePictureForbiddenProblemZodOutput = z.output; -export type GetDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export const zCommitAgentProfileAvatarForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAgentProfileAvatarForbiddenProblemZodInput = z.input; -export const zGetDefaultVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type CommitAgentProfileAvatarForbiddenProblemZodOutput = z.output; -export type GetDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zConfigureVoiceProfileOutboundForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundForbiddenProblemZodInput = z.input; -export const zGetDefaultVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type ConfigureVoiceProfileOutboundForbiddenProblemZodOutput = z.output; -export type GetDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export const zConfirmAccountPhoneVerificationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); + +export type ConfirmAccountPhoneVerificationForbiddenProblemZodInput = z.input; -export type GetDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfirmAccountPhoneVerificationForbiddenProblemZodOutput = z.output; -export const zGetDefaultVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zConnectEmailDomainForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainForbiddenProblemZodInput = z.input; -export type GetDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainForbiddenProblemZodOutput = z.output; -export const zGetMessageMetricsBackfillResponse200ApplicationJson = z.looseObject({ - failedWrites: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - lastVerifiedAt: z.string().nullable(), - processedWrites: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - state: openEnum([ - 'disabled', - 'pending', - 'running', - 'verifying', - 'completed', - 'paused', - 'failed' - ]), - version: z.string() -}); +export const zConnectTelegramBotForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetMessageMetricsBackfillResponse200ApplicationJsonZodInput = z.input; +export type ConnectTelegramBotForbiddenProblemZodInput = z.input; -export type GetMessageMetricsBackfillResponse200ApplicationJsonZodOutput = z.output; +export type ConnectTelegramBotForbiddenProblemZodOutput = z.output; -export const zGetMessageMetricsBackfillResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zConnectWhatsappBusinessForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetMessageMetricsBackfillResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessForbiddenProblemZodInput = z.input; -export type GetMessageMetricsBackfillResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectWhatsappBusinessForbiddenProblemZodOutput = z.output; -export const zGetMessageMetricsBackfillResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zCountProjectsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetMessageMetricsBackfillResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CountProjectsForbiddenProblemZodInput = z.input; -export const zGetMessageMetricsBackfillResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type CountProjectsForbiddenProblemZodOutput = z.output; -export type GetMessageMetricsBackfillResponse503ApplicationProblemPlusJsonZodInput = z.input; +export const zCreateAccountProfilePictureUploadForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetMessageMetricsBackfillResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountProfilePictureUploadForbiddenProblemZodInput = z.input; -export const zGetMessageMetricsSqlSchemaResponse200ApplicationJson = z.looseObject({ - capabilities: z.looseObject({ - arrayJoin: z.boolean(), - ctes: z.boolean(), - joins: z.boolean(), - parameters: z.boolean(), - selectWithoutFrom: z.boolean(), - subqueries: z.boolean(), - unions: z.boolean() - }), - dialect: z.string(), - limits: z.looseObject({ - maximumParameterValueBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - maximumParameters: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - maximumSqlBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - maximumTotalParameterBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - }), - projectScoped: z.literal(true), - tables: z.array(z.looseObject({ - columns: z.array(z.looseObject({ - description: z.string(), - json: z.looseObject({ - commonPaths: z.array(z.looseObject({ - additionalProperties: z.literal(true).optional(), - contentTypes: z.array(z.string()).readonly().optional(), - directions: z.array(openEnum(['addressed', 'received'])).readonly().optional(), - expression: z.string(), - itemTypes: z.array(z.string()).readonly().optional(), - path: z.string(), - required: z.boolean(), - type: z.string(), - values: z.array(z.union([ - z.boolean(), - z.number(), - z.string() - ])).readonly().optional() - })).readonly(), - discriminators: z.array(z.union([z.looseObject({ - path: z.string(), - values: z.array(z.string()).readonly() - }), z.looseObject({ - oneOfPaths: z.array(z.string()).readonly() - })])).readonly(), - platforms: z.array(z.looseObject({ - name: openEnum([ - 'email', - 'imessage', - 'sms', - 'telegram', - 'voice', - 'whatsapp', - 'whatsapp_business' - ]), - paths: z.array(z.looseObject({ - additionalProperties: z.literal(true).optional(), - contentTypes: z.array(z.string()).readonly().optional(), - directions: z.array(openEnum(['addressed', 'received'])).readonly().optional(), - expression: z.string(), - itemTypes: z.array(z.string()).readonly().optional(), - path: z.string(), - required: z.boolean(), - type: z.string(), - values: z.array(z.union([ - z.boolean(), - z.number(), - z.string() - ])).readonly().optional() - })).readonly() - })).readonly(), - resource: z.looseObject({ - contractsVersion: z.string(), - type: z.literal('message') - }) - }).optional(), - name: z.string(), - type: z.string() - })), - currentState: z.string(), - description: z.string(), - name: z.enum(['message_events']) - })), - version: z.string() -}); +export type CreateAccountProfilePictureUploadForbiddenProblemZodOutput = z.output; -export type GetMessageMetricsSqlSchemaResponse200ApplicationJsonZodInput = z.input; +export const zCreateAccountServiceKeyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetMessageMetricsSqlSchemaResponse200ApplicationJsonZodOutput = z.output; +export type CreateAccountServiceKeyForbiddenProblemZodInput = z.input; -export const zGetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type CreateAccountServiceKeyForbiddenProblemZodOutput = z.output; -export type GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type GetMessageMetricsSqlSchemaResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetMessageMetricsSqlSchemaResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOperationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - operation: z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() - }), - resource: z.looseObject({ - abilities: z.array(z.string()), - createdAt: z.string(), - detail: z.looseObject({}), - projectId: z.string(), - resourceId: z.string(), - retiredAt: z.string().optional(), - state: openEnum([ - 'unallocated', - 'active', - 'retired' - ]), - type: z.string(), - updatedAt: z.string() - }).optional() -}))(); - -export type GetOperationResponse200ApplicationJsonZodInput = z.input; - -export type GetOperationResponse200ApplicationJsonZodOutput = z.output; - -export const zGetOperationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetOperationResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOperationResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOperationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('OPERATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Operation Not Found'), - type: z.literal('https://photon.codes/docs/problems/operation-not-found') -}))(); +export const zCreateAgentProfileAvatarUploadForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOperationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAgentProfileAvatarUploadForbiddenProblemZodInput = z.input; -export type GetOperationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAgentProfileAvatarUploadForbiddenProblemZodOutput = z.output; -export const zGetOperationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateDefaultVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOperationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateDefaultVoiceProfileForbiddenProblemZodInput = z.input; -export type GetOperationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateDefaultVoiceProfileForbiddenProblemZodOutput = z.output; -export const zGetOperationResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zCreateOrganizationPaymentMethodCheckoutForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOperationResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutForbiddenProblemZodInput = z.input; -export type GetOperationResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutForbiddenProblemZodOutput = z.output; -export const zGetOperationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCreateOrganizationSetupIntentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOperationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSetupIntentForbiddenProblemZodInput = z.input; -export type GetOperationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSetupIntentForbiddenProblemZodOutput = z.output; -export const zGetOperationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zCreateProjectApiKeyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOperationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectApiKeyForbiddenProblemZodInput = z.input; -export type GetOperationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectApiKeyForbiddenProblemZodOutput = z.output; -export const zGetOperationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zCreateProjectForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOperationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectForbiddenProblemZodInput = z.input; -export type GetOperationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectForbiddenProblemZodOutput = z.output; -export const zGetOrganizationBillingOverviewResponse200ApplicationJson = z.looseObject({ - entitlementsVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - subscription: z.looseObject({ - cancelsAt: z.string().nullable(), - currentPeriodEnd: z.string().nullable(), - entitlements: z.array(z.looseObject({ - featureKey: z.string(), - value: z.string() - })), - fixedCharges: z.array(z.looseObject({ - chargeModel: openEnum([ - 'graduated', - 'standard', - 'volume' - ]), - displayName: z.string(), - fixedChargeCode: z.string(), - payInAdvance: z.boolean(), - pricing: z.looseObject({ - amount: z.string().nullable(), - tiers: z.array(z.looseObject({ - flatAmount: z.string().nullable(), - fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - perUnitAmount: z.string().nullable(), - toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() - })) - }), - prorated: z.boolean(), - quantity: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })), - planCode: z.string(), - status: openEnum([ - 'active', - 'past_due', - 'terminated' - ]) - }).nullable() -}); +export const zCreateSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationBillingOverviewResponse200ApplicationJsonZodInput = z.input; +export type CreateSharedLineAssignmentForbiddenProblemZodInput = z.input; -export type GetOrganizationBillingOverviewResponse200ApplicationJsonZodOutput = z.output; +export type CreateSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export const zGetOrganizationBillingOverviewResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zCreateVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateVoiceProfileForbiddenProblemZodInput = z.input; -export type GetOrganizationBillingOverviewResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateVoiceProfileForbiddenProblemZodOutput = z.output; -export const zGetOrganizationBillingOverviewResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zCreateWebhookDestinationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationBillingOverviewResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWebhookDestinationForbiddenProblemZodInput = z.input; -export const zGetOrganizationBillingOverviewResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export type CreateWebhookDestinationForbiddenProblemZodOutput = z.output; -export type GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJsonZodInput = z.input; +export const zCreateWhatsappSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationBillingOverviewResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappSharedLineAssignmentForbiddenProblemZodInput = z.input; -export const zGetOrganizationBillingOverviewResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type CreateWhatsappSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export type GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJsonZodInput = z.input; +export const zCreateWhatsappVoipSenderForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationBillingOverviewResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderForbiddenProblemZodInput = z.input; -export const zGetOrganizationBillingOverviewResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type CreateWhatsappVoipSenderForbiddenProblemZodOutput = z.output; -export type GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zDeleteAccountForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationBillingOverviewResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteAccountForbiddenProblemZodInput = z.input; -export const zGetOrganizationBillingOverviewResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type DeleteAccountForbiddenProblemZodOutput = z.output; -export type GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationBillingOverviewResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationBillingOverviewResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationBillingOverviewResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationConnectionStatusResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - membership: z.looseObject({ - errorCode: z.string().nullable(), - retryAt: z.string().nullable(), - status: openEnum([ - 'pending', - 'syncing', - 'ready', - 'error', - 'blocked' - ]) - }), - organization: z.looseObject({ - errorCode: z.string().nullable(), - status: openEnum([ - 'pending', - 'syncing', - 'ready', - 'error', - 'blocked' - ]) - }), - organizationId: z.string(), - synchronized: z.boolean() -}))(); +export const zDeleteProjectForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse200ApplicationJsonZodInput = z.input; +export type DeleteProjectForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse200ApplicationJsonZodOutput = z.output; +export type DeleteProjectForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zDeleteVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_CONNECTION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization Connection Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-connection-not-found') -}))(); +export const zDeleteVoiceProfileInboundForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileInboundForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileInboundForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SYNC_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization Synchronization Unavailable'), - type: z.literal('https://photon.codes/docs/problems/organization-sync-unavailable') -}))(); +export const zDeleteVoiceProfileOutboundForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileOutboundForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileOutboundForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zDeleteWebhookDestinationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteWebhookDestinationForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteWebhookDestinationForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zDisconnectWhatsappBusinessAccountForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type DisconnectWhatsappBusinessAccountForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type DisconnectWhatsappBusinessAccountForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zDownloadAttachmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type DownloadAttachmentForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type DownloadAttachmentForbiddenProblemZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zGetAccountForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetAccountForbiddenProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAccountForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse200ApplicationJson = z.looseObject({ - cardOnFile: z.boolean(), - paymentMethod: z.looseObject({ - brand: z.string().nullable(), - expiresMonth: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - expiresYear: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - last4: z.string().nullable() - }).nullable() -}); +export const zGetAgentProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse200ApplicationJsonZodInput = z.input; +export type GetAgentProfileForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse200ApplicationJsonZodOutput = z.output; +export type GetAgentProfileForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zGetAttachmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type GetAttachmentForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAttachmentForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetBillingOperationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetBillingOperationForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetBillingOperationForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); +export const zGetBillingOverviewForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type GetBillingOverviewForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type GetBillingOverviewForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetDefaultVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetDefaultVoiceProfileForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetDefaultVoiceProfileForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetMessageMetricsBackfillForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetMessageMetricsBackfillForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetMessageMetricsBackfillForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetMessageMetricsSqlSchemaForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetMessageMetricsSqlSchemaForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetMessageMetricsSqlSchemaForbiddenProblemZodOutput = z.output; -export const zGetOrganizationPaymentMethodResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zGetOperationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetOperationForbiddenProblemZodInput = z.input; -export type GetOrganizationPaymentMethodResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOperationForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - connectionChangedAt: z.string().nullable(), - connectionGeneration: z.string(), - connectionState: openEnum([ - 'not_configured', - 'configuring', - 'ready', - 'error' - ]), - connectionType: z.string().optional(), - desiredSsoEnforced: z.boolean(), - domains: z.array(z.looseObject({ - domain: z.string(), - state: openEnum([ - 'verified', - 'pending', - 'failed' - ]) - })).optional(), - organizationId: z.string(), - policySyncStatus: openEnum(['synced', 'manual_required']), - providerAvailable: z.boolean().optional(), - ssoEnforced: z.boolean(), - ssoJitEnabled: z.boolean(), - version: z.string() -}))(); +export const zGetOrganizationBillingOverviewForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse200ApplicationJsonZodInput = z.input; +export type GetOrganizationBillingOverviewForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse200ApplicationJsonZodOutput = z.output; +export type GetOrganizationBillingOverviewForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) +export const zGetOrganizationPaymentMethodForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationPaymentMethodForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationPaymentMethodForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') -}))(); +export const zGetProjectClosureStatusForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectClosureStatusForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectClosureStatusForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') -}))(); +export const zGetProjectForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') -}))(); +export const zGetProjectImessagePlatformForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectImessagePlatformForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectImessagePlatformForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetProjectWhatsappPlatformForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectWhatsappPlatformForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectWhatsappPlatformForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetResourceForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetResourceForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetResourceForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetSharedLineAssignmentForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zGetVoiceLineProfileAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetVoiceLineProfileAssignmentForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetVoiceLineProfileAssignmentForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - deletionOperationId: z.string().nullable(), - domains: z.array(z.looseObject({ - blockers: z.array(z.string()), - domain: openEnum([ - 'projects', - 'billing', - 'platforms', - 'call_registry' - ]), - ready: z.boolean() - })), - organizationId: z.string(), - projectId: z.string(), - ready: z.boolean() -}))(); +export const zGetVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse200ApplicationJsonZodInput = z.input; +export type GetVoiceProfileForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse200ApplicationJsonZodOutput = z.output; +export type GetVoiceProfileForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zGetWebhookDestinationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type GetWebhookDestinationForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWebhookDestinationForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetWebhookEventSchemaForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetProjectClosureStatusResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetWebhookEventSchemaForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWebhookEventSchemaForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export const zGetWhatsappBusinessAccountForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessAccountForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessAccountForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetWhatsappBusinessVerificationCodeForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessVerificationCodeForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessVerificationCodeForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetWhatsappSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappSharedLineAssignmentForbiddenProblemZodInput = z.input; -export type GetProjectClosureStatusResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export const zGetProjectClosureStatusResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetWhatsappSignupConfigForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectClosureStatusResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectClosureStatusResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectClosureStatusResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type GetProjectClosureStatusResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectClosureStatusResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse200ApplicationJson: z.ZodType = z.union([ - z.looseObject({ - maxUserAssignments: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mode: z.literal('shared') - }), - z.looseObject({ - mode: z.literal('dedicated') - }) -]); - -export type GetProjectImessagePlatformResponse200ApplicationJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse200ApplicationJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type GetWhatsappSignupConfigForbiddenProblemZodInput = z.input; -export type GetProjectImessagePlatformResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappSignupConfigForbiddenProblemZodOutput = z.output; -export type GetProjectImessagePlatformResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zListAccountServiceKeysForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetProjectImessagePlatformResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ListAccountServiceKeysForbiddenProblemZodInput = z.input; -export type GetProjectImessagePlatformResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - agentProfile: z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() - }), - billingInitialization: openEnum([ - 'pending', - 'retry_required', - 'completed', - 'unknown' - ]).optional(), - createdAt: z.string(), - createdByAccountId: z.string().nullable(), - createdByActorId: z.string().nullable(), - createdByActorKind: openEnum(['account', 'service_identity']).nullable(), - deletedAt: z.string().nullable(), - name: z.string(), - organizationId: z.string(), - projectId: z.string(), - slug: z.string(), - updatedAt: z.string() -}))(); +export type ListAccountServiceKeysForbiddenProblemZodOutput = z.output; + +export const zListAttachmentsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse200ApplicationJsonZodInput = z.input; +export type ListAttachmentsForbiddenProblemZodInput = z.input; -export type GetProjectResponse200ApplicationJsonZodOutput = z.output; +export type ListAttachmentsForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zListBillingPlansForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetProjectResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListBillingPlansForbiddenProblemZodInput = z.input; -export type GetProjectResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListBillingPlansForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export const zListInvoicesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListInvoicesForbiddenProblemZodInput = z.input; -export type GetProjectResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListInvoicesForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export const zListNumberAreaCodesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberAreaCodesForbiddenProblemZodInput = z.input; -export type GetProjectResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberAreaCodesForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zListNumberCountriesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberCountriesForbiddenProblemZodInput = z.input; -export type GetProjectResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberCountriesForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListOperationsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListOperationsForbiddenProblemZodInput = z.input; -export type GetProjectResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListOperationsForbiddenProblemZodOutput = z.output; -export const zGetProjectResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zListProjectApiKeysForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetProjectResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type GetProjectResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse200ApplicationJson: z.ZodType = z.union([ - z.looseObject({ - maxUserAssignments: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mode: z.literal('shared') - }), - z.looseObject({ - mode: z.literal('dedicated') - }) -]); - -export type GetProjectWhatsappPlatformResponse200ApplicationJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse200ApplicationJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type ListProjectApiKeysForbiddenProblemZodInput = z.input; -export type GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListProjectApiKeysForbiddenProblemZodOutput = z.output; -export type GetProjectWhatsappPlatformResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zListProjectPlatformsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetProjectWhatsappPlatformResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ListProjectPlatformsForbiddenProblemZodInput = z.input; -export type GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetResourceResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - abilities: z.array(z.string()), - createdAt: z.string(), - detail: z.looseObject({}), - projectId: z.string(), - resourceId: z.string(), - retiredAt: z.string().optional(), - state: openEnum([ - 'unallocated', - 'active', - 'retired' - ]), - type: z.string(), - updatedAt: z.string() -}))(); +export type ListProjectPlatformsForbiddenProblemZodOutput = z.output; + +export const zListProjectsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetResourceResponse200ApplicationJsonZodInput = z.input; +export type ListProjectsForbiddenProblemZodInput = z.input; -export type GetResourceResponse200ApplicationJsonZodOutput = z.output; +export type ListProjectsForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zListResourcesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetResourceResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListResourcesForbiddenProblemZodInput = z.input; -export type GetResourceResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListResourcesForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); +export const zListSharedLineAssignmentsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetResourceResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListSharedLineAssignmentsForbiddenProblemZodInput = z.input; -export type GetResourceResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListSharedLineAssignmentsForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zListVoiceProfilesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetResourceResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListVoiceProfilesForbiddenProblemZodInput = z.input; -export type GetResourceResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ListVoiceProfilesForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zListWebhookApiVersionsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetResourceResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookApiVersionsForbiddenProblemZodInput = z.input; -export type GetResourceResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookApiVersionsForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListWebhookDestinationsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetResourceResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookDestinationsForbiddenProblemZodInput = z.input; -export type GetResourceResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookDestinationsForbiddenProblemZodOutput = z.output; -export const zGetResourceResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type GetResourceResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetResourceResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetResourceResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zListWebhookEgressAddressesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetResourceResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookEgressAddressesForbiddenProblemZodInput = z.input; -export type GetResourceResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookEgressAddressesForbiddenProblemZodOutput = z.output; -export const zGetSharedLineAssignmentResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() -}))(); - -export type GetSharedLineAssignmentResponse200ApplicationJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse200ApplicationJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zListWebhookEventTypesForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ASSIGNMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Assignment Not Found'), - type: z.literal('https://photon.codes/docs/problems/assignment-not-found') -}))(); - -export type GetSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); - -export type GetSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); - -export type GetSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type GetSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type GetSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse200ApplicationJson = z.looseObject({ - campaign: z.looseObject({ - id: z.string(), - organizationId: z.string() - }).nullable(), - campaignObservedAt: z.string().nullable(), - eligibility: openEnum([ - 'eligible', - 'blocked', - 'unknown' - ]), - observedAt: z.string().nullable(), - operationId: z.string().nullable(), - providerAssignmentStatus: z.string().nullable(), - reasonCode: z.string().nullable(), - requestedCampaignId: z.string().nullable(), - resourceId: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); - -export type GetSmsLineCampaignAssignmentResponse200ApplicationJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse200ApplicationJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('SMS_CAMPAIGN_INVALID_REQUEST'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid SMS campaign request'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-invalid-request') -}))(); - -export type GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_ORGANIZATION_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Campaign belongs to another organization'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-organization-mismatch') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Campaign not found'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-found') - }), - z.looseObject({ - code: z.literal('SMS_LINE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('SMS line not found'), - type: z.literal('https://photon.codes/docs/problems/sms-line-not-found') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('SMS_LINE_UNSUPPORTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('SMS line unsupported'), - type: z.literal('https://photon.codes/docs/problems/sms-line-unsupported') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign not ready'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-ready') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment version conflict'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-version-conflict') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_MUTATION_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment mutation in progress'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-mutation-in-progress') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CAPACITY_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign number capacity exhausted'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-capacity-exceeded') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_RECONCILIATION_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign reconciliation required'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-reconciliation-required') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); - -export type GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Campaign context unavailable'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-context-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse200ApplicationJson = z.looseObject({ - profileId: z.string().optional(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), - projectId: z.string(), - resourceId: z.string(), - resourceVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() -}); - -export type GetVoiceLineProfileAssignmentResponse200ApplicationJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse200ApplicationJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); - -export type GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); - -export type GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); - -export type GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse200ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); - -export type GetVoiceProfileResponse200ApplicationJsonZodInput = z.input; - -export type GetVoiceProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); - -export type GetVoiceProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); - -export type GetVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); - -export type GetVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type GetVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type GetVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type GetVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWebhookDestinationResponse200ApplicationJson = z.looseObject({ - apiVersion: z.string(), - createdAt: z.string(), - deletedAt: z.string().nullable(), - description: z.string().nullable(), - destinationId: z.string(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), - name: z.string(), - projectId: z.string(), - status: openEnum(['enabled', 'disabled']), - updatedAt: z.string(), - url: z.string() -}); - -export type GetWebhookDestinationResponse200ApplicationJsonZodInput = z.input; - -export type GetWebhookDestinationResponse200ApplicationJsonZodOutput = z.output; - -export const zGetWebhookDestinationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetWebhookDestinationResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWebhookDestinationResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWebhookDestinationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Webhook Destination Not Found'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-not-found') -}))(); - -export type GetWebhookDestinationResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWebhookDestinationResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWebhookDestinationResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Webhook Destination Deleted'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-deleted') -}))(); - -export type GetWebhookDestinationResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookEventTypesForbiddenProblemZodInput = z.input; -export type GetWebhookDestinationResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookEventTypesForbiddenProblemZodOutput = z.output; -export const zGetWebhookDestinationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListWhatsappAccountPhoneNumbersForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookDestinationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappAccountPhoneNumbersForbiddenProblemZodInput = z.input; -export type GetWebhookDestinationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappAccountPhoneNumbersForbiddenProblemZodOutput = z.output; -export const zGetWebhookDestinationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zListWhatsappSharedLineAssignmentsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookDestinationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappSharedLineAssignmentsForbiddenProblemZodInput = z.input; -export type GetWebhookDestinationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappSharedLineAssignmentsForbiddenProblemZodOutput = z.output; -export const zGetWebhookDestinationResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zProvisionImessageDedicatedLineForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookDestinationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineForbiddenProblemZodInput = z.input; -export type GetWebhookDestinationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionImessageDedicatedLineForbiddenProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zProvisionWhatsappDedicatedLineForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookEventSchemaResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionWhatsappDedicatedLineForbiddenProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionWhatsappDedicatedLineForbiddenProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zPurchaseSmsNumberForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type PurchaseSmsNumberForbiddenProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type PurchaseSmsNumberForbiddenProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zQueryMessageMetricsForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookEventSchemaResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type QueryMessageMetricsForbiddenProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type QueryMessageMetricsForbiddenProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zReleaseImessageDedicatedLineForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookEventSchemaResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseImessageDedicatedLineForbiddenProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseImessageDedicatedLineForbiddenProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zReleaseResourceForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWebhookEventSchemaResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseResourceForbiddenProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseResourceForbiddenProblemZodOutput = z.output; -export const zGetWhatsappBusinessAccountResponse200ApplicationJson = z.looseObject({ - accountName: z.string().nullable(), - alerts: z.array(z.looseObject({ - description: z.string(), - entityId: z.string(), - entityType: z.string(), - observedAt: z.string(), - severity: z.string(), - status: z.string(), - type: z.string() - })), - businessId: z.string(), - businessName: z.string().nullable(), - connectedAt: z.string(), - maxPhoneNumbersPerBusiness: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), - outboundCapacity: openEnum([ - '50', - '250', - '1000', - '2000', - '10000', - '100000', - 'UNLIMITED', - 'UNTIERED', - 'UNKNOWN' - ]), - restriction: z.looseObject({ - observedAt: z.string(), - status: openEnum([ - 'FLAGGED', - 'DISABLED', - 'REINSTATED', - 'UNKNOWN' - ]) - }).nullable(), - reviewStatus: openEnum([ - 'PENDING', - 'APPROVED', - 'REJECTED', - 'UNKNOWN' - ]), - senderCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - subscribedAt: z.string().optional(), - wabaId: z.string() -}); +export const zReleaseSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWhatsappBusinessAccountResponse200ApplicationJsonZodInput = z.input; - -export type GetWhatsappBusinessAccountResponse200ApplicationJsonZodOutput = z.output; - -export const zGetWhatsappBusinessAccountResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessAccountResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessAccountResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WHATSAPP_WABA_NOT_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp Business Account Not Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-waba-not-connected') -}))(); +export type ReleaseSharedLineAssignmentForbiddenProblemZodInput = z.input; -export type GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export type GetWhatsappBusinessAccountResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zReleaseWhatsappDedicatedLineForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetWhatsappBusinessAccountResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type ReleaseWhatsappDedicatedLineForbiddenProblemZodInput = z.input; -export type GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappDedicatedLineForbiddenProblemZodOutput = z.output; -export type GetWhatsappBusinessAccountResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zReleaseWhatsappSharedLineAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetWhatsappBusinessAccountResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type ReleaseWhatsappSharedLineAssignmentForbiddenProblemZodInput = z.input; -export type GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappSharedLineAssignmentForbiddenProblemZodOutput = z.output; -export type GetWhatsappBusinessAccountResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export const zReplaceVoiceProfileInboundForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetWhatsappBusinessAccountResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ReplaceVoiceProfileInboundForbiddenProblemZodInput = z.input; -export type GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ReplaceVoiceProfileInboundForbiddenProblemZodOutput = z.output; -export type GetWhatsappBusinessAccountResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zResetAccountProfilePictureForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export const zGetWhatsappBusinessAccountResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export type ResetAccountProfilePictureForbiddenProblemZodInput = z.input; + +export type ResetAccountProfilePictureForbiddenProblemZodOutput = z.output; + +export const zResetAgentProfileAvatarForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); + +export type ResetAgentProfileAvatarForbiddenProblemZodInput = z.input; + +export type ResetAgentProfileAvatarForbiddenProblemZodOutput = z.output; + +export const zResourceNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('RESOURCE_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(404), + title: z.literal('Resource Not Found'), + type: z.literal('https://photon.codes/docs/problems/resource-not-found') +}).catchall(zJsonValue))(); -export type GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ResourceNotFoundProblemZodInput = z.input; -export type GetWhatsappBusinessAccountResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ResourceNotFoundProblemZodOutput = z.output; -export const zGetWhatsappBusinessAccountResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zResourceState = /* @__PURE__ */ (() => openEnum([ + 'unallocated', + 'active', + 'retired' ]))(); -export type GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ResourceStateZodInput = z.input; -export type GetWhatsappBusinessAccountResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ResourceStateZodOutput = z.output; -export const zGetWhatsappBusinessVerificationCodeResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.string(), - receivedAt: z.string() +export const zResource = /* @__PURE__ */ (() => z.looseObject({ + abilities: z.array(z.string()), + createdAt: z.string(), + detail: z.looseObject({}), + projectId: z.string(), + resourceId: z.string(), + retiredAt: z.string().optional(), + state: zResourceState, + type: z.string(), + updatedAt: z.string() }))(); -export type GetWhatsappBusinessVerificationCodeResponse200ApplicationJsonZodInput = z.input; - -export type GetWhatsappBusinessVerificationCodeResponse200ApplicationJsonZodOutput = z.output; - -export const zGetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessVerificationCodeResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') - }), - z.looseObject({ - code: z.literal('WHATSAPP_VERIFICATION_CODE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp Verification Code Not Found'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-verification-code-not-found') - }) -]))(); - -export type GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessVerificationCodeResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('WHATSAPP_VERIFICATION_WINDOW_EXPIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('WhatsApp Verification Window Expired'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-verification-window-expired') - }) -]))(); - -export type GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessVerificationCodeResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export type ResourceZodInput = z.input; + +export type ResourceZodOutput = z.output; + +export const zGetOperationResponse = /* @__PURE__ */ (() => z.looseObject({ + operation: zOperation, + resource: zResource.optional() }))(); -export type GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetOperationResponseZodInput = z.input; -export type GetWhatsappBusinessVerificationCodeResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOperationResponseZodOutput = z.output; -export const zGetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zResourcePage = /* @__PURE__ */ (() => z.looseObject({ + nextPageToken: z.string().optional(), + resources: z.array(zResource) }))(); -export type GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ResourcePageZodInput = z.input; -export type GetWhatsappBusinessVerificationCodeResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ResourcePageZodOutput = z.output; -export const zGetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zResumeSubscriptionBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionBadRequestProblemZodInput = z.input; -export type GetWhatsappBusinessVerificationCodeResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionBadRequestProblemZodOutput = z.output; -export const zGetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zResumeSubscriptionConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zFailedPreconditionProblem, + zIdempotencyRequestInProgressProblem ]))(); -export type GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionConflictProblemZodInput = z.input; -export type GetWhatsappBusinessVerificationCodeResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionConflictProblemZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() -}))(); +export const zResumeSubscriptionForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWhatsappSharedLineAssignmentResponse200ApplicationJsonZodInput = z.input; +export type ResumeSubscriptionForbiddenProblemZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse200ApplicationJsonZodOutput = z.output; +export type ResumeSubscriptionForbiddenProblemZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zResumeSubscriptionInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionInternalServerErrorProblemZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionInternalServerErrorProblemZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ASSIGNMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Assignment Not Found'), - type: z.literal('https://photon.codes/docs/problems/assignment-not-found') +export const zResumeSubscriptionRequest = /* @__PURE__ */ (() => z.looseObject({ + category: z.string() }))(); -export type GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionRequestZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionRequestZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zResumeSubscriptionResponse = /* @__PURE__ */ (() => z.looseObject({ + category: z.string(), + resumed: z.boolean() }))(); -export type GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionResponseZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionResponseZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zRetryEnterpriseLoginRequest = /* @__PURE__ */ (() => z.looseObject({ + retryToken: z.string() }))(); -export type GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type RetryEnterpriseLoginRequestZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type RetryEnterpriseLoginRequestZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zRetryOrganizationConnectionSyncForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); -export type GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RetryOrganizationConnectionSyncForbiddenProblemZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RetryOrganizationConnectionSyncForbiddenProblemZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zRetryOrganizationConnectionSyncInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type RetryOrganizationConnectionSyncInternalServerErrorProblemZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type RetryOrganizationConnectionSyncInternalServerErrorProblemZodOutput = z.output; -export const zGetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zRevokeAccountServiceKeyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidArgumentProblem, + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem ]))(); -export type GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyBadRequestProblemZodInput = z.input; -export type GetWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyBadRequestProblemZodOutput = z.output; -export const zGetWhatsappSignupConfigResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - configId: z.string(), - graphVersion: z.string(), - scopes: z.array(z.string()) -}))(); +export const zRevokeAccountServiceKeyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWhatsappSignupConfigResponse200ApplicationJsonZodInput = z.input; +export type RevokeAccountServiceKeyForbiddenProblemZodInput = z.input; -export type GetWhatsappSignupConfigResponse200ApplicationJsonZodOutput = z.output; +export type RevokeAccountServiceKeyForbiddenProblemZodOutput = z.output; -export const zGetWhatsappSignupConfigResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zRevokeAccountServiceKeyInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyInternalServerErrorProblemZodInput = z.input; -export type GetWhatsappSignupConfigResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyInternalServerErrorProblemZodOutput = z.output; -export const zGetWhatsappSignupConfigResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zRevokeAccountServiceKeyNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zAccountNotFoundProblem, + zAccountServiceKeyNotFoundProblem +]))(); -export type GetWhatsappSignupConfigResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyNotFoundProblemZodInput = z.input; -export type GetWhatsappSignupConfigResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyNotFoundProblemZodOutput = z.output; -export const zGetWhatsappSignupConfigResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zRevokeAccountServiceKeyResponse = /* @__PURE__ */ (() => z.looseObject({ + serviceKey: zAccountServiceKey }))(); -export type GetWhatsappSignupConfigResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyResponseZodInput = z.input; -export type GetWhatsappSignupConfigResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyResponseZodOutput = z.output; -export const zGetWhatsappSignupConfigResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); +export const zRevokeAuthorizedApplicationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); + +export type RevokeAuthorizedApplicationForbiddenProblemZodInput = z.input; + +export type RevokeAuthorizedApplicationForbiddenProblemZodOutput = z.output; + +export const zRevokeAuthorizedApplicationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); + +export type RevokeAuthorizedApplicationInternalServerErrorProblemZodInput = z.input; + +export type RevokeAuthorizedApplicationInternalServerErrorProblemZodOutput = z.output; + +export const zRevokeProjectApiKeyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); + +export type RevokeProjectApiKeyBadRequestProblemZodInput = z.input; + +export type RevokeProjectApiKeyBadRequestProblemZodOutput = z.output; + +export const zRevokeProjectApiKeyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type GetWhatsappSignupConfigResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeProjectApiKeyForbiddenProblemZodInput = z.input; -export type GetWhatsappSignupConfigResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeProjectApiKeyForbiddenProblemZodOutput = z.output; -export const zListAccountServiceKeysResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - serviceKeys: z.array(z.looseObject({ - accountId: z.string(), - createdAt: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - revokedAt: z.string().nullable(), - serviceKeyId: z.string() - })) -}))(); +export const zRevokeProjectApiKeyNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectNotFoundProblem, + zApiKeyNotFoundProblem +]))(); -export type ListAccountServiceKeysResponse200ApplicationJsonZodInput = z.input; +export type RevokeProjectApiKeyNotFoundProblemZodInput = z.input; -export type ListAccountServiceKeysResponse200ApplicationJsonZodOutput = z.output; +export type RevokeProjectApiKeyNotFoundProblemZodOutput = z.output; -export const zListAccountServiceKeysResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zRotateVoiceProfileOutboundCredentialBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ListAccountServiceKeysResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialBadRequestProblemZodInput = z.input; -export type ListAccountServiceKeysResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialBadRequestProblemZodOutput = z.output; -export const zListAccountServiceKeysResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export const zRotateVoiceProfileOutboundCredentialForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListAccountServiceKeysResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialForbiddenProblemZodInput = z.input; -export type ListAccountServiceKeysResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialForbiddenProblemZodOutput = z.output; -export const zListAccountServiceKeysResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export const zRotateVoiceProfileOutboundCredentialInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ListAccountServiceKeysResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialInternalServerErrorProblemZodInput = z.input; -export type ListAccountServiceKeysResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialInternalServerErrorProblemZodOutput = z.output; -export const zListAccountServiceKeysResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zRotateVoiceProfileOutboundCredentialResponse = z.looseObject({ + password: z.string().nullable(), + previousPasswordValidUntil: z.string().nullable(), + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type ListAccountServiceKeysResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialResponseZodInput = z.input; -export type ListAccountServiceKeysResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialResponseZodOutput = z.output; -export const zListAccountServiceKeysResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zRotateWebhookSigningSecretBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); -export type ListAccountServiceKeysResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAccountServiceKeysResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAccountServiceKeysResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type ListAccountServiceKeysResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAccountServiceKeysResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAttachmentsResponse200ApplicationJson = z.looseObject({ - items: z.array(z.looseObject({ - contentType: z.string(), - createdAt: z.string(), - filename: z.string().optional(), - id: z.string(), - metadata: z.looseObject({}).optional(), - projectId: z.string(), - sizeBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() - })), - nextPageToken: z.string().optional() -}); +export type RotateWebhookSigningSecretBadRequestProblemZodInput = z.input; -export type ListAttachmentsResponse200ApplicationJsonZodInput = z.input; - -export type ListAttachmentsResponse200ApplicationJsonZodOutput = z.output; - -export const zListAttachmentsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListAttachmentsResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAttachmentsResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAttachmentsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type RotateWebhookSigningSecretBadRequestProblemZodOutput = z.output; -export type ListAttachmentsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export const zRotateWebhookSigningSecretForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListAttachmentsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateWebhookSigningSecretForbiddenProblemZodInput = z.input; -export const zListAttachmentsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type RotateWebhookSigningSecretForbiddenProblemZodOutput = z.output; -export type ListAttachmentsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zRotateWebhookSigningSecretRequest = z.looseObject({ + overlapSeconds: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional() +}); -export type ListAttachmentsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateWebhookSigningSecretRequestZodInput = z.input; -export const zListAttachmentsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type RotateWebhookSigningSecretRequestZodOutput = z.output; -export type ListAttachmentsResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAttachmentsResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAttachmentsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type ListAttachmentsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAttachmentsResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAuthorizedApplicationsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - authorizedApplications: z.array(z.looseObject({ - application: z.looseObject({ - applicationType: z.string(), - clientId: z.string(), - createdAt: z.string(), - description: z.string().nullable(), - id: z.string(), - isFirstParty: z.boolean(), - name: z.string(), - redirectUris: z.array(z.looseObject({ - default: z.boolean(), - uri: z.string() - })), - scopes: z.array(z.string()), - updatedAt: z.string(), - usesPkce: z.boolean() - }), - authorizationId: z.string(), - grantedScopes: z.array(z.string()), - oauthResource: z.string().nullable() - })), - listMetadata: z.looseObject({ - after: z.string().nullable(), - before: z.string().nullable() - }) -}))(); - -export type ListAuthorizedApplicationsResponse200ApplicationJsonZodInput = z.input; - -export type ListAuthorizedApplicationsResponse200ApplicationJsonZodOutput = z.output; - -export const zListAuthorizedApplicationsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zRotateWebhookSigningSecretResponse = /* @__PURE__ */ (() => z.looseObject({ + previousSecretExpiresAt: z.string().nullable(), + signingSecret: z.string() }))(); -export type ListAuthorizedApplicationsResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAuthorizedApplicationsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateWebhookSigningSecretResponseZodInput = z.input; -export const zListAuthorizedApplicationsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type RotateWebhookSigningSecretResponseZodOutput = z.output; -export type ListAuthorizedApplicationsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zSelectableWebhookApiVersionStatus = /* @__PURE__ */ (() => openEnum([ + 'preview', + 'latest', + 'maintain' +]))(); -export type ListAuthorizedApplicationsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SelectableWebhookApiVersionStatusZodInput = z.input; -export const zListAuthorizedApplicationsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type SelectableWebhookApiVersionStatusZodOutput = z.output; -export type ListAuthorizedApplicationsResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAuthorizedApplicationsResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAuthorizedApplicationsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAuthorizedApplicationsResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListBillingPlansResponse200ApplicationJson = z.looseObject({ - plans: z.object({}).catchall(z.array(z.looseObject({ - baseAmountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - categoryDisplayName: z.string().nullish(), - currency: z.string(), - description: z.string().nullable(), - entitlements: z.array(z.looseObject({ - featureKey: z.string(), - value: z.string() - })), - fixedCharges: z.array(z.looseObject({ - chargeModel: openEnum([ - 'graduated', - 'standard', - 'volume' - ]), - displayName: z.string(), - fixedChargeCode: z.string(), - payInAdvance: z.boolean(), - pricing: z.looseObject({ - amount: z.string().nullable(), - tiers: z.array(z.looseObject({ - flatAmount: z.string().nullable(), - fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - perUnitAmount: z.string().nullable(), - toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() - })) - }), - prorated: z.boolean(), - quantity: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })), - interval: openEnum([ - 'weekly', - 'monthly', - 'quarterly', - 'semiannual', - 'yearly' - ]), - name: z.string(), - payInAdvance: z.boolean(), - planCode: z.string(), - usageCharges: z.array(z.looseObject({ - chargeCode: z.string().nullable(), - chargeModel: openEnum([ - 'dynamic', - 'graduated', - 'graduated_percentage', - 'package', - 'percentage', - 'standard', - 'volume' - ]), - displayName: z.string().nullable(), - filters: z.array(z.looseObject({ - displayName: z.string().nullable(), - pricing: z.looseObject({ - amount: z.string().nullable(), - fixedAmount: z.string().nullable(), - freeUnits: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - freeUnitsPerEvents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - freeUnitsPerTotalAggregation: z.string().nullable(), - packageSize: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - perTransactionMaxAmount: z.string().nullable(), - perTransactionMinAmount: z.string().nullable(), - pricingGroupKeys: z.array(z.string()), - rate: z.string().nullable(), - tiers: z.array(z.looseObject({ - flatAmount: z.string().nullable(), - fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - perUnitAmount: z.string().nullable(), - rate: z.string().nullable(), - toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() - })) - }), - values: z.array(z.looseObject({ - key: z.string(), - values: z.array(z.string()) - })) - })), - invoiceable: z.boolean(), - metricCode: z.string(), - minimumAmountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - payInAdvance: z.boolean(), - pricing: z.looseObject({ - amount: z.string().nullable(), - fixedAmount: z.string().nullable(), - freeUnits: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - freeUnitsPerEvents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - freeUnitsPerTotalAggregation: z.string().nullable(), - packageSize: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), - perTransactionMaxAmount: z.string().nullable(), - perTransactionMinAmount: z.string().nullable(), - pricingGroupKeys: z.array(z.string()), - rate: z.string().nullable(), - tiers: z.array(z.looseObject({ - flatAmount: z.string().nullable(), - fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - perUnitAmount: z.string().nullable(), - rate: z.string().nullable(), - toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() - })) - }), - prorated: z.boolean() - })) - }))) -}); +export const zSharedLineAssignmentPlatform = /* @__PURE__ */ (() => openEnum(['imessage', 'whatsapp']))(); -export type ListBillingPlansResponse200ApplicationJsonZodInput = z.input; +export type SharedLineAssignmentPlatformZodInput = z.input; -export type ListBillingPlansResponse200ApplicationJsonZodOutput = z.output; +export type SharedLineAssignmentPlatformZodOutput = z.output; -export const zListBillingPlansResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') +export const zSharedLineAssignment = /* @__PURE__ */ (() => z.looseObject({ + assignedPhoneNumber: z.string(), + assignmentId: z.string(), + createdAt: z.string(), + email: z.string().optional(), + firstName: z.string().optional(), + handle: z.string(), + lastName: z.string().optional(), + platform: zSharedLineAssignmentPlatform, + projectId: z.string(), + releasedAt: z.string().optional(), + updatedAt: z.string() }))(); -export type ListBillingPlansResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type SharedLineAssignmentZodInput = z.input; -export type ListBillingPlansResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type SharedLineAssignmentZodOutput = z.output; -export const zListBillingPlansResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zSharedLineAssignmentPage = /* @__PURE__ */ (() => z.looseObject({ + assignments: z.array(zSharedLineAssignment), + nextPageToken: z.string().optional() +}))(); -export type ListBillingPlansResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type SharedLineAssignmentPageZodInput = z.input; -export type ListBillingPlansResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type SharedLineAssignmentPageZodOutput = z.output; -export const zListBillingPlansResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), +export const zSharedLineCapExceededProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SHARED_LINE_CAP_EXCEEDED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') -}))(); + title: z.literal('Shared Line Cap Exceeded'), + type: z.literal('https://photon.codes/docs/problems/shared-line-cap-exceeded') +}).catchall(zJsonValue))(); -export type ListBillingPlansResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type SharedLineCapExceededProblemZodInput = z.input; -export type ListBillingPlansResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type SharedLineCapExceededProblemZodOutput = z.output; -export const zListBillingPlansResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateSharedLineAssignmentConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zImessageModeDedicatedProblem, + zSharedLineCapExceededProblem, + zAssignmentExistsProblem +]))(); -export type ListBillingPlansResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateSharedLineAssignmentConflictProblemZodInput = z.input; -export type ListBillingPlansResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateSharedLineAssignmentConflictProblemZodOutput = z.output; -export const zListBillingPlansResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zSharedLinePoolExhaustedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SHARED_LINE_POOL_EXHAUSTED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type ListBillingPlansResponse502ApplicationProblemPlusJsonZodInput = z.input; + status: z.literal(503), + title: z.literal('Shared Line Pool Exhausted'), + type: z.literal('https://photon.codes/docs/problems/shared-line-pool-exhausted') +}).catchall(zJsonValue))(); -export type ListBillingPlansResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SharedLinePoolExhaustedProblemZodInput = z.input; -export const zListBillingPlansResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type SharedLinePoolExhaustedProblemZodOutput = z.output; -export type ListBillingPlansResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListBillingPlansResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListBillingPlansResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListBillingPlansResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListBillingPlansResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListInvoicesResponse200ApplicationJson = z.looseObject({ - invoices: z.array(z.looseObject({ - currency: z.string(), - invoiceId: z.string(), - issuedAt: z.string().nullable(), - kind: openEnum([ - 'subscription', - 'one_off', - 'credit' - ]), - number: z.string(), - paymentStatus: openEnum([ - 'pending', - 'succeeded', - 'failed' - ]), - pdfUrl: z.string().nullable(), - subjects: z.array(z.union([z.looseObject({ - projectId: z.string(), - type: z.literal('project') - }), z.looseObject({ - organizationId: z.string(), - type: z.literal('organization') - })])), - totalCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })) +export const zSharedProjectPlatformSettings = z.looseObject({ + maxUserAssignments: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + mode: z.literal('shared') }); -export type ListInvoicesResponse200ApplicationJsonZodInput = z.input; +export type SharedProjectPlatformSettingsZodInput = z.input; -export type ListInvoicesResponse200ApplicationJsonZodOutput = z.output; +export type SharedProjectPlatformSettingsZodOutput = z.output; -export const zListInvoicesResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zProjectPlatformSettings: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSharedProjectPlatformSettings, + zDedicatedProjectPlatformSettings +]))(); -export type ListInvoicesResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectPlatformSettingsZodInput = z.input; -export type ListInvoicesResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectPlatformSettingsZodOutput = z.output; -export const zListInvoicesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zSipAuthenticationAlgorithm = /* @__PURE__ */ (() => openEnum(['sha-256', 'md5']))(); -export type ListInvoicesResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type SipAuthenticationAlgorithmZodInput = z.input; -export type ListInvoicesResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type SipAuthenticationAlgorithmZodOutput = z.output; -export const zListInvoicesResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') +export const zSipInboundCredentials = /* @__PURE__ */ (() => z.looseObject({ + username: z.string() }))(); -export type ListInvoicesResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type SipInboundCredentialsZodInput = z.input; -export type ListInvoicesResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type SipInboundCredentialsZodOutput = z.output; -export const zListInvoicesResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zSipInboundConfiguration = /* @__PURE__ */ (() => z.looseObject({ + credentials: zSipInboundCredentials.nullable(), + destinationUri: z.string() }))(); -export type ListInvoicesResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SipInboundConfigurationZodInput = z.input; -export type ListInvoicesResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SipInboundConfigurationZodOutput = z.output; -export const zListInvoicesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zSipInboundCredentialsWithPassword = /* @__PURE__ */ (() => z.looseObject({ + password: z.string(), + username: z.string() }))(); -export type ListInvoicesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type SipInboundCredentialsWithPasswordZodInput = z.input; -export type ListInvoicesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SipInboundCredentialsWithPasswordZodOutput = z.output; -export const zListInvoicesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zReplaceVoiceProfileInboundRequest = z.looseObject({ + credentials: zSipInboundCredentialsWithPassword.nullable(), + destinationUri: z.string(), + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type ListInvoicesResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ReplaceVoiceProfileInboundRequestZodInput = z.input; -export type ListInvoicesResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ReplaceVoiceProfileInboundRequestZodOutput = z.output; -export const zListInvoicesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +export const zSipOutboundAuthentication = /* @__PURE__ */ (() => z.looseObject({ + algorithm: zSipAuthenticationAlgorithm, + previousPasswordValidUntil: z.string().nullable(), + username: z.string(), + validFrom: z.string() +}))(); -export type ListInvoicesResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type SipOutboundAuthenticationZodInput = z.input; -export type ListInvoicesResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type SipOutboundAuthenticationZodOutput = z.output; -export const zListNumberAreaCodesResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - areaCodes: z.array(z.string()), - countryCode: z.literal('US') +export const zSipOutboundAuthenticationPolicy = /* @__PURE__ */ (() => z.looseObject({ + algorithm: zSipAuthenticationAlgorithm }))(); -export type ListNumberAreaCodesResponse200ApplicationJsonZodInput = z.input; +export type SipOutboundAuthenticationPolicyZodInput = z.input; -export type ListNumberAreaCodesResponse200ApplicationJsonZodOutput = z.output; +export type SipOutboundAuthenticationPolicyZodOutput = z.output; -export const zListNumberAreaCodesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zConfigureVoiceProfileOutboundRequest = z.looseObject({ + authentication: zSipOutboundAuthenticationPolicy, + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type ListNumberAreaCodesResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ConfigureVoiceProfileOutboundRequestZodInput = z.input; -export type ListNumberAreaCodesResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundRequestZodOutput = z.output; -export const zListNumberAreaCodesResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zSipTransport = /* @__PURE__ */ (() => openEnum([ + 'udp', + 'tcp', + 'tls' +]))(); -export type ListNumberAreaCodesResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SipTransportZodInput = z.input; -export type ListNumberAreaCodesResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SipTransportZodOutput = z.output; -export const zListNumberAreaCodesResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zSipEndpoint = z.looseObject({ + host: z.string(), + port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + transport: zSipTransport +}); -export type ListNumberAreaCodesResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type SipEndpointZodInput = z.input; -export type ListNumberAreaCodesResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type SipEndpointZodOutput = z.output; -export const zListNumberAreaCodesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zSipOutboundConnection = /* @__PURE__ */ (() => z.looseObject({ + endpoints: z.array(zSipEndpoint), + realm: z.string() }))(); -export type ListNumberAreaCodesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type SipOutboundConnectionZodInput = z.input; -export type ListNumberAreaCodesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SipOutboundConnectionZodOutput = z.output; -export const zListNumberAreaCodesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zSipOutboundConfiguration = /* @__PURE__ */ (() => z.looseObject({ + authentication: zSipOutboundAuthentication, + connection: zSipOutboundConnection }))(); -export type ListNumberAreaCodesResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberAreaCodesResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberAreaCodesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListNumberAreaCodesResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberAreaCodesResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberCountriesResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - countries: z.array(z.looseObject({ - callingCode: z.string(), - countryCode: z.string(), - displayName: z.string() - })) -}))(); - -export type ListNumberCountriesResponse200ApplicationJsonZodInput = z.input; - -export type ListNumberCountriesResponse200ApplicationJsonZodOutput = z.output; - -export const zListNumberCountriesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListNumberCountriesResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberCountriesResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberCountriesResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type SipOutboundConfigurationZodInput = z.input; -export type ListNumberCountriesResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SipOutboundConfigurationZodOutput = z.output; -export type ListNumberCountriesResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zConfigureVoiceProfileOutboundResponse = z.looseObject({ + outbound: zSipOutboundConfiguration, + password: z.string().nullable(), + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export const zListNumberCountriesResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export type ConfigureVoiceProfileOutboundResponseZodInput = z.input; + +export type ConfigureVoiceProfileOutboundResponseZodOutput = z.output; + +export const zSlugTakenProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SLUG_TAKEN'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(409), + suggestion: z.string().optional(), + title: z.literal('Slug Already Taken'), + type: z.literal('https://photon.codes/docs/problems/slug-taken') +}).catchall(zJsonValue))(); -export type ListNumberCountriesResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type SlugTakenProblemZodInput = z.input; -export type ListNumberCountriesResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type SlugTakenProblemZodOutput = z.output; -export const zListNumberCountriesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zSmsCampaignCapacityExceededProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_CAPACITY_EXCEEDED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Campaign number capacity exhausted'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-capacity-exceeded') +}).catchall(zJsonValue))(); -export type ListNumberCountriesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignCapacityExceededProblemZodInput = z.input; -export type ListNumberCountriesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignCapacityExceededProblemZodOutput = z.output; -export const zListNumberCountriesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zSmsCampaignContextUnavailableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); - -export type ListNumberCountriesResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberCountriesResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberCountriesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListNumberCountriesResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberCountriesResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListOauthScopesResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - scopes: z.array(z.string()) -}))(); + title: z.literal('Campaign context unavailable'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-context-unavailable') +}).catchall(zJsonValue))(); -export type ListOauthScopesResponse200ApplicationJsonZodInput = z.input; +export type SmsCampaignContextUnavailableProblemZodInput = z.input; -export type ListOauthScopesResponse200ApplicationJsonZodOutput = z.output; +export type SmsCampaignContextUnavailableProblemZodOutput = z.output; -export const zListOauthScopesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zSmsCampaignInvalidRequestProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_INVALID_REQUEST'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(400), + title: z.literal('Invalid SMS campaign request'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-invalid-request') +}).catchall(zJsonValue))(); -export type ListOauthScopesResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignInvalidRequestProblemZodInput = z.input; -export type ListOauthScopesResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignInvalidRequestProblemZodOutput = z.output; -export const zListOauthScopesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zAssignSmsLineCampaignBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignInvalidRequestProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ListOauthScopesResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type AssignSmsLineCampaignBadRequestProblemZodInput = z.input; -export type ListOauthScopesResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignSmsLineCampaignBadRequestProblemZodOutput = z.output; -export const zListOperationsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - nextPageToken: z.string().optional(), - operations: z.array(z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() - })) -}))(); - -export type ListOperationsResponse200ApplicationJsonZodInput = z.input; - -export type ListOperationsResponse200ApplicationJsonZodOutput = z.output; - -export const zListOperationsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListOperationsResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListOperationsResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListOperationsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zSmsCampaignMutationInProgressProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_MUTATION_IN_PROGRESS'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + operationId: z.string(), + operationUrl: z.string(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(409), + title: z.literal('Assignment mutation in progress'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-mutation-in-progress') +}).catchall(zJsonValue))(); -export type ListOperationsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignMutationInProgressProblemZodInput = z.input; -export type ListOperationsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignMutationInProgressProblemZodOutput = z.output; -export const zListOperationsResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export const zSmsCampaignNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(404), + title: z.literal('Campaign not found'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-found') +}).catchall(zJsonValue))(); -export type ListOperationsResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignNotFoundProblemZodInput = z.input; -export type ListOperationsResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignNotFoundProblemZodOutput = z.output; -export const zListOperationsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zSmsCampaignNotReadyProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_NOT_READY'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Campaign not ready'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-ready') +}).catchall(zJsonValue))(); -export type ListOperationsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignNotReadyProblemZodInput = z.input; -export type ListOperationsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignNotReadyProblemZodOutput = z.output; -export const zListOperationsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zSmsCampaignOrganizationMismatchProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_ORGANIZATION_MISMATCH'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(403), + title: z.literal('Campaign belongs to another organization'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-organization-mismatch') +}).catchall(zJsonValue))(); -export type ListOperationsResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListOperationsResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListOperationsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListOperationsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListOperationsResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListProjectApiKeysResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - apiKeys: z.array(z.looseObject({ - apiKeyId: z.string(), - createdAt: z.string(), - createdByAccountId: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - permissions: z.array(z.string()), - permissionsUpdatedAt: z.string().nullable(), - projectId: z.string(), - revokedAt: z.string().nullable() - })) -}))(); - -export type ListProjectApiKeysResponse200ApplicationJsonZodInput = z.input; - -export type ListProjectApiKeysResponse200ApplicationJsonZodOutput = z.output; - -export const zListProjectApiKeysResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type SmsCampaignOrganizationMismatchProblemZodInput = z.input; + +export type SmsCampaignOrganizationMismatchProblemZodOutput = z.output; + +export const zAssignSmsLineCampaignForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem, + zSmsCampaignOrganizationMismatchProblem +]))(); -export type ListProjectApiKeysResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type AssignSmsLineCampaignForbiddenProblemZodInput = z.input; -export type ListProjectApiKeysResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignSmsLineCampaignForbiddenProblemZodOutput = z.output; -export const zListProjectApiKeysResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetSmsLineCampaignAssignmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem, + zSmsCampaignOrganizationMismatchProblem ]))(); -export type ListProjectApiKeysResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetSmsLineCampaignAssignmentForbiddenProblemZodInput = z.input; -export type ListProjectApiKeysResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSmsLineCampaignAssignmentForbiddenProblemZodOutput = z.output; -export const zListProjectApiKeysResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), +export const zSmsCampaignReconciliationRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_RECONCILIATION_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); + status: z.literal(409), + title: z.literal('Campaign reconciliation required'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-reconciliation-required') +}).catchall(zJsonValue))(); -export type ListProjectApiKeysResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignReconciliationRequiredProblemZodInput = z.input; -export type ListProjectApiKeysResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignReconciliationRequiredProblemZodOutput = z.output; -export const zListProjectApiKeysResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), +export const zSmsCampaignVersionConflictProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_CAMPAIGN_VERSION_CONFLICT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); + status: z.literal(409), + title: z.literal('Assignment version conflict'), + type: z.literal('https://photon.codes/docs/problems/sms-campaign-version-conflict') +}).catchall(zJsonValue))(); -export type ListProjectApiKeysResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type SmsCampaignVersionConflictProblemZodInput = z.input; -export type ListProjectApiKeysResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsCampaignVersionConflictProblemZodOutput = z.output; -export const zListProjectApiKeysResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zSmsLineCampaign = /* @__PURE__ */ (() => z.looseObject({ + id: z.string(), + organizationId: z.string() }))(); -export type ListProjectApiKeysResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SmsLineCampaignZodInput = z.input; -export type ListProjectApiKeysResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsLineCampaignZodOutput = z.output; -export const zListProjectApiKeysResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zSmsLineCampaignEligibility = /* @__PURE__ */ (() => openEnum([ + 'eligible', + 'blocked', + 'unknown' +]))(); -export type ListProjectApiKeysResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type SmsLineCampaignEligibilityZodInput = z.input; -export type ListProjectApiKeysResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsLineCampaignEligibilityZodOutput = z.output; -export const zListProjectApiKeysResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), +export const zGetSmsLineCampaignAssignmentResponse = z.looseObject({ + campaign: zSmsLineCampaign.nullable(), + eligibility: zSmsLineCampaignEligibility, + reasonCode: z.string().nullable(), + resourceId: z.string(), + version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); + +export type GetSmsLineCampaignAssignmentResponseZodInput = z.input; + +export type GetSmsLineCampaignAssignmentResponseZodOutput = z.output; + +export const zSmsLineNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_LINE_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); + status: z.literal(404), + title: z.literal('SMS line not found'), + type: z.literal('https://photon.codes/docs/problems/sms-line-not-found') +}).catchall(zJsonValue))(); -export type ListProjectApiKeysResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type SmsLineNotFoundProblemZodInput = z.input; -export type ListProjectApiKeysResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsLineNotFoundProblemZodOutput = z.output; -export const zListProjectPlatformsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - platforms: z.array(z.looseObject({ - description: z.string(), - displayName: z.string(), - type: z.string() - })) -}))(); +export const zAssignSmsLineCampaignNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignNotFoundProblem, + zSmsLineNotFoundProblem +]))(); -export type ListProjectPlatformsResponse200ApplicationJsonZodInput = z.input; +export type AssignSmsLineCampaignNotFoundProblemZodInput = z.input; -export type ListProjectPlatformsResponse200ApplicationJsonZodOutput = z.output; +export type AssignSmsLineCampaignNotFoundProblemZodOutput = z.output; -export const zListProjectPlatformsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetSmsLineCampaignAssignmentNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignNotFoundProblem, + zSmsLineNotFoundProblem ]))(); -export type ListProjectPlatformsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetSmsLineCampaignAssignmentNotFoundProblemZodInput = z.input; -export type ListProjectPlatformsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSmsLineCampaignAssignmentNotFoundProblemZodOutput = z.output; -export const zListProjectPlatformsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zSmsLineUnsupportedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SMS_LINE_UNSUPPORTED'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(409), + title: z.literal('SMS line unsupported'), + type: z.literal('https://photon.codes/docs/problems/sms-line-unsupported') +}).catchall(zJsonValue))(); -export type ListProjectPlatformsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SmsLineUnsupportedProblemZodInput = z.input; -export type ListProjectPlatformsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SmsLineUnsupportedProblemZodOutput = z.output; -export const zListProjectPlatformsResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); +export const zAssignSmsLineCampaignConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zSmsLineUnsupportedProblem, + zSmsCampaignNotReadyProblem, + zSmsCampaignVersionConflictProblem, + zSmsCampaignCapacityExceededProblem, + zSmsCampaignReconciliationRequiredProblem, + zSmsCampaignMutationInProgressProblem +]))(); -export type ListProjectPlatformsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type AssignSmsLineCampaignConflictProblemZodInput = z.input; -export type ListProjectPlatformsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignSmsLineCampaignConflictProblemZodOutput = z.output; -export const zListProjectsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - nextPageToken: z.string().optional(), - projects: z.array(z.looseObject({ - agentProfile: z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() - }), - billingInitialization: openEnum([ - 'pending', - 'retry_required', - 'completed', - 'unknown' - ]).optional(), - createdAt: z.string(), - createdByAccountId: z.string().nullable(), - createdByActorId: z.string().nullable(), - createdByActorKind: openEnum(['account', 'service_identity']).nullable(), - deletedAt: z.string().nullable(), - name: z.string(), - organizationId: z.string(), - projectId: z.string(), - slug: z.string(), - updatedAt: z.string() - })) -}))(); - -export type ListProjectsResponse200ApplicationJsonZodInput = z.input; - -export type ListProjectsResponse200ApplicationJsonZodOutput = z.output; - -export const zListProjectsResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), +export const zGetSmsLineCampaignAssignmentConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zSmsLineUnsupportedProblem, + zSmsCampaignNotReadyProblem, + zSmsCampaignVersionConflictProblem, + zSmsCampaignCapacityExceededProblem, + zSmsCampaignReconciliationRequiredProblem, + zSmsCampaignMutationInProgressProblem +]))(); + +export type GetSmsLineCampaignAssignmentConflictProblemZodInput = z.input; + +export type GetSmsLineCampaignAssignmentConflictProblemZodOutput = z.output; + +export const zSortOrder = /* @__PURE__ */ (() => openEnum(['asc', 'desc']))(); + +export type SortOrderZodInput = z.input; + +export type SortOrderZodOutput = z.output; + +export const zSsoSubscriptionRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('SSO_SUBSCRIPTION_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); + status: z.literal(412), + title: z.literal('SSO Subscription Required'), + type: z.literal('https://photon.codes/docs/problems/sso-subscription-required') +}).catchall(zJsonValue))(); -export type ListProjectsResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type SsoSubscriptionRequiredProblemZodInput = z.input; -export type ListProjectsResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type SsoSubscriptionRequiredProblemZodOutput = z.output; -export const zListProjectsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zBeginInvitationSsoPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem ]))(); -export type ListProjectsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type BeginInvitationSsoPreconditionFailedProblemZodInput = z.input; -export type ListProjectsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginInvitationSsoPreconditionFailedProblemZodOutput = z.output; -export const zListProjectsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zBeginOrganizationAuthenticationPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListProjectsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationAuthenticationPreconditionFailedProblemZodInput = z.input; -export type ListProjectsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationAuthenticationPreconditionFailedProblemZodOutput = z.output; -export const zListProjectsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zBeginOrganizationClosureAuthenticationPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListProjectsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationClosureAuthenticationPreconditionFailedProblemZodInput = z.input; -export type ListProjectsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationClosureAuthenticationPreconditionFailedProblemZodOutput = z.output; -export const zListProjectsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zBeginOrganizationSsoAdmissionPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListProjectsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationSsoAdmissionPreconditionFailedProblemZodInput = z.input; -export type ListProjectsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationSsoAdmissionPreconditionFailedProblemZodOutput = z.output; -export const zListProjectsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCreateOrganizationSsoPortalLinkPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem ]))(); -export type ListProjectsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkPreconditionFailedProblemZodInput = z.input; -export type ListProjectsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkPreconditionFailedProblemZodOutput = z.output; -export const zListResourcesResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - nextPageToken: z.string().optional(), - resources: z.array(z.looseObject({ - abilities: z.array(z.string()), - createdAt: z.string(), - detail: z.looseObject({}), - projectId: z.string(), - resourceId: z.string(), - retiredAt: z.string().optional(), - state: openEnum([ - 'unallocated', - 'active', - 'retired' - ]), - type: z.string(), - updatedAt: z.string() - })) -}))(); - -export type ListResourcesResponse200ApplicationJsonZodInput = z.input; - -export type ListResourcesResponse200ApplicationJsonZodOutput = z.output; - -export const zListResourcesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListResourcesResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListResourcesResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListResourcesResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zDisableOrganizationSsoPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListResourcesResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoPreconditionFailedProblemZodInput = z.input; -export type ListResourcesResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoPreconditionFailedProblemZodOutput = z.output; -export const zListResourcesResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zGetOrganizationSsoConfigurationPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListResourcesResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationSsoConfigurationPreconditionFailedProblemZodInput = z.input; -export type ListResourcesResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationSsoConfigurationPreconditionFailedProblemZodOutput = z.output; -export const zListResourcesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zRefreshOrganizationSsoConnectionPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListResourcesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RefreshOrganizationSsoConnectionPreconditionFailedProblemZodInput = z.input; -export type ListResourcesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RefreshOrganizationSsoConnectionPreconditionFailedProblemZodOutput = z.output; -export const zListResourcesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zStartAccountPhoneVerificationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zCaptchaRequiredProblem, + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); + +export type StartAccountPhoneVerificationForbiddenProblemZodInput = z.input; + +export type StartAccountPhoneVerificationForbiddenProblemZodOutput = z.output; + +export const zStartAccountPhoneVerificationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); + +export type StartAccountPhoneVerificationInternalServerErrorProblemZodInput = z.input; + +export type StartAccountPhoneVerificationInternalServerErrorProblemZodOutput = z.output; + +export const zStartAccountPhoneVerificationRequest = /* @__PURE__ */ (() => z.looseObject({ + captcha: zPhoneVerificationCaptcha.optional(), + phoneNumber: z.string() }))(); -export type ListResourcesResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListResourcesResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListResourcesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListResourcesResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListResourcesResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListSharedLineAssignmentsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignments: z.array(z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() - })), - nextPageToken: z.string().optional() +export type StartAccountPhoneVerificationRequestZodInput = z.input; + +export type StartAccountPhoneVerificationRequestZodOutput = z.output; + +export const zStartAccountPhoneVerificationResponse = /* @__PURE__ */ (() => z.looseObject({ + channel: z.literal('sms'), + expiresAt: z.string(), + resendAvailableAt: z.string() }))(); -export type ListSharedLineAssignmentsResponse200ApplicationJsonZodInput = z.input; +export type StartAccountPhoneVerificationResponseZodInput = z.input; -export type ListSharedLineAssignmentsResponse200ApplicationJsonZodOutput = z.output; +export type StartAccountPhoneVerificationResponseZodOutput = z.output; -export const zListSharedLineAssignmentsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zStartEnterpriseLoginRequest: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationEnterpriseLoginRequest, + zInvitationEnterpriseLoginRequest, + zRetryEnterpriseLoginRequest ]))(); -export type ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type StartEnterpriseLoginRequestZodInput = z.input; -export type ListSharedLineAssignmentsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type StartEnterpriseLoginRequestZodOutput = z.output; -export const zListSharedLineAssignmentsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zStartEnterpriseLoginResponse = /* @__PURE__ */ (() => z.looseObject({ + url: z.string() }))(); -export type ListSharedLineAssignmentsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type StartEnterpriseLoginResponseZodInput = z.input; -export type ListSharedLineAssignmentsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type StartEnterpriseLoginResponseZodOutput = z.output; -export const zListSharedLineAssignmentsResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +/** + * State of one category's subscription. Only categories that hold one appear at all, so the overview reports active or past_due; a cancelled category is absent rather than listed as terminated. + */ +export const zSubscriptionStatus = /* @__PURE__ */ (() => openEnum([ + 'active', + 'past_due', + 'terminated' +]))(); + +export type SubscriptionStatusZodInput = z.input; + +export type SubscriptionStatusZodOutput = z.output; + +export const zOrganizationSubscription = /* @__PURE__ */ (() => z.looseObject({ + cancelsAt: z.string().nullable(), + currentPeriodEnd: z.string().nullable(), + entitlements: z.array(zOrganizationSubscriptionEntitlement), + fixedCharges: z.array(zFixedCharge), + planCode: z.string(), + status: zSubscriptionStatus }))(); -export type ListSharedLineAssignmentsResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type OrganizationSubscriptionZodInput = z.input; -export type ListSharedLineAssignmentsResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type OrganizationSubscriptionZodOutput = z.output; -export const zListSharedLineAssignmentsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zGetOrganizationBillingOverviewResponse = z.looseObject({ + entitlementsVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + subscription: zOrganizationSubscription.nullable() +}); + +export type GetOrganizationBillingOverviewResponseZodInput = z.input; + +export type GetOrganizationBillingOverviewResponseZodOutput = z.output; + +export const zProjectSubscription = /* @__PURE__ */ (() => z.looseObject({ + cancelsAt: z.string().nullable(), + category: z.string(), + categoryDisplayName: z.string().nullish(), + currentPeriodEnd: z.string().nullable(), + entitlements: z.array(zProjectSubscriptionEntitlement), + fixedCharges: z.array(zFixedCharge), + planCode: z.string(), + status: zSubscriptionStatus }))(); -export type ListSharedLineAssignmentsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ProjectSubscriptionZodInput = z.input; -export type ListSharedLineAssignmentsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ProjectSubscriptionZodOutput = z.output; -export const zListSharedLineAssignmentsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zGetBillingOverviewResponse = z.looseObject({ + entitlementsVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + subscriptions: z.array(zProjectSubscription), + usage: z.array(zMeteredUsage) +}); + +export type GetBillingOverviewResponseZodInput = z.input; + +export type GetBillingOverviewResponseZodOutput = z.output; + +export const zSucceededBillingOperation = /* @__PURE__ */ (() => z.looseObject({ + failure: z.null(), + kind: zBillingOperationKind, + operationId: z.string(), + resolvedAt: z.string().nullable(), + result: zBillingOperationResult, + status: z.literal('succeeded'), + submittedAt: z.string().nullable() }))(); -export type ListSharedLineAssignmentsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type SucceededBillingOperationZodInput = z.input; -export type ListSharedLineAssignmentsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type SucceededBillingOperationZodOutput = z.output; -export const zListSharedLineAssignmentsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +/** + * Authoritative provisioning state. Poll the operation route while pending. + */ +export const zBillingOperation: z.ZodType = /* @__PURE__ */ (() => z.union([ + zPendingBillingOperation, + zSucceededBillingOperation, + zFailedBillingOperation ]))(); -export type ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListSharedLineAssignmentsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingOperationZodInput = z.input; -export const zListVoiceProfilesResponse200ApplicationJson = z.looseObject({ - nextPageToken: z.string().optional(), - profiles: z.array(z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) - })) -}); +export type BillingOperationZodOutput = z.output; -export type ListVoiceProfilesResponse200ApplicationJsonZodInput = z.input; - -export type ListVoiceProfilesResponse200ApplicationJsonZodOutput = z.output; - -export const zListVoiceProfilesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListVoiceProfilesResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListVoiceProfilesResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListVoiceProfilesResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zSupportedPlatform = /* @__PURE__ */ (() => z.looseObject({ + description: z.string(), + displayName: z.string(), + type: z.string() }))(); -export type ListVoiceProfilesResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type SupportedPlatformZodInput = z.input; -export type ListVoiceProfilesResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type SupportedPlatformZodOutput = z.output; -export const zListVoiceProfilesResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zListProjectPlatformsResponse = /* @__PURE__ */ (() => z.looseObject({ + platforms: z.array(zSupportedPlatform) }))(); -export type ListVoiceProfilesResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListProjectPlatformsResponseZodInput = z.input; -export type ListVoiceProfilesResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ListProjectPlatformsResponseZodOutput = z.output; -export const zListVoiceProfilesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zTelegramProjectDeletedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('TELEGRAM_PROJECT_DELETED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Telegram Project Deleted'), + type: z.literal('https://photon.codes/docs/problems/telegram-project-deleted') +}).catchall(zJsonValue))(); -export type ListVoiceProfilesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type TelegramProjectDeletedProblemZodInput = z.input; -export type ListVoiceProfilesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type TelegramProjectDeletedProblemZodOutput = z.output; -export const zListVoiceProfilesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zTelegramProvisionInProgressProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('TELEGRAM_PROVISION_IN_PROGRESS'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + operationId: z.string(), + operationUrl: z.string(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('Telegram Provision In Progress'), + type: z.literal('https://photon.codes/docs/problems/telegram-provision-in-progress') +}).catchall(zJsonValue))(); -export type ListVoiceProfilesResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListVoiceProfilesResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListVoiceProfilesResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListVoiceProfilesResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListVoiceProfilesResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWebhookApiVersionsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - apiVersions: z.array(z.union([z.looseObject({ - retirement: z.looseObject({ - migrationGuide: z.string(), - reason: z.string() - }).nullable(), - selectable: z.literal(true), - status: openEnum([ - 'preview', - 'latest', - 'maintain' - ]), - successor: z.string().nullable(), - version: z.string() - }), z.looseObject({ - retirement: z.looseObject({ - migrationGuide: z.string(), - reason: z.string() - }), - selectable: z.literal(false), - status: z.literal('deprecated'), - successor: z.string().nullable(), - version: z.string() - })])), - contractNamespace: z.literal('@photon-hq/contracts'), - packageVersion: z.string() -}))(); +export type TelegramProvisionInProgressProblemZodInput = z.input; + +export type TelegramProvisionInProgressProblemZodOutput = z.output; + +export const zConnectTelegramBotConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zTelegramProjectDeletedProblem, + zProjectClosingProblem, + zTelegramProvisionInProgressProblem +]))(); -export type ListWebhookApiVersionsResponse200ApplicationJsonZodInput = z.input; +export type ConnectTelegramBotConflictProblemZodInput = z.input; -export type ListWebhookApiVersionsResponse200ApplicationJsonZodOutput = z.output; +export type ConnectTelegramBotConflictProblemZodOutput = z.output; -export const zListWebhookApiVersionsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zTerminalBillingOperation: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSucceededBillingOperation, + zFailedBillingOperation ]))(); -export type ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type TerminalBillingOperationZodInput = z.input; -export type ListWebhookApiVersionsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type TerminalBillingOperationZodOutput = z.output; -export const zListWebhookApiVersionsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zTimestampOrderBy = /* @__PURE__ */ (() => openEnum(['created_at', 'updated_at']))(); -export type ListWebhookApiVersionsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type TimestampOrderByZodInput = z.input; -export type ListWebhookApiVersionsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type TimestampOrderByZodOutput = z.output; -export const zListWebhookApiVersionsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUnassignSmsLineCampaignBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignInvalidRequestProblem, + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem +]))(); -export type ListWebhookApiVersionsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignSmsLineCampaignBadRequestProblemZodInput = z.input; -export type ListWebhookApiVersionsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignSmsLineCampaignBadRequestProblemZodOutput = z.output; -export const zListWebhookApiVersionsResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zUnassignSmsLineCampaignConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zSmsLineUnsupportedProblem, + zSmsCampaignNotReadyProblem, + zSmsCampaignVersionConflictProblem, + zSmsCampaignCapacityExceededProblem, + zSmsCampaignReconciliationRequiredProblem, + zSmsCampaignMutationInProgressProblem +]))(); -export type ListWebhookApiVersionsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWebhookApiVersionsResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWebhookDestinationsResponse200ApplicationJson = z.looseObject({ - destinations: z.array(z.looseObject({ - apiVersion: z.string(), - createdAt: z.string(), - deletedAt: z.string().nullable(), - description: z.string().nullable(), - destinationId: z.string(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), - name: z.string(), - projectId: z.string(), - status: openEnum(['enabled', 'disabled']), - updatedAt: z.string(), - url: z.string() - })), - nextPageToken: z.string().optional() -}); +export type UnassignSmsLineCampaignConflictProblemZodInput = z.input; -export type ListWebhookDestinationsResponse200ApplicationJsonZodInput = z.input; +export type UnassignSmsLineCampaignConflictProblemZodOutput = z.output; -export type ListWebhookDestinationsResponse200ApplicationJsonZodOutput = z.output; +export const zUnassignSmsLineCampaignForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem, + zSmsCampaignOrganizationMismatchProblem +]))(); -export const zListWebhookDestinationsResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type UnassignSmsLineCampaignForbiddenProblemZodInput = z.input; + +export type UnassignSmsLineCampaignForbiddenProblemZodOutput = z.output; + +export const zUnassignSmsLineCampaignInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ListWebhookDestinationsResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignSmsLineCampaignInternalServerErrorProblemZodInput = z.input; -export type ListWebhookDestinationsResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignSmsLineCampaignInternalServerErrorProblemZodOutput = z.output; -export const zListWebhookDestinationsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zUnassignSmsLineCampaignNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignNotFoundProblem, + zSmsLineNotFoundProblem ]))(); -export type ListWebhookDestinationsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignSmsLineCampaignNotFoundProblemZodInput = z.input; -export type ListWebhookDestinationsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignSmsLineCampaignNotFoundProblemZodOutput = z.output; -export const zListWebhookDestinationsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUnassignVoiceLineProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListWebhookDestinationsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignVoiceLineProfileForbiddenProblemZodInput = z.input; -export type ListWebhookDestinationsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignVoiceLineProfileForbiddenProblemZodOutput = z.output; -export const zListWebhookDestinationsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUnassignVoiceLineProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ListWebhookDestinationsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignVoiceLineProfileInternalServerErrorProblemZodInput = z.input; -export type ListWebhookDestinationsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignVoiceLineProfileInternalServerErrorProblemZodOutput = z.output; -export const zListWebhookDestinationsResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zUnavailableProjectSlugReason = /* @__PURE__ */ (() => openEnum([ + 'reserved', + 'retired', + 'taken', + 'too_short' +]))(); -export type ListWebhookDestinationsResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWebhookDestinationsResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWebhookEgressAddressesResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - ipAddresses: z.array(z.string()) -}))(); - -export type ListWebhookEgressAddressesResponse200ApplicationJsonZodInput = z.input; - -export type ListWebhookEgressAddressesResponse200ApplicationJsonZodOutput = z.output; - -export const zListWebhookEgressAddressesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWebhookEgressAddressesResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWebhookEventTypesResponse200ApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - apiVersion: z.string(), - contractNamespace: z.literal('@photon-hq/contracts'), - events: z.array(z.looseObject({ - audience: openEnum(['agent', 'infrastructure']), - description: z.string(), - schemaProfile: z.literal('reader'), - schemaUrl: z.string(), - type: z.string() - })), - packageVersion: z.string(), - retirement: z.looseObject({ - migrationGuide: z.string(), - reason: z.string() - }).nullable(), - selectable: z.literal(true), - status: openEnum([ - 'preview', - 'latest', - 'maintain' - ]), - successor: z.string().nullable() - }), - z.looseObject({ - apiVersion: z.string(), - contractNamespace: z.literal('@photon-hq/contracts'), - events: z.array(z.looseObject({ - audience: openEnum(['agent', 'infrastructure']), - description: z.string(), - schemaProfile: z.literal('reader'), - schemaUrl: z.string(), - type: z.string() - })), - packageVersion: z.string(), - retirement: z.looseObject({ - migrationGuide: z.string(), - reason: z.string() - }), - selectable: z.literal(false), - status: z.literal('deprecated'), - successor: z.string().nullable() - }) -]))(); - -export type ListWebhookEventTypesResponse200ApplicationJsonZodInput = z.input; - -export type ListWebhookEventTypesResponse200ApplicationJsonZodOutput = z.output; - -export const zListWebhookEventTypesResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') +export type UnavailableProjectSlugReasonZodInput = z.input; + +export type UnavailableProjectSlugReasonZodOutput = z.output; + +export const zUnavailableProjectSlug = /* @__PURE__ */ (() => z.looseObject({ + available: z.literal(false), + reason: zUnavailableProjectSlugReason, + slug: z.string(), + suggestion: z.string().optional() }))(); -export type ListWebhookEventTypesResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UnavailableProjectSlugZodInput = z.input; -export type ListWebhookEventTypesResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UnavailableProjectSlugZodOutput = z.output; -export const zListWebhookEventTypesResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zCheckProjectSlugAvailabilityResponse: z.ZodType = /* @__PURE__ */ (() => z.union([ + zAvailableProjectSlug, + zUnavailableProjectSlug ]))(); -export type ListWebhookEventTypesResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type CheckProjectSlugAvailabilityResponseZodInput = z.input; -export type ListWebhookEventTypesResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CheckProjectSlugAvailabilityResponseZodOutput = z.output; -export const zListWebhookEventTypesResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUpdateAccountBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zHttpErrorProblem, + zInvalidArgumentProblem, + zIdempotencyKeyInvalidProblem, + zIdempotencyKeyRequiredProblem +]))(); -export type ListWebhookEventTypesResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAccountBadRequestProblemZodInput = z.input; -export type ListWebhookEventTypesResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAccountBadRequestProblemZodOutput = z.output; -export const zListWebhookEventTypesResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateAccountForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListWebhookEventTypesResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAccountForbiddenProblemZodInput = z.input; -export type ListWebhookEventTypesResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAccountForbiddenProblemZodOutput = z.output; -export const zListWebhookEventTypesResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zUpdateAccountInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ListWebhookEventTypesResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAccountInternalServerErrorProblemZodInput = z.input; -export type ListWebhookEventTypesResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAccountInternalServerErrorProblemZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - phoneNumbers: z.array(z.looseObject({ - displayName: z.string().nullable(), - ownership: openEnum(['photon', 'meta']), - phoneNumber: z.string(), - phoneNumberId: z.string() - })), - wabaId: z.string() +export const zUpdateAccountRequest = /* @__PURE__ */ (() => z.looseObject({ + firstName: z.string().optional(), + lastName: z.string().nullish() }))(); -export type ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonZodInput = z.input; +export type UpdateAccountRequestZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse200ApplicationJsonZodOutput = z.output; +export type UpdateAccountRequestZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zUpdateAgentProfileBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAgentProfileBadRequestProblemZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAgentProfileBadRequestProblemZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WHATSAPP_WABA_NOT_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('WhatsApp Business Account Not Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-waba-not-connected') -}))(); +export const zUpdateAgentProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAgentProfileForbiddenProblemZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAgentProfileForbiddenProblemZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export const zUpdateAgentProfileRequest = /* @__PURE__ */ (() => z.looseObject({ + firstName: z.string().optional(), + lastName: z.string().nullish() }))(); -export type ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAgentProfileRequestZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAgentProfileRequestZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zUpdateDefaultVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateDefaultVoiceProfileForbiddenProblemZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateDefaultVoiceProfileForbiddenProblemZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUpdateDefaultVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem +]))(); -export type ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateDefaultVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type ListWhatsappAccountPhoneNumbersResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateDefaultVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateOrganizationSsoPolicyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInvalidReturnToProblem, + zInvalidArgumentProblem +]))(); -export type ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWhatsappAccountPhoneNumbersResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWhatsappAccountPhoneNumbersResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWhatsappSharedLineAssignmentsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignments: z.array(z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() - })), - nextPageToken: z.string().optional() -}))(); +export type UpdateOrganizationSsoPolicyBadRequestProblemZodInput = z.input; + +export type UpdateOrganizationSsoPolicyBadRequestProblemZodOutput = z.output; -export type ListWhatsappSharedLineAssignmentsResponse200ApplicationJsonZodInput = z.input; +export const zUpdateOrganizationSsoPolicyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem +]))(); + +export type UpdateOrganizationSsoPolicyForbiddenProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse200ApplicationJsonZodOutput = z.output; +export type UpdateOrganizationSsoPolicyForbiddenProblemZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zUpdateOrganizationSsoPolicyInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateOrganizationSsoPolicyInternalServerErrorProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateOrganizationSsoPolicyInternalServerErrorProblemZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zUpdateOrganizationSsoPolicyPreconditionFailedProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zOrganizationSsoPreconditionFailedProblem, + zSsoSubscriptionRequiredProblem +]))(); -export type ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateOrganizationSsoPolicyPreconditionFailedProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateOrganizationSsoPolicyPreconditionFailedProblemZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zUpdateOrganizationSsoPolicyRequest = /* @__PURE__ */ (() => z.looseObject({ + expectedVersion: z.string(), + ssoJitEnabled: z.boolean() }))(); -export type ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateOrganizationSsoPolicyRequestZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateOrganizationSsoPolicyRequestZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUpdateProjectApiKeyBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); -export type ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectApiKeyBadRequestProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectApiKeyBadRequestProblemZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateProjectApiKeyForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectApiKeyForbiddenProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectApiKeyForbiddenProblemZodOutput = z.output; -export const zListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zUpdateProjectApiKeyNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectNotFoundProblem, + zApiKeyNotFoundProblem ]))(); -export type ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectApiKeyNotFoundProblemZodInput = z.input; -export type ListWhatsappSharedLineAssignmentsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectApiKeyNotFoundProblemZodOutput = z.output; -export const zPhotonProblem_FORBIDDEN_403 = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') +export const zUpdateProjectApiKeyRequest = /* @__PURE__ */ (() => z.looseObject({ + permissions: z.array(zApiKeyPermission) }))(); -export type PhotonProblem_FORBIDDEN_403ZodInput = z.input; +export type UpdateProjectApiKeyRequestZodInput = z.input; -export type PhotonProblem_FORBIDDEN_403ZodOutput = z.output; +export type UpdateProjectApiKeyRequestZodOutput = z.output; -export const zBeginInvitationSsoResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateProjectBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem ]))(); -export type BeginInvitationSsoResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectBadRequestProblemZodInput = z.input; -export type BeginInvitationSsoResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectBadRequestProblemZodOutput = z.output; -export const zBeginOrganizationAuthenticationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateProjectForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectForbiddenProblemZodInput = z.input; + +export type UpdateProjectForbiddenProblemZodOutput = z.output; + +export const zUpdateProjectRequest = /* @__PURE__ */ (() => z.looseObject({ + name: z.string() +}))(); + +export type UpdateProjectRequestZodInput = z.input; -export type BeginOrganizationAuthenticationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectRequestZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileForbiddenProblemZodInput = z.input; -export type BeginOrganizationClosureAuthenticationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileForbiddenProblemZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileInboundForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileInboundForbiddenProblemZodInput = z.input; -export type BeginOrganizationSsoAdmissionResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileInboundForbiddenProblemZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileInboundInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileInboundInternalServerErrorProblemZodInput = z.input; + +export type UpdateVoiceProfileInboundInternalServerErrorProblemZodOutput = z.output; + +export const zUpdateVoiceProfileInboundRequest = z.looseObject({ + credentials: zSipInboundCredentialsWithPassword.nullish(), + destinationUri: z.string().optional(), + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); + +export type UpdateVoiceProfileInboundRequestZodInput = z.input; -export type CreateOrganizationSsoPortalLinkResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileInboundRequestZodOutput = z.output; -export const zGetOrganizationConnectionStatusResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileInternalServerErrorProblemZodInput = z.input; -export type GetOrganizationConnectionStatusResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileInternalServerErrorProblemZodOutput = z.output; -export const zGetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileOutboundAuthenticationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationForbiddenProblemZodInput = z.input; -export type GetOrganizationSsoConfigurationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationForbiddenProblemZodOutput = z.output; -export const zListAuthorizedApplicationsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type ListAuthorizedApplicationsResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblemZodInput = z.input; -export type ListAuthorizedApplicationsResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationInternalServerErrorProblemZodOutput = z.output; -export const zPhotonProblem_INTERNAL_ERROR_500 = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INTERNAL_ERROR'), - detail: z.string().optional(), - instance: z.string().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Internal Server Error'), - type: z.literal('https://photon.codes/docs/problems/internal-error') -}))(); - -export type PhotonProblem_INTERNAL_ERROR_500ZodInput = z.input; - -export type PhotonProblem_INTERNAL_ERROR_500ZodOutput = z.output; - -export const zAssignSmsLineCampaignResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignSmsLineCampaignResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zAssignVoiceLineProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type AssignVoiceLineProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type BatchUpdateVoiceLineProfileAssignmentsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBeginInvitationSsoResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type BeginInvitationSsoResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type BeginInvitationSsoResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBeginOrganizationAuthenticationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type BeginOrganizationAuthenticationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type BeginOrganizationClosureAuthenticationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zBeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type BeginOrganizationSsoAdmissionResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelOperationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CancelOperationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelOperationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCancelSubscriptionResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CancelSubscriptionResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CancelSubscriptionResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zChangePlanResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ChangePlanResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ChangePlanResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCommitAccountProfilePictureResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CommitAccountProfilePictureResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfigureVoiceProfileOutboundResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ConfirmAccountPhoneVerificationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectEmailDomainResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ConnectEmailDomainResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectEmailDomainResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectTelegramBotResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ConnectTelegramBotResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectTelegramBotResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zConnectWhatsappBusinessResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ConnectWhatsappBusinessResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountProfilePictureUploadResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateAccountServiceKeyResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateAccountServiceKeyResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateDefaultVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationPaymentMethodCheckoutResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSetupIntentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSetupIntentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateOrganizationSsoPortalLinkResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zCreateWhatsappVoipSenderResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type CreateWhatsappVoipSenderResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteAccountResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DeleteAccountResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteAccountResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileInboundResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileOutboundResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDeleteVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DeleteVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DeleteVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DisconnectWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zDownloadAttachmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type DownloadAttachmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type DownloadAttachmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetAccountResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetAccountResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetAccountResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetAttachmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetAttachmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetAttachmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetBillingOperationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetBillingOperationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetBillingOperationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetBillingOverviewResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetBillingOverviewResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetBillingOverviewResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetDefaultVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOperationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetOperationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOperationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationBillingOverviewResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationBillingOverviewResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationConnectionStatusResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationConnectionStatusResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationPaymentMethodResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationPaymentMethodResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetOrganizationSsoConfigurationResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectImessagePlatformResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectImessagePlatformResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetProjectWhatsappPlatformResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetProjectWhatsappPlatformResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetResourceResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetResourceResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetResourceResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetSmsLineCampaignAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceLineProfileAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessAccountResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessAccountResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappBusinessVerificationCodeResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zGetWhatsappSignupConfigResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type GetWhatsappSignupConfigResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAccountServiceKeysResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListAccountServiceKeysResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAccountServiceKeysResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAttachmentsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListAttachmentsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAttachmentsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListAuthorizedApplicationsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListAuthorizedApplicationsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListBillingPlansResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListBillingPlansResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListBillingPlansResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListInvoicesResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListInvoicesResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListInvoicesResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberAreaCodesResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListNumberAreaCodesResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberAreaCodesResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListNumberCountriesResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListNumberCountriesResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListNumberCountriesResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListOperationsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListOperationsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListOperationsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListProjectPlatformsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListProjectPlatformsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListProjectPlatformsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListResourcesResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListResourcesResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListResourcesResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListSharedLineAssignmentsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListSharedLineAssignmentsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListVoiceProfilesResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListVoiceProfilesResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListVoiceProfilesResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWhatsappAccountPhoneNumbersResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ListWhatsappSharedLineAssignmentsResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPhotonProblem_NOT_AUTHENTICATED_401 = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('NOT_AUTHENTICATED'), - detail: z.string().optional(), - instance: z.string().optional(), - requestId: z.string().optional(), - status: z.literal(401), - title: z.literal('Not Authenticated'), - type: z.literal('https://photon.codes/docs/problems/not-authenticated') -}))(); +export const zUpdateVoiceProfileOutboundAuthenticationRequest = z.looseObject({ + authentication: zSipOutboundAuthenticationPolicy, + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type PhotonProblem_NOT_AUTHENTICATED_401ZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationRequestZodInput = z.input; -export type PhotonProblem_NOT_AUTHENTICATED_401ZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationRequestZodOutput = z.output; -export const zPhotonProblem_UPSTREAM_UNAVAILABLE_503 = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateVoiceProfileOutboundAuthenticationResponse = z.looseObject({ + outbound: zSipOutboundConfiguration, + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type PhotonProblem_UPSTREAM_UNAVAILABLE_503ZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationResponseZodInput = z.input; -export type PhotonProblem_UPSTREAM_UNAVAILABLE_503ZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationResponseZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zUpdateWebhookDestinationBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyRequiredProblem, + zIdempotencyKeyInvalidProblem, + zInvalidArgumentProblem +]))(); -export type ProvisionImessageDedicatedLineResponse202ApplicationJsonZodInput = z.input; +export type UpdateWebhookDestinationBadRequestProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse202ApplicationJsonZodOutput = z.output; +export type UpdateWebhookDestinationBadRequestProblemZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) +export const zUpdateWebhookDestinationForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem ]))(); -export type ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateWebhookDestinationForbiddenProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateWebhookDestinationForbiddenProblemZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') -}))(); +export const zUploadAttachmentBadRequestProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zHttpErrorProblem, + zInvalidAttachmentRequestProblem +]))(); -export type ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJsonZodInput = z.input; +export type UploadAttachmentBadRequestProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse402ApplicationProblemPlusJsonZodOutput = z.output; +export type UploadAttachmentBadRequestProblemZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zUploadAttachmentConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zAttachmentConflictProblem, + zAttachmentUploadNotReadyProblem ]))(); -export type ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UploadAttachmentConflictProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') -}))(); +export type UploadAttachmentConflictProblemZodOutput = z.output; -export type ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionImessageDedicatedLineResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionImessageDedicatedLineResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zUploadAttachmentForbiddenProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zForbiddenProblem, + zInsufficientScopeProblem, + zOrganizationSsoRequiredProblem, + zResourceMismatchProblem +]))(); -export type ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type UploadAttachmentForbiddenProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type UploadAttachmentForbiddenProblemZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zUploadAttachmentInternalServerErrorProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zInternalErrorProblem, + zInvalidAuthContextProblem ]))(); -export type ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type UploadAttachmentInternalServerErrorProblemZodInput = z.input; -export type ProvisionImessageDedicatedLineResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type UploadAttachmentInternalServerErrorProblemZodOutput = z.output; -export const zProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ +export const zUpstreamFailureProblem = /* @__PURE__ */ (() => z.object({ code: z.literal('UPSTREAM_FAILURE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(502), title: z.literal('Upstream Service Failure'), type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionImessageDedicatedLineResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionImessageDedicatedLineResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionImessageDedicatedLineResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); - -export type ProvisionWhatsappDedicatedLineResponse202ApplicationJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse202ApplicationJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); +}).catchall(zJsonValue))(); -export type ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UpstreamFailureProblemZodInput = z.input; -export type ProvisionWhatsappDedicatedLineResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UpstreamFailureProblemZodOutput = z.output; -export const zProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), +export const zUpstreamTimeoutProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('UPSTREAM_TIMEOUT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') -}))(); + status: z.literal(504), + title: z.literal('Upstream Service Timeout'), + type: z.literal('https://photon.codes/docs/problems/upstream-timeout') +}).catchall(zJsonValue))(); -export type ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJsonZodInput = z.input; +export type UpstreamTimeoutProblemZodInput = z.input; -export type ProvisionWhatsappDedicatedLineResponse402ApplicationProblemPlusJsonZodOutput = z.output; +export type UpstreamTimeoutProblemZodOutput = z.output; -export const zProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zAssignSmsLineCampaignGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type AssignSmsLineCampaignGatewayTimeoutProblemZodInput = z.input; -export type ProvisionWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') -}))(); +export type AssignSmsLineCampaignGatewayTimeoutProblemZodOutput = z.output; -export type ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zAssignVoiceLineProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type AssignVoiceLineProfileGatewayTimeoutProblemZodInput = z.input; -export type ProvisionWhatsappDedicatedLineResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignVoiceLineProfileGatewayTimeoutProblemZodOutput = z.output; -export const zProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zBatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblemZodInput = z.input; -export type ProvisionWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsGatewayTimeoutProblemZodOutput = z.output; -export const zProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); - -export type ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ProvisionWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPurchaseSmsNumberRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - areaCode: z.string().optional(), - countryCode: z.literal('US') -}))(); +export const zBeginInvitationSsoGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type PurchaseSmsNumberRequestApplicationJsonZodInput = z.input; +export type BeginInvitationSsoGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberRequestApplicationJsonZodOutput = z.output; +export type BeginInvitationSsoGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zBeginOrganizationAuthenticationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type PurchaseSmsNumberResponse202ApplicationJsonZodInput = z.input; +export type BeginOrganizationAuthenticationGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse202ApplicationJsonZodOutput = z.output; +export type BeginOrganizationAuthenticationGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) +export const zBeginOrganizationClosureAuthenticationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type PurchaseSmsNumberResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationClosureAuthenticationGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationClosureAuthenticationGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse402ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ENTITLEMENT_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(402), - title: z.literal('Entitlement Required'), - type: z.literal('https://photon.codes/docs/problems/entitlement-required') -}))(); +export const zBeginOrganizationSsoAdmissionGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type PurchaseSmsNumberResponse402ApplicationProblemPlusJsonZodInput = z.input; +export type BeginOrganizationSsoAdmissionGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse402ApplicationProblemPlusJsonZodOutput = z.output; +export type BeginOrganizationSsoAdmissionGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zCancelOperationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type PurchaseSmsNumberResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type CancelOperationGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelOperationGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') -}))(); +export const zCancelSubscriptionGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type PurchaseSmsNumberResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type PurchaseSmsNumberResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPurchaseSmsNumberResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type PurchaseSmsNumberResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type PurchaseSmsNumberResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPurchaseSmsNumberResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type CancelSubscriptionGatewayTimeoutProblemZodInput = z.input; + +export type CancelSubscriptionGatewayTimeoutProblemZodOutput = z.output; -export type PurchaseSmsNumberResponse429ApplicationProblemPlusJsonZodInput = z.input; +export const zChangePlanGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); + +export type ChangePlanGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ChangePlanGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zCheckProjectSlugAvailabilityGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type PurchaseSmsNumberResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type CheckProjectSlugAvailabilityGatewayTimeoutProblemZodInput = z.input; -export type PurchaseSmsNumberResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type CheckProjectSlugAvailabilityGatewayTimeoutProblemZodOutput = z.output; -export const zPurchaseSmsNumberResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCommitAccountProfilePictureGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type PurchaseSmsNumberResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type PurchaseSmsNumberResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPurchaseSmsNumberResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('BILLING_NOT_PROVISIONED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Billing Not Provisioned'), - type: z.literal('https://photon.codes/docs/problems/billing-not-provisioned') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type PurchaseSmsNumberResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type PurchaseSmsNumberResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zPurchaseSmsNumberResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type PurchaseSmsNumberResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type PurchaseSmsNumberResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zQueryMessageMetricsResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - columns: z.array(z.looseObject({ - name: z.string(), - type: z.string() - })), - rows: z.array(z.array(z.unknown())), - statistics: z.looseObject({ - bytesRead: z.number(), - elapsedSeconds: z.number(), - rowsRead: z.number() - }) -}))(); +export type CommitAccountProfilePictureGatewayTimeoutProblemZodInput = z.input; -export type QueryMessageMetricsResponse200ApplicationJsonZodInput = z.input; +export type CommitAccountProfilePictureGatewayTimeoutProblemZodOutput = z.output; -export type QueryMessageMetricsResponse200ApplicationJsonZodOutput = z.output; +export const zCommitAgentProfileAvatarGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export const zQueryMessageMetricsResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type CommitAgentProfileAvatarGatewayTimeoutProblemZodInput = z.input; -export type QueryMessageMetricsResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type QueryMessageMetricsResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zQueryMessageMetricsResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type QueryMessageMetricsResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type QueryMessageMetricsResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zQueryMessageMetricsResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('QUERY_RESOURCE_LIMIT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Query Resource Limit'), - type: z.literal('https://photon.codes/docs/problems/query-resource-limit') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type QueryMessageMetricsResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type QueryMessageMetricsResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zQueryMessageMetricsResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type CommitAgentProfileAvatarGatewayTimeoutProblemZodOutput = z.output; -export type QueryMessageMetricsResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zConfigureVoiceProfileOutboundGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type QueryMessageMetricsResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundGatewayTimeoutProblemZodInput = z.input; -export const zQueryMessageMetricsResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type ConfigureVoiceProfileOutboundGatewayTimeoutProblemZodOutput = z.output; + +export const zConfirmAccountPhoneVerificationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type QueryMessageMetricsResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ConfirmAccountPhoneVerificationGatewayTimeoutProblemZodInput = z.input; -export type QueryMessageMetricsResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ConfirmAccountPhoneVerificationGatewayTimeoutProblemZodOutput = z.output; -export const zQueryMessageMetricsResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zConnectEmailDomainGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type QueryMessageMetricsResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainGatewayTimeoutProblemZodInput = z.input; -export type QueryMessageMetricsResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - appId: z.string(), - clientAssertion: z.string(), - code: z.string() -}))(); +export const zConnectTelegramBotGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryRequestApplicationJsonZodInput = z.input; +export type ConnectTelegramBotGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryRequestApplicationJsonZodOutput = z.output; +export type ConnectTelegramBotGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse200ApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - clientId: z.string(), - clientSecret: z.string(), - installationId: z.string(), - status: z.literal('created') - }), - z.looseObject({ - installationId: z.string(), - status: openEnum([ - 'delivery_consumed', - 'recovery_required', - 'revocation_pending', - 'revoked' - ]) - }) +export const zConnectWhatsappBusinessGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type RedeemAppInstallationDeliveryResponse200ApplicationJsonZodInput = z.input; +export type ConnectWhatsappBusinessGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse200ApplicationJsonZodOutput = z.output; +export type ConnectWhatsappBusinessGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zCountProjectsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CountProjectsGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CountProjectsGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('APP_INSTALLATION_ASSERTION_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(401), - title: z.literal('Invalid Installation Client Assertion'), - type: z.literal('https://photon.codes/docs/problems/app-installation-assertion-invalid') -}))(); +export const zCreateAccountProfilePictureUploadGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountProfilePictureUploadGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse401ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountProfilePictureUploadGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('APP_INSTALLATION_DELIVERY_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Installation Delivery Unavailable'), - type: z.literal('https://photon.codes/docs/problems/app-installation-delivery-unavailable') -}))(); +export const zCreateAccountServiceKeyGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAccountServiceKeyGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateAgentProfileAvatarUploadGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAgentProfileAvatarUploadGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateAgentProfileAvatarUploadGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCreateAppInstallationRequestGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); + +export type CreateAppInstallationRequestGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAppInstallationRequestGatewayTimeoutProblemZodOutput = z.output; -export type RedeemAppInstallationDeliveryResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateDefaultVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export const zRedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type CreateDefaultVoiceProfileGatewayTimeoutProblemZodInput = z.input; + +export type CreateDefaultVoiceProfileGatewayTimeoutProblemZodOutput = z.output; + +export const zCreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutGatewayTimeoutProblemZodOutput = z.output; -export const zRedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCreateOrganizationSetupIntentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationSetupIntentGatewayTimeoutProblemZodInput = z.input; -export type RedeemAppInstallationDeliveryResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationSetupIntentGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - connectionChangedAt: z.string().nullable(), - connectionGeneration: z.string(), - connectionState: openEnum([ - 'not_configured', - 'configuring', - 'ready', - 'error' - ]), - connectionType: z.string().optional(), - desiredSsoEnforced: z.boolean(), - domains: z.array(z.looseObject({ - domain: z.string(), - state: openEnum([ - 'verified', - 'pending', - 'failed' - ]) - })).optional(), - organizationId: z.string(), - policySyncStatus: openEnum(['synced', 'manual_required']), - providerAvailable: z.boolean().optional(), - ssoEnforced: z.boolean(), - ssoJitEnabled: z.boolean(), - version: z.string() -}))(); +export const zCreateOrganizationSsoPortalLinkGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse200ApplicationJsonZodInput = z.input; +export type CreateOrganizationSsoPortalLinkGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse200ApplicationJsonZodOutput = z.output; +export type CreateOrganizationSsoPortalLinkGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) +export const zCreateProjectGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zCreateSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type CreateSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') -}))(); +export const zCreateVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type CreateVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateVoiceProfileGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') -}))(); +export const zCreateWebhookDestinationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWebhookDestinationGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWebhookDestinationGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') -}))(); +export const zCreateWhatsappSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateWhatsappVoipSenderGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zDeleteAccountGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteAccountGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteAccountGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zDeleteProjectGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteProjectGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteProjectGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zDeleteVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileGatewayTimeoutProblemZodOutput = z.output; -export const zRefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zDeleteVoiceProfileInboundGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type DeleteVoiceProfileInboundGatewayTimeoutProblemZodInput = z.input; -export type RefreshOrganizationSsoConnectionResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileInboundGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zDeleteVoiceProfileOutboundGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse200ApplicationJsonZodInput = z.input; +export type DeleteVoiceProfileOutboundGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse200ApplicationJsonZodOutput = z.output; +export type DeleteVoiceProfileOutboundGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zDeleteWebhookDestinationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse202ApplicationJsonZodInput = z.input; +export type DeleteWebhookDestinationGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse202ApplicationJsonZodOutput = z.output; +export type DeleteWebhookDestinationGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zDisableOrganizationSsoGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type DisableOrganizationSsoGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); +export const zDisconnectWhatsappBusinessAccountGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type DisconnectWhatsappBusinessAccountGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type DisconnectWhatsappBusinessAccountGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zDownloadAttachmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DownloadAttachmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DownloadAttachmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zGetAccountGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetAccountGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAccountGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zGetAgentProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type GetAgentProfileGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAgentProfileGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetAttachmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetAttachmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetAttachmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetBillingOperationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetBillingOperationGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetBillingOperationGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zGetBillingOverviewGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetBillingOverviewGatewayTimeoutProblemZodInput = z.input; -export type ReleaseImessageDedicatedLineResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetBillingOverviewGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zGetDefaultVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseResourceResponse200ApplicationJsonZodInput = z.input; +export type GetDefaultVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse200ApplicationJsonZodOutput = z.output; +export type GetDefaultVoiceProfileGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zGetOperationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseResourceResponse202ApplicationJsonZodInput = z.input; +export type GetOperationGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse202ApplicationJsonZodOutput = z.output; +export type GetOperationGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetOrganizationBillingOverviewGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseResourceResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationBillingOverviewGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationBillingOverviewGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); +export const zGetOrganizationConnectionStatusGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseResourceResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationConnectionStatusGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationConnectionStatusGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('WHATSAPP_SENDER_CONNECTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Sender Connected'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-connected') - }), - z.looseObject({ - code: z.literal('WHATSAPP_SENDER_PROVISIONING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('WhatsApp Sender Provisioning'), - type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-provisioning') - }) +export const zGetOrganizationPaymentMethodGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseResourceResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationPaymentMethodGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationPaymentMethodGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetOrganizationSsoConfigurationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseResourceResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetOrganizationSsoConfigurationGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetOrganizationSsoConfigurationGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zGetProjectClosureStatusGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseResourceResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectClosureStatusGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectClosureStatusGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zGetProjectGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReleaseResourceResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetProjectImessagePlatformGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseResourceResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectImessagePlatformGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectImessagePlatformGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetProjectWhatsappPlatformGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseResourceResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectWhatsappPlatformGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetProjectWhatsappPlatformGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseResourceResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zGetResourceGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseResourceResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetResourceGatewayTimeoutProblemZodInput = z.input; -export type ReleaseResourceResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type GetResourceGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() -}))(); +export const zGetSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseSharedLineAssignmentResponse200ApplicationJsonZodInput = z.input; +export type GetSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse200ApplicationJsonZodOutput = z.output; +export type GetSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zGetSmsLineCampaignAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type GetSmsLineCampaignAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type GetSmsLineCampaignAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ASSIGNMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Assignment Not Found'), - type: z.literal('https://photon.codes/docs/problems/assignment-not-found') -}))(); +export const zGetVoiceLineProfileAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type GetVoiceLineProfileAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type GetVoiceLineProfileAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zGetVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type GetVoiceProfileGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zGetWebhookDestinationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); + +export type GetWebhookDestinationGatewayTimeoutProblemZodInput = z.input; + +export type GetWebhookDestinationGatewayTimeoutProblemZodOutput = z.output; -export type ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; +export const zGetWebhookEventSchemaGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); + +export type GetWebhookEventSchemaGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWebhookEventSchemaGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zGetWhatsappBusinessAccountGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessAccountGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessAccountGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zGetWhatsappBusinessVerificationCodeGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessVerificationCodeGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessVerificationCodeGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zGetWhatsappSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zListAccountServiceKeysGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListAccountServiceKeysGatewayTimeoutProblemZodInput = z.input; -export type ReleaseSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ListAccountServiceKeysGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zListAttachmentsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse200ApplicationJsonZodInput = z.input; +export type ListAttachmentsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse200ApplicationJsonZodOutput = z.output; +export type ListAttachmentsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export const zListAuthorizedApplicationsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse202ApplicationJsonZodInput = z.input; +export type ListAuthorizedApplicationsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse202ApplicationJsonZodOutput = z.output; +export type ListAuthorizedApplicationsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zListBillingPlansGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListBillingPlansGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListBillingPlansGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); +export const zListInvoicesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListInvoicesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListInvoicesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zListNumberAreaCodesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberAreaCodesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberAreaCodesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zListNumberCountriesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListNumberCountriesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ListNumberCountriesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zListOauthScopesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type ListOauthScopesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type ListOauthScopesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListOperationsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListOperationsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListOperationsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zListProjectsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListProjectsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListProjectsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zListResourcesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ListResourcesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappDedicatedLineResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ListResourcesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - assignedPhoneNumber: z.string(), - assignmentId: z.string(), - createdAt: z.string(), - email: z.string().optional(), - firstName: z.string().optional(), - handle: z.string(), - lastName: z.string().optional(), - platform: openEnum(['imessage', 'whatsapp']), - projectId: z.string(), - releasedAt: z.string().optional(), - updatedAt: z.string() -}))(); +export const zListSharedLineAssignmentsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJsonZodInput = z.input; +export type ListSharedLineAssignmentsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse200ApplicationJsonZodOutput = z.output; +export type ListSharedLineAssignmentsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zListVoiceProfilesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ListVoiceProfilesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ListVoiceProfilesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ASSIGNMENT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Assignment Not Found'), - type: z.literal('https://photon.codes/docs/problems/assignment-not-found') -}))(); +export const zListWebhookApiVersionsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookApiVersionsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookApiVersionsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zListWebhookDestinationsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookDestinationsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookDestinationsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zListWebhookEventTypesGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookEventTypesGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookEventTypesGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zListWhatsappAccountPhoneNumbersGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappAccountPhoneNumbersGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappAccountPhoneNumbersGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zListWhatsappSharedLineAssignmentsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappSharedLineAssignmentsGatewayTimeoutProblemZodInput = z.input; -export type ReleaseWhatsappSharedLineAssignmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappSharedLineAssignmentsGatewayTimeoutProblemZodOutput = z.output; -export const zReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zProvisionImessageDedicatedLineGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ReleaseWhatsappSharedLineAssignmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ReleaseWhatsappSharedLineAssignmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zReplaceVoiceProfileInboundRequestApplicationJson = z.looseObject({ - credentials: z.looseObject({ - password: z.string(), - username: z.string() - }).nullable(), - destinationUri: z.string(), - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type ProvisionImessageDedicatedLineGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundRequestApplicationJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineGatewayTimeoutProblemZodOutput = z.output; -export type ReplaceVoiceProfileInboundRequestApplicationJsonZodOutput = z.output; +export const zProvisionWhatsappDedicatedLineGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export const zReplaceVoiceProfileInboundResponse200ApplicationJson = z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type ProvisionWhatsappDedicatedLineGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse200ApplicationJsonZodInput = z.input; +export type ProvisionWhatsappDedicatedLineGatewayTimeoutProblemZodOutput = z.output; -export type ReplaceVoiceProfileInboundResponse200ApplicationJsonZodOutput = z.output; +export const zPurchaseSmsNumberGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export const zReplaceVoiceProfileInboundResponse201ApplicationJson = z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type PurchaseSmsNumberGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse201ApplicationJsonZodInput = z.input; - -export type ReplaceVoiceProfileInboundResponse201ApplicationJsonZodOutput = z.output; - -export const zReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ReplaceVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); +export type PurchaseSmsNumberGatewayTimeoutProblemZodOutput = z.output; -export type ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type ReplaceVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }) -]))(); - -export type ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ReplaceVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zQueryMessageMetricsGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type QueryMessageMetricsGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type QueryMessageMetricsGatewayTimeoutProblemZodOutput = z.output; -export const zReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zRedeemAppInstallationDeliveryGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type RedeemAppInstallationDeliveryGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type RedeemAppInstallationDeliveryGatewayTimeoutProblemZodOutput = z.output; -export const zReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zRefreshOrganizationSsoConnectionGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type RefreshOrganizationSsoConnectionGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type RefreshOrganizationSsoConnectionGatewayTimeoutProblemZodOutput = z.output; -export const zReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zReleaseImessageDedicatedLineGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseImessageDedicatedLineGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseImessageDedicatedLineGatewayTimeoutProblemZodOutput = z.output; -export const zReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zReleaseResourceGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseResourceGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseResourceGatewayTimeoutProblemZodOutput = z.output; -export const zReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zReleaseSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ReplaceVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ReleaseSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export const zResetAccountProfilePictureResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() -}))(); +export const zReleaseWhatsappDedicatedLineGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ResetAccountProfilePictureResponse200ApplicationJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse200ApplicationJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export type ReleaseWhatsappDedicatedLineGatewayTimeoutProblemZodInput = z.input; -export type ResetAccountProfilePictureResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappDedicatedLineGatewayTimeoutProblemZodOutput = z.output; -export type ResetAccountProfilePictureResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export const zResetAccountProfilePictureResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export type ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblemZodInput = z.input; -export type ResetAccountProfilePictureResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ReleaseWhatsappSharedLineAssignmentGatewayTimeoutProblemZodOutput = z.output; -export type ResetAccountProfilePictureResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export const zReplaceVoiceProfileInboundGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export const zResetAccountProfilePictureResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type ReplaceVoiceProfileInboundGatewayTimeoutProblemZodInput = z.input; -export type ResetAccountProfilePictureResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ResetAccountProfilePictureResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResetAccountProfilePictureResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type ReplaceVoiceProfileInboundGatewayTimeoutProblemZodOutput = z.output; -export type ResetAccountProfilePictureResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zResetAccountProfilePictureGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResetAccountProfilePictureResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type ResetAccountProfilePictureGatewayTimeoutProblemZodInput = z.input; -export const zResetAccountProfilePictureResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type ResetAccountProfilePictureGatewayTimeoutProblemZodOutput = z.output; + +export const zResetAgentProfileAvatarGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResetAccountProfilePictureResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ResetAgentProfileAvatarGatewayTimeoutProblemZodInput = z.input; -export type ResetAccountProfilePictureResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ResetAgentProfileAvatarGatewayTimeoutProblemZodOutput = z.output; -export const zResetAccountProfilePictureResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zResumeSubscriptionGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionGatewayTimeoutProblemZodInput = z.input; -export type ResetAccountProfilePictureResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() -}))(); +export const zRetryOrganizationConnectionSyncGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse200ApplicationJsonZodInput = z.input; +export type RetryOrganizationConnectionSyncGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse200ApplicationJsonZodOutput = z.output; +export type RetryOrganizationConnectionSyncGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) +export const zRevokeAccountServiceKeyGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export const zRevokeAuthorizedApplicationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAuthorizedApplicationGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAuthorizedApplicationGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export const zRotateVoiceProfileOutboundCredentialGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zRotateWebhookSigningSecretGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type RotateWebhookSigningSecretGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateWebhookSigningSecretGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zStartAccountPhoneVerificationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type StartAccountPhoneVerificationGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type StartAccountPhoneVerificationGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUnassignSmsLineCampaignGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type ResetAgentProfileAvatarResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignSmsLineCampaignGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignSmsLineCampaignGatewayTimeoutProblemZodOutput = z.output; -export const zResetAgentProfileAvatarResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zUnassignVoiceLineProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignVoiceLineProfileGatewayTimeoutProblemZodInput = z.input; -export type ResetAgentProfileAvatarResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignVoiceLineProfileGatewayTimeoutProblemZodOutput = z.output; -export const zResumeSubscriptionRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - category: z.string() -}))(); +export const zUpdateAccountGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResumeSubscriptionRequestApplicationJsonZodInput = z.input; +export type UpdateAccountGatewayTimeoutProblemZodInput = z.input; -export type ResumeSubscriptionRequestApplicationJsonZodOutput = z.output; +export type UpdateAccountGatewayTimeoutProblemZodOutput = z.output; -export const zResumeSubscriptionResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - category: z.string(), - resumed: z.boolean() -}))(); +export const zUpdateAgentProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type ResumeSubscriptionResponse200ApplicationJsonZodInput = z.input; - -export type ResumeSubscriptionResponse200ApplicationJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type ResumeSubscriptionResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type ResumeSubscriptionResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FAILED_PRECONDITION'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Failed Precondition'), - type: z.literal('https://photon.codes/docs/problems/failed-precondition') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_REQUEST_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Idempotency Request In Progress'), - type: z.literal('https://photon.codes/docs/problems/idempotency-request-in-progress') - }) -]))(); - -export type ResumeSubscriptionResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type ResumeSubscriptionResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type ResumeSubscriptionResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type UpdateAgentProfileGatewayTimeoutProblemZodInput = z.input; -export type ResumeSubscriptionResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Idempotency Unavailable'), - type: z.literal('https://photon.codes/docs/problems/idempotency-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type ResumeSubscriptionResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zResumeSubscriptionResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type ResumeSubscriptionResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type ResumeSubscriptionResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRetryOrganizationConnectionSyncResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - membership: z.looseObject({ - errorCode: z.string().nullable(), - retryAt: z.string().nullable(), - status: openEnum([ - 'pending', - 'syncing', - 'ready', - 'error', - 'blocked' - ]) - }), - organization: z.looseObject({ - errorCode: z.string().nullable(), - status: openEnum([ - 'pending', - 'syncing', - 'ready', - 'error', - 'blocked' - ]) - }), - organizationId: z.string(), - synchronized: z.boolean() -}))(); +export type UpdateAgentProfileGatewayTimeoutProblemZodOutput = z.output; -export type RetryOrganizationConnectionSyncResponse200ApplicationJsonZodInput = z.input; +export const zUpdateDefaultVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse200ApplicationJsonZodOutput = z.output; +export type UpdateDefaultVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export const zRetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export type UpdateDefaultVoiceProfileGatewayTimeoutProblemZodOutput = z.output; + +export const zUpdateOrganizationSsoPolicyGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateOrganizationSsoPolicyGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateOrganizationSsoPolicyGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zUpdateProjectGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem ]))(); -export type RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateProjectGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_CONNECTION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization Connection Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-connection-not-found') -}))(); +export const zUpdateVoiceProfileGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SYNC_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization Synchronization Unavailable'), - type: z.literal('https://photon.codes/docs/problems/organization-sync-unavailable') -}))(); +export const zUpdateVoiceProfileInboundGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileInboundGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileInboundGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zUpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zUpdateWebhookDestinationGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zRequestTimeoutProblem, + zUpstreamTimeoutProblem ]))(); -export type RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateWebhookDestinationGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateWebhookDestinationGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUploadAttachmentGatewayTimeoutProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zUpstreamTimeoutProblem, + zRequestTimeoutProblem +]))(); -export type RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UploadAttachmentGatewayTimeoutProblemZodInput = z.input; -export type RetryOrganizationConnectionSyncResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UploadAttachmentGatewayTimeoutProblemZodOutput = z.output; -export const zRetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ +export const zUpstreamUnavailableProblem = /* @__PURE__ */ (() => z.object({ code: z.literal('UPSTREAM_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(503), title: z.literal('Upstream Service Unavailable'), type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +}).catchall(zJsonValue))(); -export type RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type RetryOrganizationConnectionSyncResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type RetryOrganizationConnectionSyncResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - serviceKey: z.looseObject({ - accountId: z.string(), - createdAt: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - revokedAt: z.string().nullable(), - serviceKeyId: z.string() - }) -}))(); - -export type RevokeAccountServiceKeyResponse200ApplicationJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse200ApplicationJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') - }), - z.looseObject({ - code: z.literal('ACCOUNT_SERVICE_KEY_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Service Key Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-service-key-not-found') - }) -]))(); - -export type RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export type UpstreamUnavailableProblemZodInput = z.input; -export type RevokeAccountServiceKeyResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type UpstreamUnavailableProblemZodOutput = z.output; -export type RevokeAccountServiceKeyResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export const zAssignSmsLineCampaignServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignContextUnavailableProblem, + zUpstreamUnavailableProblem +]))(); -export const zRevokeAccountServiceKeyResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type AssignSmsLineCampaignServiceUnavailableProblemZodInput = z.input; -export type RevokeAccountServiceKeyResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAccountServiceKeyResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAccountServiceKeyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type AssignSmsLineCampaignServiceUnavailableProblemZodOutput = z.output; -export type RevokeAccountServiceKeyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zCancelSubscriptionServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyUnavailableProblem, + zUpstreamUnavailableProblem +]))(); -export type RevokeAccountServiceKeyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionServiceUnavailableProblemZodInput = z.input; -export const zRevokeAccountServiceKeyResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type CancelSubscriptionServiceUnavailableProblemZodOutput = z.output; + +export const zChangePlanServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyUnavailableProblem, + zUpstreamUnavailableProblem +]))(); -export type RevokeAccountServiceKeyResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ChangePlanServiceUnavailableProblemZodInput = z.input; -export type RevokeAccountServiceKeyResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ChangePlanServiceUnavailableProblemZodOutput = z.output; -export const zRevokeAccountServiceKeyResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zConnectEmailDomainServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem ]))(); -export type RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainServiceUnavailableProblemZodInput = z.input; -export type RevokeAccountServiceKeyResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectEmailDomainServiceUnavailableProblemZodOutput = z.output; -export const zRevokeAuthorizedApplicationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 +export const zConnectWhatsappBusinessServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem ]))(); -export type RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessServiceUnavailableProblemZodInput = z.input; -export type RevokeAuthorizedApplicationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type ConnectWhatsappBusinessServiceUnavailableProblemZodOutput = z.output; -export const zRevokeAuthorizedApplicationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zCreateOrganizationPaymentMethodCheckoutServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zPaymentProviderNotReadyProblem, + zUpstreamUnavailableProblem +]))(); -export type RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblemZodInput = z.input; -export type RevokeAuthorizedApplicationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateOrganizationPaymentMethodCheckoutServiceUnavailableProblemZodOutput = z.output; -export const zRevokeAuthorizedApplicationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zCreateSharedLineAssignmentServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zSharedLinePoolExhaustedProblem, + zUpstreamUnavailableProblem ]))(); -export type RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAuthorizedApplicationResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateSharedLineAssignmentServiceUnavailableProblemZodInput = z.input; -export const zRevokeAuthorizedApplicationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type CreateSharedLineAssignmentServiceUnavailableProblemZodOutput = z.output; -export type RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export const zCreateWhatsappSharedLineAssignmentServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zSharedLinePoolExhaustedProblem, + zUpstreamUnavailableProblem +]))(); -export type RevokeAuthorizedApplicationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappSharedLineAssignmentServiceUnavailableProblemZodInput = z.input; -export const zRevokeAuthorizedApplicationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export type CreateWhatsappSharedLineAssignmentServiceUnavailableProblemZodOutput = z.output; -export type RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAuthorizedApplicationResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeAuthorizedApplicationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeAuthorizedApplicationResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeProjectApiKeyResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - apiKey: z.looseObject({ - apiKeyId: z.string(), - createdAt: z.string(), - createdByAccountId: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - permissions: z.array(z.string()), - permissionsUpdatedAt: z.string().nullable(), - projectId: z.string(), - revokedAt: z.string().nullable() - }) -}))(); - -export type RevokeProjectApiKeyResponse200ApplicationJsonZodInput = z.input; - -export type RevokeProjectApiKeyResponse200ApplicationJsonZodOutput = z.output; - -export const zRevokeProjectApiKeyResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zCreateWhatsappVoipSenderServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export type RevokeProjectApiKeyResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeProjectApiKeyResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeProjectApiKeyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeProjectApiKeyResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeProjectApiKeyResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') - }), - z.looseObject({ - code: z.literal('API_KEY_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('API Key Not Found'), - type: z.literal('https://photon.codes/docs/problems/api-key-not-found') - }) -]))(); - -export type RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type RevokeProjectApiKeyResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRevokeProjectApiKeyResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export type CreateWhatsappVoipSenderServiceUnavailableProblemZodInput = z.input; -export type RevokeProjectApiKeyResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderServiceUnavailableProblemZodOutput = z.output; -export type RevokeProjectApiKeyResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export const zGetProjectImessagePlatformServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export const zRevokeProjectApiKeyResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type GetProjectImessagePlatformServiceUnavailableProblemZodInput = z.input; -export type RevokeProjectApiKeyResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectImessagePlatformServiceUnavailableProblemZodOutput = z.output; -export type RevokeProjectApiKeyResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zGetProjectWhatsappPlatformServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export const zRevokeProjectApiKeyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type GetProjectWhatsappPlatformServiceUnavailableProblemZodInput = z.input; -export type RevokeProjectApiKeyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type GetProjectWhatsappPlatformServiceUnavailableProblemZodOutput = z.output; -export type RevokeProjectApiKeyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zGetSmsLineCampaignAssignmentServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignContextUnavailableProblem, + zUpstreamUnavailableProblem +]))(); -export const zRevokeProjectApiKeyResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); +export type GetSmsLineCampaignAssignmentServiceUnavailableProblemZodInput = z.input; -export type RevokeProjectApiKeyResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type GetSmsLineCampaignAssignmentServiceUnavailableProblemZodOutput = z.output; -export type RevokeProjectApiKeyResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export const zProvisionImessageDedicatedLineServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export const zRotateVoiceProfileOutboundCredentialRequestApplicationJson = z.looseObject({ - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mode: openEnum(['normal', 'emergency']) -}); +export type ProvisionImessageDedicatedLineServiceUnavailableProblemZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialRequestApplicationJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineServiceUnavailableProblemZodOutput = z.output; -export type RotateVoiceProfileOutboundCredentialRequestApplicationJsonZodOutput = z.output; +export const zProvisionWhatsappDedicatedLineServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export const zRotateVoiceProfileOutboundCredentialResponse200ApplicationJson = z.looseObject({ - password: z.string().nullable(), - previousPasswordValidUntil: z.string().nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type ProvisionWhatsappDedicatedLineServiceUnavailableProblemZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse200ApplicationJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse200ApplicationJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); +export type ProvisionWhatsappDedicatedLineServiceUnavailableProblemZodOutput = z.output; -export type RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_NOT_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Not Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-not-configured') - }) -]))(); - -export type RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type RotateVoiceProfileOutboundCredentialResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zRotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zPurchaseSmsNumberServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zBillingNotProvisionedProblem, + zUpstreamUnavailableProblem +]))(); -export type RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type PurchaseSmsNumberServiceUnavailableProblemZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type PurchaseSmsNumberServiceUnavailableProblemZodOutput = z.output; -export const zRotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zResumeSubscriptionServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyUnavailableProblem, + zUpstreamUnavailableProblem ]))(); -export type RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionServiceUnavailableProblemZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionServiceUnavailableProblemZodOutput = z.output; -export const zRotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zUnassignSmsLineCampaignServiceUnavailableProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSmsCampaignContextUnavailableProblem, + zUpstreamUnavailableProblem +]))(); -export type RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type UnassignSmsLineCampaignServiceUnavailableProblemZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type UnassignSmsLineCampaignServiceUnavailableProblemZodOutput = z.output; -export const zRotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zUsageChargeFilterValue = /* @__PURE__ */ (() => z.looseObject({ + key: z.string(), + values: z.array(z.string()) }))(); -export type RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UsageChargeFilterValueZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UsageChargeFilterValueZodOutput = z.output; -export const zRotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zUsageChargeModel = /* @__PURE__ */ (() => openEnum([ + 'dynamic', + 'graduated', + 'graduated_percentage', + 'package', + 'percentage', + 'standard', + 'volume' ]))(); -export type RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type UsageChargeModelZodInput = z.input; -export type RotateVoiceProfileOutboundCredentialResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type UsageChargeModelZodOutput = z.output; -export const zRotateWebhookSigningSecretRequestApplicationJson = z.looseObject({ - overlapSeconds: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional() +export const zUsageChargeTier = z.looseObject({ + flatAmount: z.string().nullable(), + fromUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + perUnitAmount: z.string().nullable(), + rate: z.string().nullable(), + toUnit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable() }); -export type RotateWebhookSigningSecretRequestApplicationJsonZodInput = z.input; +export type UsageChargeTierZodInput = z.input; + +export type UsageChargeTierZodOutput = z.output; + +export const zUsageChargePricing = z.looseObject({ + amount: z.string().nullable(), + fixedAmount: z.string().nullable(), + freeUnits: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), + freeUnitsPerEvents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), + freeUnitsPerTotalAggregation: z.string().nullable(), + packageSize: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).nullable(), + perTransactionMaxAmount: z.string().nullable(), + perTransactionMinAmount: z.string().nullable(), + pricingGroupKeys: z.array(z.string()), + rate: z.string().nullable(), + tiers: z.array(zUsageChargeTier) +}); -export type RotateWebhookSigningSecretRequestApplicationJsonZodOutput = z.output; +export type UsageChargePricingZodInput = z.input; -export const zRotateWebhookSigningSecretResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - previousSecretExpiresAt: z.string().nullable(), - signingSecret: z.string() +export type UsageChargePricingZodOutput = z.output; + +export const zUsageChargeFilter = /* @__PURE__ */ (() => z.looseObject({ + displayName: z.string().nullable(), + pricing: zUsageChargePricing, + values: z.array(zUsageChargeFilterValue) }))(); -export type RotateWebhookSigningSecretResponse200ApplicationJsonZodInput = z.input; +export type UsageChargeFilterZodInput = z.input; -export type RotateWebhookSigningSecretResponse200ApplicationJsonZodOutput = z.output; +export type UsageChargeFilterZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zUsageCharge = z.looseObject({ + chargeCode: z.string().nullable(), + chargeModel: zUsageChargeModel, + displayName: z.string().nullable(), + filters: z.array(zUsageChargeFilter), + invoiceable: z.boolean(), + metricCode: z.string(), + minimumAmountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + payInAdvance: z.boolean(), + pricing: zUsageChargePricing, + prorated: z.boolean() +}); -export type RotateWebhookSigningSecretResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type UsageChargeZodInput = z.input; -export type RotateWebhookSigningSecretResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type UsageChargeZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zBillingPlan = z.looseObject({ + baseAmountCents: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + categoryDisplayName: z.string().nullish(), + currency: z.string(), + description: z.string().nullable(), + entitlements: z.array(zBillingPlanEntitlement), + fixedCharges: z.array(zFixedCharge), + interval: zBillingPlanInterval, + name: z.string(), + payInAdvance: z.boolean(), + planCode: z.string(), + usageCharges: z.array(zUsageCharge) +}); -export type RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type BillingPlanZodInput = z.input; -export type RotateWebhookSigningSecretResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type BillingPlanZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Webhook Destination Not Found'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-not-found') +export const zListBillingPlansResponse = /* @__PURE__ */ (() => z.looseObject({ + plans: z.object({}).catchall(z.array(zBillingPlan)) }))(); -export type RotateWebhookSigningSecretResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ListBillingPlansResponseZodInput = z.input; -export type RotateWebhookSigningSecretResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type ListBillingPlansResponseZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Webhook Destination Deleted'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-deleted') +export const zValidationLocation = /* @__PURE__ */ (() => openEnum([ + 'body', + 'cookie', + 'form', + 'header', + 'json', + 'param', + 'query' +]))(); + +export type ValidationLocationZodInput = z.input; + +export type ValidationLocationZodOutput = z.output; + +export const zValidationIssue = /* @__PURE__ */ (() => z.looseObject({ + code: z.string(), + location: zValidationLocation, + message: z.string(), + path: z.string() }))(); -export type RotateWebhookSigningSecretResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ValidationIssueZodInput = z.input; -export type RotateWebhookSigningSecretResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ValidationIssueZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), +export const zValidationFailedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VALIDATION_FAILED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + issues: z.array(zValidationIssue), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') -}))(); + title: z.literal('Request Validation Failed'), + type: z.literal('https://photon.codes/docs/problems/validation-failed') +}).catchall(zJsonValue))(); -export type RotateWebhookSigningSecretResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type ValidationFailedProblemZodInput = z.input; -export type RotateWebhookSigningSecretResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type ValidationFailedProblemZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCancelSubscriptionUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type RotateWebhookSigningSecretResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CancelSubscriptionUnprocessableEntityProblemZodInput = z.input; -export type RotateWebhookSigningSecretResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CancelSubscriptionUnprocessableEntityProblemZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zChangePlanUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type RotateWebhookSigningSecretResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ChangePlanUnprocessableEntityProblemZodInput = z.input; -export type RotateWebhookSigningSecretResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ChangePlanUnprocessableEntityProblemZodOutput = z.output; -export const zRotateWebhookSigningSecretResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') -}))(); +export const zCommitAccountProfilePictureUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyReusedProblem, + zValidationFailedProblem +]))(); -export type RotateWebhookSigningSecretResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CommitAccountProfilePictureUnprocessableEntityProblemZodInput = z.input; -export type RotateWebhookSigningSecretResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CommitAccountProfilePictureUnprocessableEntityProblemZodOutput = z.output; -export const zStartAccountPhoneVerificationRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - captcha: z.looseObject({ - challengeContext: z.string(), - token: z.string() - }).optional(), - phoneNumber: z.string() -}))(); +export const zCommitAgentProfileAvatarUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type StartAccountPhoneVerificationRequestApplicationJsonZodInput = z.input; +export type CommitAgentProfileAvatarUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationRequestApplicationJsonZodOutput = z.output; +export type CommitAgentProfileAvatarUnprocessableEntityProblemZodOutput = z.output; -export const zStartAccountPhoneVerificationResponse201ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - channel: z.literal('sms'), - expiresAt: z.string(), - resendAvailableAt: z.string() -}))(); +export const zConfigureVoiceProfileOutboundUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type StartAccountPhoneVerificationResponse201ApplicationJsonZodInput = z.input; +export type ConfigureVoiceProfileOutboundUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse201ApplicationJsonZodOutput = z.output; +export type ConfigureVoiceProfileOutboundUnprocessableEntityProblemZodOutput = z.output; -export const zStartAccountPhoneVerificationResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') -}))(); +export const zConnectEmailDomainUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type StartAccountPhoneVerificationResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type StartAccountPhoneVerificationResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zStartAccountPhoneVerificationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - challengeContext: z.string(), - code: z.literal('CAPTCHA_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - provider: openEnum(['turnstile', 'hcaptcha']), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - siteKey: z.string(), - status: z.literal(403), - title: z.literal('Captcha Required'), - type: z.literal('https://photon.codes/docs/problems/captcha-required') - }), - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type StartAccountPhoneVerificationResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zStartAccountPhoneVerificationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export type ConnectEmailDomainUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectEmailDomainUnprocessableEntityProblemZodOutput = z.output; -export type StartAccountPhoneVerificationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zConnectTelegramBotUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zStartAccountPhoneVerificationResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); +export type ConnectTelegramBotUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectTelegramBotUnprocessableEntityProblemZodOutput = z.output; -export type StartAccountPhoneVerificationResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export const zConnectWhatsappBusinessUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zStartAccountPhoneVerificationResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type ConnectWhatsappBusinessUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse413ApplicationProblemPlusJsonZodInput = z.input; +export type ConnectWhatsappBusinessUnprocessableEntityProblemZodOutput = z.output; -export type StartAccountPhoneVerificationResponse413ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateAccountServiceKeyUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyReusedProblem, + zValidationFailedProblem +]))(); -export const zStartAccountPhoneVerificationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export type CreateAccountServiceKeyUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type CreateAccountServiceKeyUnprocessableEntityProblemZodOutput = z.output; -export type StartAccountPhoneVerificationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zStartAccountPhoneVerificationResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type CreateOrganizationPaymentMethodCheckoutUnprocessableEntityProblemZodOutput = z.output; -export type StartAccountPhoneVerificationResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateOrganizationSetupIntentUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); + +export type CreateOrganizationSetupIntentUnprocessableEntityProblemZodInput = z.input; -export const zStartAccountPhoneVerificationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export type CreateOrganizationSetupIntentUnprocessableEntityProblemZodOutput = z.output; + +export const zCreateProjectApiKeyUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem ]))(); -export type StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectApiKeyUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectApiKeyUnprocessableEntityProblemZodOutput = z.output; -export const zStartAccountPhoneVerificationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zCreateProjectUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type StartAccountPhoneVerificationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type CreateProjectUnprocessableEntityProblemZodInput = z.input; -export type StartAccountPhoneVerificationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateProjectUnprocessableEntityProblemZodOutput = z.output; -export const zStartAccountPhoneVerificationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zCreateSharedLineAssignmentUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type StartAccountPhoneVerificationResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type StartAccountPhoneVerificationResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zStartAccountPhoneVerificationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type StartAccountPhoneVerificationResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zStartEnterpriseLoginRequestApplicationJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - invitationToken: z.string().optional(), - organizationId: z.string(), - returnTo: z.string() - }), - z.looseObject({ - invitationToken: z.string(), - returnTo: z.string() - }), - z.looseObject({ - retryToken: z.string() - }) -]))(); - -export type StartEnterpriseLoginRequestApplicationJsonZodInput = z.input; - -export type StartEnterpriseLoginRequestApplicationJsonZodOutput = z.output; - -export const zStartEnterpriseLoginResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - url: z.string() -}))(); +export type CreateSharedLineAssignmentUnprocessableEntityProblemZodInput = z.input; -export type StartEnterpriseLoginResponse200ApplicationJsonZodInput = z.input; +export type CreateSharedLineAssignmentUnprocessableEntityProblemZodOutput = z.output; -export type StartEnterpriseLoginResponse200ApplicationJsonZodOutput = z.output; +export const zCreateWebhookDestinationUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zStartEnterpriseLoginResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') -}))(); +export type CreateWebhookDestinationUnprocessableEntityProblemZodInput = z.input; -export type StartEnterpriseLoginResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWebhookDestinationUnprocessableEntityProblemZodOutput = z.output; -export type StartEnterpriseLoginResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export const zCreateWhatsappSharedLineAssignmentUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zUnassignSmsLineCampaignResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export type CreateWhatsappSharedLineAssignmentUnprocessableEntityProblemZodInput = z.input; -export type UnassignSmsLineCampaignResponse200ApplicationJsonZodInput = z.input; +export type CreateWhatsappSharedLineAssignmentUnprocessableEntityProblemZodOutput = z.output; -export type UnassignSmsLineCampaignResponse200ApplicationJsonZodOutput = z.output; +export const zDeleteProjectUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zUnassignSmsLineCampaignResponse202ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - cancellable: z.boolean(), - createdAt: z.string(), - detail: z.looseObject({}).optional(), - endedAt: z.string().optional(), - error: z.looseObject({ - code: z.string(), - detail: z.string() - }).optional(), - operationId: z.string(), - projectId: z.string(), - resourceId: z.string().optional(), - resourceType: z.string(), - startedAt: z.string().optional(), - state: openEnum([ - 'pending', - 'running', - 'succeeded', - 'failed', - 'cancelled' - ]), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]), - updatedAt: z.string() -}))(); +export type DeleteProjectUnprocessableEntityProblemZodInput = z.input; -export type UnassignSmsLineCampaignResponse202ApplicationJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse202ApplicationJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_INVALID_REQUEST'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid SMS campaign request'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-invalid-request') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_ORGANIZATION_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Campaign belongs to another organization'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-organization-mismatch') - }) -]))(); - -export type UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Campaign not found'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-found') - }), - z.looseObject({ - code: z.literal('SMS_LINE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('SMS line not found'), - type: z.literal('https://photon.codes/docs/problems/sms-line-not-found') - }) -]))(); - -export type UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('SMS_LINE_UNSUPPORTED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('SMS line unsupported'), - type: z.literal('https://photon.codes/docs/problems/sms-line-unsupported') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign not ready'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-not-ready') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment version conflict'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-version-conflict') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_MUTATION_IN_PROGRESS'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Assignment mutation in progress'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-mutation-in-progress') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CAPACITY_EXCEEDED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign number capacity exhausted'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-capacity-exceeded') - }), - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_RECONCILIATION_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Campaign reconciliation required'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-reconciliation-required') - }) -]))(); - -export type UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') -}))(); +export type DeleteProjectUnprocessableEntityProblemZodOutput = z.output; -export type UnassignSmsLineCampaignResponse422ApplicationProblemPlusJsonZodInput = z.input; +export const zDisableOrganizationSsoUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignSmsLineCampaignResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DisableOrganizationSsoUnprocessableEntityProblemZodInput = z.input; -export const zUnassignSmsLineCampaignResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export type DisableOrganizationSsoUnprocessableEntityProblemZodOutput = z.output; + +export const zDisconnectWhatsappBusinessAccountUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignSmsLineCampaignResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type DisconnectWhatsappBusinessAccountUnprocessableEntityProblemZodInput = z.input; -export type UnassignSmsLineCampaignResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type DisconnectWhatsappBusinessAccountUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignSmsLineCampaignResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zProvisionImessageDedicatedLineUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem ]))(); -export type UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionImessageDedicatedLineUnprocessableEntityProblemZodInput = z.input; -export type UnassignSmsLineCampaignResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type ProvisionImessageDedicatedLineUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignSmsLineCampaignResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zProvisionWhatsappDedicatedLineUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignSmsLineCampaignResponse502ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse502ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse503ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('SMS_CAMPAIGN_CONTEXT_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Campaign context unavailable'), - type: z.literal('https://photon.codes/docs/problems/sms-campaign-context-unavailable') - }), - z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') - }) -]))(); - -export type UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignSmsLineCampaignResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignSmsLineCampaignResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignVoiceLineProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UnassignVoiceLineProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUnassignVoiceLineProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RESOURCE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Resource Not Found'), - type: z.literal('https://photon.codes/docs/problems/resource-not-found') -}))(); +export type ProvisionWhatsappDedicatedLineUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type ProvisionWhatsappDedicatedLineUnprocessableEntityProblemZodOutput = z.output; -export type UnassignVoiceLineProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zPurchaseSmsNumberUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zUnassignVoiceLineProfileResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') -}))(); +export type PurchaseSmsNumberUnprocessableEntityProblemZodInput = z.input; + +export type PurchaseSmsNumberUnprocessableEntityProblemZodOutput = z.output; + +export const zQueryMessageMetricsUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zQueryResourceLimitProblem, + zValidationFailedProblem +]))(); + +export type QueryMessageMetricsUnprocessableEntityProblemZodInput = z.input; + +export type QueryMessageMetricsUnprocessableEntityProblemZodOutput = z.output; + +export const zResetAccountProfilePictureUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyReusedProblem, + zValidationFailedProblem +]))(); + +export type ResetAccountProfilePictureUnprocessableEntityProblemZodInput = z.input; + +export type ResetAccountProfilePictureUnprocessableEntityProblemZodOutput = z.output; + +export const zResetAgentProfileAvatarUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); + +export type ResetAgentProfileAvatarUnprocessableEntityProblemZodInput = z.input; + +export type ResetAgentProfileAvatarUnprocessableEntityProblemZodOutput = z.output; + +export const zResumeSubscriptionUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignVoiceLineProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type ResumeSubscriptionUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type ResumeSubscriptionUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zRevokeAccountServiceKeyUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyReusedProblem, + zValidationFailedProblem +]))(); -export type UnassignVoiceLineProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeAccountServiceKeyUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeAccountServiceKeyUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zRevokeProjectApiKeyUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignVoiceLineProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type RevokeProjectApiKeyUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type RevokeProjectApiKeyUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zRotateVoiceProfileOutboundCredentialUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem ]))(); -export type UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zRotateWebhookSigningSecretUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UnassignVoiceLineProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RotateWebhookSigningSecretUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateWebhookSigningSecretUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateAccountUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zIdempotencyKeyReusedProblem, + zValidationFailedProblem +]))(); -export type UnassignVoiceLineProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAccountUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAccountUnprocessableEntityProblemZodOutput = z.output; -export const zUnassignVoiceLineProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zUpdateAgentProfileUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem ]))(); -export type UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateAgentProfileUnprocessableEntityProblemZodInput = z.input; -export type UnassignVoiceLineProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateAgentProfileUnprocessableEntityProblemZodOutput = z.output; -export const zUpdateAccountRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - firstName: z.string().optional(), - lastName: z.string().nullish() -}))(); +export const zUpdateProjectApiKeyUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UpdateAccountRequestApplicationJsonZodInput = z.input; +export type UpdateProjectApiKeyUnprocessableEntityProblemZodInput = z.input; -export type UpdateAccountRequestApplicationJsonZodOutput = z.output; +export type UpdateProjectApiKeyUnprocessableEntityProblemZodOutput = z.output; -export const zUpdateAccountResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - accountId: z.string(), - createdAt: z.string().nullable(), - deletedAt: z.string().nullable(), - email: z.string(), - firstName: z.string().nullable(), - lastName: z.string().nullable(), - phoneNumber: z.string().nullable(), - phoneVerifiedAt: z.string().nullable(), - pictureUrl: z.string(), - updatedAt: z.string().nullable() -}))(); +export const zUpdateProjectUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export type UpdateAccountResponse200ApplicationJsonZodInput = z.input; - -export type UpdateAccountResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateAccountResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('HTTP_ERROR'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Request Failed'), - type: z.literal('https://photon.codes/docs/problems/http-error') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }) -]))(); - -export type UpdateAccountResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAccountResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateAccountResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAccountResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Account Not Found'), - type: z.literal('https://photon.codes/docs/problems/account-not-found') -}))(); +export type UpdateProjectUnprocessableEntityProblemZodInput = z.input; -export type UpdateAccountResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateProjectUnprocessableEntityProblemZodOutput = z.output; -export type UpdateAccountResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export const zUpdateWebhookDestinationUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zIdempotencyKeyReusedProblem +]))(); -export const zUpdateAccountResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ACCOUNT_DELETED'), +export type UpdateWebhookDestinationUnprocessableEntityProblemZodInput = z.input; + +export type UpdateWebhookDestinationUnprocessableEntityProblemZodOutput = z.output; + +export const zVoiceDefaultProfileAssignmentForbiddenProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_DEFAULT_PROFILE_ASSIGNMENT_FORBIDDEN'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Account Deleted'), - type: z.literal('https://photon.codes/docs/problems/account-deleted') -}))(); + status: z.literal(409), + title: z.literal('Voice Default Profile Assignment Forbidden'), + type: z.literal('https://photon.codes/docs/problems/voice-default-profile-assignment-forbidden') +}).catchall(zJsonValue))(); -export type UpdateAccountResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceDefaultProfileAssignmentForbiddenProblemZodInput = z.input; -export type UpdateAccountResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceDefaultProfileAssignmentForbiddenProblemZodOutput = z.output; -export const zUpdateAccountResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), +export const zVoiceDefaultProfileDeletionForbiddenProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_DEFAULT_PROFILE_DELETION_FORBIDDEN'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); + status: z.literal(409), + title: z.literal('Voice Default Profile Deletion Forbidden'), + type: z.literal('https://photon.codes/docs/problems/voice-default-profile-deletion-forbidden') +}).catchall(zJsonValue))(); -export type UpdateAccountResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAccountResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }), - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }) -]))(); - -export type UpdateAccountResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAccountResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); - -export type UpdateAccountResponse500ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse500ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAccountResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export type VoiceDefaultProfileDeletionForbiddenProblemZodInput = z.input; + +export type VoiceDefaultProfileDeletionForbiddenProblemZodOutput = z.output; + +export const zVoiceDefaultProfileExistsProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_DEFAULT_PROFILE_EXISTS'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Voice Default Profile Exists'), + type: z.literal('https://photon.codes/docs/problems/voice-default-profile-exists') +}).catchall(zJsonValue))(); -export type UpdateAccountResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceDefaultProfileExistsProblemZodInput = z.input; -export type UpdateAccountResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceDefaultProfileExistsProblemZodOutput = z.output; -export const zUpdateAccountResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zCreateDefaultVoiceProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceDefaultProfileExistsProblem +]))(); + +export type CreateDefaultVoiceProfileConflictProblemZodInput = z.input; + +export type CreateDefaultVoiceProfileConflictProblemZodOutput = z.output; + +export const zVoiceDefaultProfileRequiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_DEFAULT_PROFILE_REQUIRED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('Voice Default Profile Required'), + type: z.literal('https://photon.codes/docs/problems/voice-default-profile-required') +}).catchall(zJsonValue))(); -export type UpdateAccountResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceDefaultProfileRequiredProblemZodInput = z.input; -export type UpdateAccountResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceDefaultProfileRequiredProblemZodOutput = z.output; -export const zUpdateAccountResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCreateVoiceProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceDefaultProfileRequiredProblem ]))(); -export type UpdateAccountResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAccountResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateVoiceProfileConflictProblemZodInput = z.input; -export const zUpdateAgentProfileRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - firstName: z.string().optional(), - lastName: z.string().nullish() -}))(); +export type CreateVoiceProfileConflictProblemZodOutput = z.output; -export type UpdateAgentProfileRequestApplicationJsonZodInput = z.input; +export const zVoiceLineProfileAssignment = z.looseObject({ + profileId: z.string().optional(), + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), + projectId: z.string(), + resourceId: z.string(), + resourceVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + updatedAt: z.string() +}); -export type UpdateAgentProfileRequestApplicationJsonZodOutput = z.output; +export type VoiceLineProfileAssignmentZodInput = z.input; -export const zUpdateAgentProfileResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() -}))(); +export type VoiceLineProfileAssignmentZodOutput = z.output; -export type UpdateAgentProfileResponse200ApplicationJsonZodInput = z.input; - -export type UpdateAgentProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateAgentProfileResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type UpdateAgentProfileResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAgentProfileResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAgentProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateAgentProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAgentProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAgentProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') +export const zBatchUpdateVoiceLineProfileAssignmentsResponse = /* @__PURE__ */ (() => z.looseObject({ + assignments: z.array(zVoiceLineProfileAssignment) }))(); -export type UpdateAgentProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAgentProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsResponseZodInput = z.input; -export const zUpdateAgentProfileResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export type BatchUpdateVoiceLineProfileAssignmentsResponseZodOutput = z.output; -export type UpdateAgentProfileResponse410ApplicationProblemPlusJsonZodInput = z.input; +export const zVoiceLineProfileAssignmentUpdate = z.looseObject({ + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + profileId: z.string().nullable(), + resourceId: z.string() +}); -export type UpdateAgentProfileResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceLineProfileAssignmentUpdateZodInput = z.input; -export const zUpdateAgentProfileResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type VoiceLineProfileAssignmentUpdateZodOutput = z.output; -export type UpdateAgentProfileResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAgentProfileResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAgentProfileResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type UpdateAgentProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateAgentProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateAgentProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zBatchUpdateVoiceLineProfileAssignmentsRequest = /* @__PURE__ */ (() => z.looseObject({ + updates: z.array(zVoiceLineProfileAssignmentUpdate) }))(); -export type UpdateAgentProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsRequestZodInput = z.input; -export type UpdateAgentProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsRequestZodOutput = z.output; -export const zUpdateAgentProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zVoiceOutboundConfiguredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_OUTBOUND_CONFIGURED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('Voice Outbound Already Configured'), + type: z.literal('https://photon.codes/docs/problems/voice-outbound-configured') +}).catchall(zJsonValue))(); -export type UpdateAgentProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceOutboundConfiguredProblemZodInput = z.input; -export type UpdateAgentProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceOutboundConfiguredProblemZodOutput = z.output; -export const zUpdateAgentProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); +export const zVoiceOutboundCredentialRotationMode = /* @__PURE__ */ (() => openEnum(['normal', 'emergency']))(); -export type UpdateAgentProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceOutboundCredentialRotationModeZodInput = z.input; -export type UpdateAgentProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceOutboundCredentialRotationModeZodOutput = z.output; -export const zUpdateDefaultVoiceProfileRequestApplicationJson = z.looseObject({ +export const zRotateVoiceProfileOutboundCredentialRequest = z.looseObject({ expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']).optional(), - protocol: z.literal('sip').optional() + mode: zVoiceOutboundCredentialRotationMode }); -export type UpdateDefaultVoiceProfileRequestApplicationJsonZodInput = z.input; - -export type UpdateDefaultVoiceProfileRequestApplicationJsonZodOutput = z.output; - -export const zUpdateDefaultVoiceProfileResponse200ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type RotateVoiceProfileOutboundCredentialRequestZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse200ApplicationJsonZodInput = z.input; - -export type UpdateDefaultVoiceProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateDefaultVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); +export type RotateVoiceProfileOutboundCredentialRequestZodOutput = z.output; -export type UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateDefaultVoiceProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_DIRECTION_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Direction Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-direction-configured') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }) -]))(); - -export type UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateDefaultVoiceProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zVoiceOutboundNotConfiguredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_OUTBOUND_NOT_CONFIGURED'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(409), + title: z.literal('Voice Outbound Not Configured'), + type: z.literal('https://photon.codes/docs/problems/voice-outbound-not-configured') +}).catchall(zJsonValue))(); -export type UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceOutboundNotConfiguredProblemZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceOutboundNotConfiguredProblemZodOutput = z.output; -export const zUpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export const zVoiceOutboundOperationPendingProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(409), + title: z.literal('Voice Outbound Operation Pending'), + type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') +}).catchall(zJsonValue))(); -export type UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceOutboundOperationPendingProblemZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceOutboundOperationPendingProblemZodOutput = z.output; -export const zUpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); +export const zVoiceProfileConfiguration = /* @__PURE__ */ (() => z.looseObject({ + inbound: zSipInboundConfiguration.nullable(), + outbound: zSipOutboundConfiguration.nullable() +}))(); -export type UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileConfigurationZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileConfigurationZodOutput = z.output; -export const zUpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zVoiceProfileDirectionConfiguredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_PROFILE_DIRECTION_CONFIGURED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(409), + title: z.literal('Voice Profile Direction Configured'), + type: z.literal('https://photon.codes/docs/problems/voice-profile-direction-configured') +}).catchall(zJsonValue))(); -export type UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileDirectionConfiguredProblemZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileDirectionConfiguredProblemZodOutput = z.output; -export const zUpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zVoiceProfileInUseProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_PROFILE_IN_USE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('Voice Profile In Use'), + type: z.literal('https://photon.codes/docs/problems/voice-profile-in-use') +}).catchall(zJsonValue))(); -export type UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileInUseProblemZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileInUseProblemZodOutput = z.output; -export const zUpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +export const zVoiceProfileInboundConfiguration = z.looseObject({ + inbound: zSipInboundConfiguration.nullable(), + profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileInboundConfigurationZodInput = z.input; -export type UpdateDefaultVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileInboundConfigurationZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - expectedVersion: z.string(), - ssoJitEnabled: z.boolean() -}))(); +export const zVoiceProfileMediaEncryption = /* @__PURE__ */ (() => openEnum(['auto', 'srtp']))(); -export type UpdateOrganizationSsoPolicyRequestApplicationJsonZodInput = z.input; +export type VoiceProfileMediaEncryptionZodInput = z.input; -export type UpdateOrganizationSsoPolicyRequestApplicationJsonZodOutput = z.output; +export type VoiceProfileMediaEncryptionZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - connectionChangedAt: z.string().nullable(), - connectionGeneration: z.string(), - connectionState: openEnum([ - 'not_configured', - 'configuring', - 'ready', - 'error' - ]), - connectionType: z.string().optional(), - desiredSsoEnforced: z.boolean(), - domains: z.array(z.looseObject({ - domain: z.string(), - state: openEnum([ - 'verified', - 'pending', - 'failed' - ]) - })).optional(), - organizationId: z.string(), - policySyncStatus: openEnum(['synced', 'manual_required']), - providerAvailable: z.boolean().optional(), - ssoEnforced: z.boolean(), - ssoJitEnabled: z.boolean(), - version: z.string() +export const zCreateDefaultVoiceProfileRequest = /* @__PURE__ */ (() => z.looseObject({ + mediaEncryption: zVoiceProfileMediaEncryption.optional(), + protocol: z.literal('sip') }))(); -export type UpdateOrganizationSsoPolicyResponse200ApplicationJsonZodInput = z.input; - -export type UpdateOrganizationSsoPolicyResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('INVALID_RETURN_TO'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Return To'), - type: z.literal('https://photon.codes/docs/problems/invalid-return-to') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); - -export type UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateDefaultVoiceProfileRequestZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateDefaultVoiceProfileRequestZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_FORBIDDEN_403, - zAuthorization_Problem_INSUFFICIENT_SCOPE_403 -]))(); +export const zCreateVoiceProfileRequest = /* @__PURE__ */ (() => z.looseObject({ + mediaEncryption: zVoiceProfileMediaEncryption.optional(), + name: z.string(), + protocol: z.literal('sip') +}))(); -export type UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type CreateVoiceProfileRequestZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateVoiceProfileRequestZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Organization SSO Not Found'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-not-found') -}))(); +export const zUpdateDefaultVoiceProfileRequest = z.looseObject({ + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + mediaEncryption: zVoiceProfileMediaEncryption.optional(), + protocol: z.literal('sip').optional() +}); -export type UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateDefaultVoiceProfileRequestZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateDefaultVoiceProfileRequestZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Organization SSO Conflict'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-conflict') -}))(); +export const zUpdateVoiceProfileRequest = z.looseObject({ + expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + mediaEncryption: zVoiceProfileMediaEncryption.optional(), + name: z.string().optional(), + protocol: z.literal('sip').optional() +}); -export type UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileRequestZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileRequestZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('ORGANIZATION_SSO_PRECONDITION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(412), - title: z.literal('Organization SSO Precondition Failed'), - type: z.literal('https://photon.codes/docs/problems/organization-sso-precondition-failed') -}))(); +export const zVoiceProfile = z.looseObject({ + configuration: zVoiceProfileConfiguration, + createdAt: z.string(), + isDefault: z.boolean(), + lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + mediaEncryption: zVoiceProfileMediaEncryption, + name: z.string(), + profileId: z.string(), + projectId: z.string(), + protocol: z.literal('sip'), + updatedAt: z.string(), + version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) +}); -export type UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse412ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zVoiceProfileNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_PROFILE_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(404), + title: z.literal('Voice Profile Not Found'), + type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') +}).catchall(zJsonValue))(); -export type UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileNotFoundProblemZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileNotFoundProblemZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zAssignVoiceLineProfileNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zResourceNotFoundProblem, + zVoiceProfileNotFoundProblem ]))(); -export type UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type AssignVoiceLineProfileNotFoundProblemZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignVoiceLineProfileNotFoundProblemZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zBatchUpdateVoiceLineProfileAssignmentsNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zResourceNotFoundProblem, + zVoiceProfileNotFoundProblem +]))(); -export type UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsNotFoundProblemZodInput = z.input; -export type UpdateOrganizationSsoPolicyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type BatchUpdateVoiceLineProfileAssignmentsNotFoundProblemZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zVoiceProfilePage = /* @__PURE__ */ (() => z.looseObject({ + nextPageToken: z.string().optional(), + profiles: z.array(zVoiceProfile) }))(); -export type UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateOrganizationSsoPolicyResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateOrganizationSsoPolicyResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - permissions: z.array(openEnum([ - 'events:read', - 'events:write', - 'platforms:read', - 'platforms:write', - 'project:read', - 'project:write' - ])) -}))(); - -export type UpdateProjectApiKeyRequestApplicationJsonZodInput = z.input; - -export type UpdateProjectApiKeyRequestApplicationJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - apiKey: z.looseObject({ - apiKeyId: z.string(), - createdAt: z.string(), - createdByAccountId: z.string(), - expiresAt: z.string().nullable(), - name: z.string(), - permissions: z.array(z.string()), - permissionsUpdatedAt: z.string().nullable(), - projectId: z.string(), - revokedAt: z.string().nullable() - }) -}))(); - -export type UpdateProjectApiKeyResponse200ApplicationJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }), - z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') - }) -]))(); - -export type UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse404ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') - }), - z.looseObject({ - code: z.literal('API_KEY_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('API Key Not Found'), - type: z.literal('https://photon.codes/docs/problems/api-key-not-found') - }) -]))(); - -export type UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse409ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('API_KEY_REVOKED'), +export type VoiceProfilePageZodInput = z.input; + +export type VoiceProfilePageZodOutput = z.output; + +export const zVoiceProfileVersionConflictProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(409), - title: z.literal('API Key Revoked'), - type: z.literal('https://photon.codes/docs/problems/api-key-revoked') -}))(); + title: z.literal('Voice Profile Version Conflict'), + type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') +}).catchall(zJsonValue))(); -export type UpdateProjectApiKeyResponse409ApplicationProblemPlusJsonZodInput = z.input; +export type VoiceProfileVersionConflictProblemZodInput = z.input; -export type UpdateProjectApiKeyResponse409ApplicationProblemPlusJsonZodOutput = z.output; +export type VoiceProfileVersionConflictProblemZodOutput = z.output; -export const zUpdateProjectApiKeyResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export const zAssignVoiceLineProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceDefaultProfileAssignmentForbiddenProblem, + zVoiceProfileVersionConflictProblem +]))(); -export type UpdateProjectApiKeyResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type AssignVoiceLineProfileConflictProblemZodInput = z.input; -export type UpdateProjectApiKeyResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type AssignVoiceLineProfileConflictProblemZodOutput = z.output; -export const zUpdateProjectApiKeyResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export const zBatchUpdateVoiceLineProfileAssignmentsConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceDefaultProfileAssignmentForbiddenProblem, + zVoiceProfileVersionConflictProblem +]))(); -export type UpdateProjectApiKeyResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectApiKeyResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectApiKeyResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export type BatchUpdateVoiceLineProfileAssignmentsConflictProblemZodInput = z.input; -export type UpdateProjectApiKeyResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type BatchUpdateVoiceLineProfileAssignmentsConflictProblemZodOutput = z.output; -export type UpdateProjectApiKeyResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export const zConfigureVoiceProfileOutboundConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem, + zVoiceOutboundConfiguredProblem +]))(); -export const zUpdateProjectApiKeyResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') -}))(); +export type ConfigureVoiceProfileOutboundConflictProblemZodInput = z.input; -export type UpdateProjectApiKeyResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type ConfigureVoiceProfileOutboundConflictProblemZodOutput = z.output; -export type UpdateProjectApiKeyResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export const zDeleteVoiceProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zVoiceProfileInUseProblem, + zVoiceDefaultProfileDeletionForbiddenProblem, + zVoiceProfileVersionConflictProblem +]))(); -export const zUpdateProjectRequestApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - name: z.string() -}))(); +export type DeleteVoiceProfileConflictProblemZodInput = z.input; -export type UpdateProjectRequestApplicationJsonZodInput = z.input; +export type DeleteVoiceProfileConflictProblemZodOutput = z.output; -export type UpdateProjectRequestApplicationJsonZodOutput = z.output; +export const zDeleteVoiceProfileInboundConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem +]))(); -export const zUpdateProjectResponse200ApplicationJson = /* @__PURE__ */ (() => z.looseObject({ - agentProfile: z.looseObject({ - avatarUrl: z.string(), - firstName: z.string(), - lastName: z.string().nullable() - }), - billingInitialization: openEnum([ - 'pending', - 'retry_required', - 'completed', - 'unknown' - ]).optional(), - createdAt: z.string(), - createdByAccountId: z.string().nullable(), - createdByActorId: z.string().nullable(), - createdByActorKind: openEnum(['account', 'service_identity']).nullable(), - deletedAt: z.string().nullable(), - name: z.string(), - organizationId: z.string(), - projectId: z.string(), - slug: z.string(), - updatedAt: z.string() -}))(); +export type DeleteVoiceProfileInboundConflictProblemZodInput = z.input; -export type UpdateProjectResponse200ApplicationJsonZodInput = z.input; - -export type UpdateProjectResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateProjectResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REQUIRED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Required'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-required') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_INVALID'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Idempotency Key Invalid'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-invalid') - }) -]))(); - -export type UpdateProjectResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateProjectResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Project Not Found'), - type: z.literal('https://photon.codes/docs/problems/project-not-found') -}))(); +export type DeleteVoiceProfileInboundConflictProblemZodOutput = z.output; -export type UpdateProjectResponse404ApplicationProblemPlusJsonZodInput = z.input; +export const zDeleteVoiceProfileOutboundConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zVoiceProfileVersionConflictProblem, + zVoiceOutboundNotConfiguredProblem +]))(); -export type UpdateProjectResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type DeleteVoiceProfileOutboundConflictProblemZodInput = z.input; -export const zUpdateProjectResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PROJECT_DELETED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Project Deleted'), - type: z.literal('https://photon.codes/docs/problems/project-deleted') -}))(); +export type DeleteVoiceProfileOutboundConflictProblemZodOutput = z.output; -export type UpdateProjectResponse410ApplicationProblemPlusJsonZodInput = z.input; +export const zReplaceVoiceProfileInboundConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem +]))(); -export type UpdateProjectResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type ReplaceVoiceProfileInboundConflictProblemZodInput = z.input; -export const zUpdateProjectResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); +export type ReplaceVoiceProfileInboundConflictProblemZodOutput = z.output; -export type UpdateProjectResponse413ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse413ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectResponse422ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') - }), - z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') - }) -]))(); - -export type UpdateProjectResponse422ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse422ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zRotateVoiceProfileOutboundCredentialConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem, + zVoiceOutboundNotConfiguredProblem +]))(); -export type UpdateProjectResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type RotateVoiceProfileOutboundCredentialConflictProblemZodInput = z.input; -export type UpdateProjectResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type RotateVoiceProfileOutboundCredentialConflictProblemZodOutput = z.output; -export const zUpdateProjectResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zUpdateDefaultVoiceProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileDirectionConfiguredProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem +]))(); -export type UpdateProjectResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateProjectResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) -]))(); - -export type UpdateProjectResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateProjectResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundRequestApplicationJson = z.looseObject({ - credentials: z.looseObject({ - password: z.string(), - username: z.string() - }).nullish(), - destinationUri: z.string().optional(), - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type UpdateDefaultVoiceProfileConflictProblemZodInput = z.input; -export type UpdateVoiceProfileInboundRequestApplicationJsonZodInput = z.input; +export type UpdateDefaultVoiceProfileConflictProblemZodOutput = z.output; -export type UpdateVoiceProfileInboundRequestApplicationJsonZodOutput = z.output; +export const zUpdateVoiceProfileConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileDirectionConfiguredProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem +]))(); -export const zUpdateVoiceProfileInboundResponse200ApplicationJson = z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type UpdateVoiceProfileConflictProblemZodInput = z.input; -export type UpdateVoiceProfileInboundResponse200ApplicationJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') -}))(); +export type UpdateVoiceProfileConflictProblemZodOutput = z.output; -export type UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }) -]))(); - -export type UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); +export const zUpdateVoiceProfileInboundConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem +]))(); -export type UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileInboundConflictProblemZodInput = z.input; -export type UpdateVoiceProfileInboundResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileInboundConflictProblemZodOutput = z.output; -export const zUpdateVoiceProfileInboundResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); +export const zUpdateVoiceProfileOutboundAuthenticationConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zVoiceProfileVersionConflictProblem, + zVoiceOutboundOperationPendingProblem, + zVoiceOutboundNotConfiguredProblem +]))(); -export type UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type UpdateVoiceProfileOutboundAuthenticationConflictProblemZodInput = z.input; -export type UpdateVoiceProfileInboundResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type UpdateVoiceProfileOutboundAuthenticationConflictProblemZodOutput = z.output; -export const zUpdateVoiceProfileInboundResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); +export const zWebhookApiVersionRetirement = /* @__PURE__ */ (() => z.looseObject({ + migrationGuide: z.string(), + reason: z.string() +}))(); -export type UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookApiVersionRetirementZodInput = z.input; -export type UpdateVoiceProfileInboundResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookApiVersionRetirementZodOutput = z.output; -export const zUpdateVoiceProfileInboundResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') +export const zDeprecatedWebhookApiVersion = /* @__PURE__ */ (() => z.looseObject({ + retirement: zWebhookApiVersionRetirement, + selectable: z.literal(false), + status: z.literal('deprecated'), + successor: z.string().nullable(), + version: z.string() }))(); -export type UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type DeprecatedWebhookApiVersionZodInput = z.input; -export type UpdateVoiceProfileInboundResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type DeprecatedWebhookApiVersionZodOutput = z.output; -export const zUpdateVoiceProfileInboundResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zSelectableWebhookApiVersion = /* @__PURE__ */ (() => z.looseObject({ + retirement: zWebhookApiVersionRetirement.nullable(), + selectable: z.literal(true), + status: zSelectableWebhookApiVersionStatus, + successor: z.string().nullable(), + version: z.string() }))(); -export type UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse503ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileInboundResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); - -export type UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileInboundResponse504ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationRequestApplicationJson = z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']) - }), - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type SelectableWebhookApiVersionZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonZodInput = z.input; - -export type UpdateVoiceProfileOutboundAuthenticationRequestApplicationJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson = z.looseObject({ - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }), - profileVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type SelectableWebhookApiVersionZodOutput = z.output; -export type UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonZodInput = z.input; - -export type UpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileOutboundAuthenticationResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') +export const zWebhookApiVersion: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSelectableWebhookApiVersion, + zDeprecatedWebhookApiVersion +]))(); + +export type WebhookApiVersionZodInput = z.input; + +export type WebhookApiVersionZodOutput = z.output; + +export const zListWebhookApiVersionsResponse = /* @__PURE__ */ (() => z.looseObject({ + apiVersions: z.array(zWebhookApiVersion), + contractNamespace: z.literal('@photon-hq/contracts'), + packageVersion: z.string() }))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileOutboundAuthenticationResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_NOT_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Not Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-not-configured') - }) -]))(); - -export type UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileOutboundAuthenticationResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export type ListWebhookApiVersionsResponseZodInput = z.input; + +export type ListWebhookApiVersionsResponseZodOutput = z.output; + +export const zWebhookDestinationDeletedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WEBHOOK_DESTINATION_DELETED'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + status: z.literal(410), + title: z.literal('Webhook Destination Deleted'), + type: z.literal('https://photon.codes/docs/problems/webhook-destination-deleted') +}).catchall(zJsonValue))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookDestinationDeletedProblemZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookDestinationDeletedProblemZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), +export const zWebhookDestinationNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WEBHOOK_DESTINATION_NOT_FOUND'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') -}))(); + status: z.literal(404), + title: z.literal('Webhook Destination Not Found'), + type: z.literal('https://photon.codes/docs/problems/webhook-destination-not-found') +}).catchall(zJsonValue))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookDestinationNotFoundProblemZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookDestinationNotFoundProblemZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) -]))(); +export const zWebhookDestinationStatus = /* @__PURE__ */ (() => openEnum(['enabled', 'disabled']))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookDestinationStatusZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookDestinationStatusZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zWebhookEgressAddress = /* @__PURE__ */ (() => z.string())(); -export type UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookEgressAddressZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookEgressAddressZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zListWebhookEgressAddressesResponse = /* @__PURE__ */ (() => z.looseObject({ + ipAddresses: z.array(zWebhookEgressAddress) }))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookEgressAddressesResponseZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookEgressAddressesResponseZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) -]))(); +export const zWebhookEventSchema = /* @__PURE__ */ (() => z.object({}).catchall(zJsonValue))(); -export type UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookEventSchemaZodInput = z.input; -export type UpdateVoiceProfileOutboundAuthenticationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookEventSchemaZodOutput = z.output; -export const zUpdateVoiceProfileRequestApplicationJson = z.looseObject({ - expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']).optional(), - name: z.string().optional(), - protocol: z.literal('sip').optional() -}); +export const zWebhookEventTypeAudience = /* @__PURE__ */ (() => openEnum(['agent', 'infrastructure']))(); -export type UpdateVoiceProfileRequestApplicationJsonZodInput = z.input; - -export type UpdateVoiceProfileRequestApplicationJsonZodOutput = z.output; - -export const zUpdateVoiceProfileResponse200ApplicationJson = z.looseObject({ - configuration: z.looseObject({ - inbound: z.looseObject({ - credentials: z.looseObject({ - username: z.string() - }).nullable(), - destinationUri: z.string() - }).nullable(), - outbound: z.looseObject({ - authentication: z.looseObject({ - algorithm: openEnum(['sha-256', 'md5']), - previousPasswordValidUntil: z.string().nullable(), - username: z.string(), - validFrom: z.string() - }), - connection: z.looseObject({ - endpoints: z.array(z.looseObject({ - host: z.string(), - port: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - transport: openEnum([ - 'udp', - 'tcp', - 'tls' - ]) - })), - realm: z.string() - }) - }).nullable() - }), - createdAt: z.string(), - isDefault: z.boolean(), - lineCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - mediaEncryption: openEnum(['auto', 'srtp']), - name: z.string(), - profileId: z.string(), - projectId: z.string(), - protocol: z.literal('sip'), - updatedAt: z.string(), - version: z.number().refine(Number.isInteger, { message: 'Expected an integer' }) -}); +export type WebhookEventTypeAudienceZodInput = z.input; -export type UpdateVoiceProfileResponse200ApplicationJsonZodInput = z.input; - -export type UpdateVoiceProfileResponse200ApplicationJsonZodOutput = z.output; - -export const zUpdateVoiceProfileResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UpdateVoiceProfileResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VOICE_PROFILE_NOT_FOUND'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Voice Profile Not Found'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-not-found') +export type WebhookEventTypeAudienceZodOutput = z.output; + +export const zWebhookEventType = /* @__PURE__ */ (() => z.looseObject({ + audience: zWebhookEventTypeAudience, + description: z.string(), + schemaProfile: z.literal('reader'), + schemaUrl: z.string(), + type: z.string() }))(); -export type UpdateVoiceProfileResponse404ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileResponse404ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('PROJECT_CLOSING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Project Is Closing'), - type: z.literal('https://photon.codes/docs/problems/project-closing') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_DIRECTION_CONFIGURED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Direction Configured'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-direction-configured') - }), - z.looseObject({ - code: z.literal('VOICE_PROFILE_VERSION_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Profile Version Conflict'), - type: z.literal('https://photon.codes/docs/problems/voice-profile-version-conflict') - }), - z.looseObject({ - code: z.literal('VOICE_OUTBOUND_OPERATION_PENDING'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Voice Outbound Operation Pending'), - type: z.literal('https://photon.codes/docs/problems/voice-outbound-operation-pending') - }) -]))(); - -export type UpdateVoiceProfileResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UpdateVoiceProfileResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUpdateVoiceProfileResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), - detail: z.string().optional(), - instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') +export type WebhookEventTypeZodInput = z.input; + +export type WebhookEventTypeZodOutput = z.output; + +export const zDeprecatedWebhookEventCatalog = /* @__PURE__ */ (() => z.looseObject({ + apiVersion: z.string(), + contractNamespace: z.literal('@photon-hq/contracts'), + events: z.array(zWebhookEventType), + packageVersion: z.string(), + retirement: zWebhookApiVersionRetirement, + selectable: z.literal(false), + status: z.literal('deprecated'), + successor: z.string().nullable() }))(); -export type UpdateVoiceProfileResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type DeprecatedWebhookEventCatalogZodInput = z.input; -export type UpdateVoiceProfileResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type DeprecatedWebhookEventCatalogZodOutput = z.output; -export const zUpdateVoiceProfileResponse429ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('RATE_LIMITED'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(429), - title: z.literal('Too Many Requests'), - type: z.literal('https://photon.codes/docs/problems/rate-limited') +export const zSelectableWebhookEventCatalog = /* @__PURE__ */ (() => z.looseObject({ + apiVersion: z.string(), + contractNamespace: z.literal('@photon-hq/contracts'), + events: z.array(zWebhookEventType), + packageVersion: z.string(), + retirement: zWebhookApiVersionRetirement.nullable(), + selectable: z.literal(true), + status: zSelectableWebhookApiVersionStatus, + successor: z.string().nullable() }))(); -export type UpdateVoiceProfileResponse429ApplicationProblemPlusJsonZodInput = z.input; +export type SelectableWebhookEventCatalogZodInput = z.input; -export type UpdateVoiceProfileResponse429ApplicationProblemPlusJsonZodOutput = z.output; +export type SelectableWebhookEventCatalogZodOutput = z.output; -export const zUpdateVoiceProfileResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zListWebhookEventTypesResponse: z.ZodType = /* @__PURE__ */ (() => z.union([ + zSelectableWebhookEventCatalog, + zDeprecatedWebhookEventCatalog ]))(); -export type UpdateVoiceProfileResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type ListWebhookEventTypesResponseZodInput = z.input; -export type UpdateVoiceProfileResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWebhookEventTypesResponseZodOutput = z.output; -export const zUpdateVoiceProfileResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); +export const zWebhookEventTypeName = /* @__PURE__ */ (() => z.string())(); -export type UpdateVoiceProfileResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookEventTypeNameZodInput = z.input; -export type UpdateVoiceProfileResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookEventTypeNameZodOutput = z.output; -export const zUpdateVoiceProfileResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); +export const zWebhookEventTypeList = /* @__PURE__ */ (() => z.array(zWebhookEventTypeName))(); + +export type WebhookEventTypeListZodInput = z.input; + +export type WebhookEventTypeListZodOutput = z.output; + +export const zWebhookEventWildcard = /* @__PURE__ */ (() => z.literal('*'))(); -export type UpdateVoiceProfileResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookEventWildcardZodInput = z.input; -export type UpdateVoiceProfileResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookEventWildcardZodOutput = z.output; -export const zUpdateVoiceProfileResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }), - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }) +export const zAllWebhookEvents = z.array(z.unknown()).refine(prefixItems([zWebhookEventWildcard]), { message: 'Items do not match their positions' }); + +export type AllWebhookEventsZodInput = z.input; + +export type AllWebhookEventsZodOutput = z.output; + +export const zWebhookEventSelection: z.ZodType = /* @__PURE__ */ (() => z.union([ + zAllWebhookEvents, + zWebhookEventTypeList ]))(); -export type UpdateVoiceProfileResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookEventSelectionZodInput = z.input; + +export type WebhookEventSelectionZodOutput = z.output; + +export const zCreateWebhookDestinationRequest = /* @__PURE__ */ (() => z.looseObject({ + apiVersion: z.string(), + description: z.string().optional(), + enabledEvents: zWebhookEventSelection, + name: z.string(), + status: zWebhookDestinationStatus.optional(), + url: z.string() +}))(); + +export type CreateWebhookDestinationRequestZodInput = z.input; -export type UpdateVoiceProfileResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWebhookDestinationRequestZodOutput = z.output; -export const zUpdateWebhookDestinationRequestApplicationJson = z.looseObject({ +export const zUpdateWebhookDestinationRequest = /* @__PURE__ */ (() => z.looseObject({ description: z.string().nullish(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]).optional(), + enabledEvents: zWebhookEventSelection.optional(), name: z.string().optional(), - status: openEnum(['enabled', 'disabled']).optional(), + status: zWebhookDestinationStatus.optional(), url: z.string().optional() -}); +}))(); -export type UpdateWebhookDestinationRequestApplicationJsonZodInput = z.input; +export type UpdateWebhookDestinationRequestZodInput = z.input; -export type UpdateWebhookDestinationRequestApplicationJsonZodOutput = z.output; +export type UpdateWebhookDestinationRequestZodOutput = z.output; -export const zUpdateWebhookDestinationResponse200ApplicationJson = z.looseObject({ +export const zWebhookDestination = /* @__PURE__ */ (() => z.looseObject({ apiVersion: z.string(), createdAt: z.string(), deletedAt: z.string().nullable(), description: z.string().nullable(), destinationId: z.string(), - enabledEvents: z.union([ - z.array(z.unknown()).refine(prefixItems([z.literal('*')]), { message: 'Items do not match their positions' }), - z.array(z.string()) - ]), + enabledEvents: zWebhookEventSelection, name: z.string(), projectId: z.string(), - status: openEnum(['enabled', 'disabled']), + status: zWebhookDestinationStatus, updatedAt: z.string(), url: z.string() -}); +}))(); -export type UpdateWebhookDestinationResponse200ApplicationJsonZodInput = z.input; +export type WebhookDestinationZodInput = z.input; -export type UpdateWebhookDestinationResponse200ApplicationJsonZodOutput = z.output; +export type WebhookDestinationZodOutput = z.output; -export const zUpdateWebhookDestinationResponse400ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('INVALID_ARGUMENT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Argument'), - type: z.literal('https://photon.codes/docs/problems/invalid-argument') +export const zCreateWebhookDestinationResponse = /* @__PURE__ */ (() => z.looseObject({ + destination: zWebhookDestination, + signingSecret: z.string() }))(); -export type UpdateWebhookDestinationResponse400ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWebhookDestinationResponseZodInput = z.input; -export type UpdateWebhookDestinationResponse400ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWebhookDestinationResponseZodOutput = z.output; -export const zUpdateWebhookDestinationResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); +export const zWebhookDestinationPage = /* @__PURE__ */ (() => z.looseObject({ + destinations: z.array(zWebhookDestination), + nextPageToken: z.string().optional() +}))(); -export type UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonZodInput = z.input; +export type WebhookDestinationPageZodInput = z.input; -export type UpdateWebhookDestinationResponse403ApplicationProblemPlusJsonZodOutput = z.output; +export type WebhookDestinationPageZodOutput = z.output; -export const zUpdateWebhookDestinationResponse404ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_NOT_FOUND'), +export const zWhatsappAccountDisconnectingProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_ACCOUNT_DISCONNECTING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(404), - title: z.literal('Webhook Destination Not Found'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-not-found') -}))(); + status: z.literal(409), + title: z.literal('WhatsApp Business Account Disconnecting'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-account-disconnecting') +}).catchall(zJsonValue))(); -export type UpdateWebhookDestinationResponse404ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappAccountDisconnectingProblemZodInput = z.input; -export type UpdateWebhookDestinationResponse404ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappAccountDisconnectingProblemZodOutput = z.output; -export const zUpdateWebhookDestinationResponse410ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('WEBHOOK_DESTINATION_DELETED'), +export const zWhatsappAccountProvisioningProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_ACCOUNT_PROVISIONING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(410), - title: z.literal('Webhook Destination Deleted'), - type: z.literal('https://photon.codes/docs/problems/webhook-destination-deleted') + status: z.literal(409), + title: z.literal('WhatsApp Business Account Has Provisioning Numbers'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-account-provisioning') +}).catchall(zJsonValue))(); + +export type WhatsappAccountProvisioningProblemZodInput = z.input; + +export type WhatsappAccountProvisioningProblemZodOutput = z.output; + +export const zDisconnectWhatsappBusinessAccountConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zWhatsappAccountDisconnectingProblem, + zWhatsappAccountProvisioningProblem +]))(); + +export type DisconnectWhatsappBusinessAccountConflictProblemZodInput = z.input; + +export type DisconnectWhatsappBusinessAccountConflictProblemZodOutput = z.output; + +export const zWhatsappBusinessAccountAlert = /* @__PURE__ */ (() => z.looseObject({ + description: z.string(), + entityId: z.string(), + entityType: z.string(), + observedAt: z.string(), + severity: z.string(), + status: z.string(), + type: z.string() }))(); -export type UpdateWebhookDestinationResponse410ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappBusinessAccountAlertZodInput = z.input; -export type UpdateWebhookDestinationResponse410ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappBusinessAccountAlertZodOutput = z.output; -export const zUpdateWebhookDestinationResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('IDEMPOTENCY_KEY_REUSED'), +export const zWhatsappDisplayNameUnavailableProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_DISPLAY_NAME_UNAVAILABLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(422), - title: z.literal('Idempotency Key Reused'), - type: z.literal('https://photon.codes/docs/problems/idempotency-key-reused') -}))(); + title: z.literal('WhatsApp Display Name Unavailable'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-display-name-unavailable') +}).catchall(zJsonValue))(); -export type UpdateWebhookDestinationResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappDisplayNameUnavailableProblemZodInput = z.input; -export type UpdateWebhookDestinationResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappDisplayNameUnavailableProblemZodOutput = z.output; -export const zUpdateWebhookDestinationResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zCreateWhatsappVoipSenderUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zWhatsappDisplayNameUnavailableProblem, + zIdempotencyKeyReusedProblem +]))(); + +export type CreateWhatsappVoipSenderUnprocessableEntityProblemZodInput = z.input; + +export type CreateWhatsappVoipSenderUnprocessableEntityProblemZodOutput = z.output; + +export const zWhatsappModeDedicatedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_MODE_DEDICATED'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') + status: z.literal(409), + title: z.literal('WhatsApp Mode Is Dedicated'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-mode-dedicated') +}).catchall(zJsonValue))(); + +export type WhatsappModeDedicatedProblemZodInput = z.input; + +export type WhatsappModeDedicatedProblemZodOutput = z.output; + +export const zCreateWhatsappSharedLineAssignmentConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zWhatsappModeDedicatedProblem, + zSharedLineCapExceededProblem, + zAssignmentExistsProblem +]))(); + +export type CreateWhatsappSharedLineAssignmentConflictProblemZodInput = z.input; + +export type CreateWhatsappSharedLineAssignmentConflictProblemZodOutput = z.output; + +export const zWhatsappOutboundCapacity = /* @__PURE__ */ (() => openEnum([ + '50', + '250', + '1000', + '2000', + '10000', + '100000', + 'UNLIMITED', + 'UNTIERED', + 'UNKNOWN' +]))(); + +export type WhatsappOutboundCapacityZodInput = z.input; + +export type WhatsappOutboundCapacityZodOutput = z.output; + +export const zWhatsappPhoneNumberOwnership = /* @__PURE__ */ (() => openEnum(['photon', 'meta']))(); + +export type WhatsappPhoneNumberOwnershipZodInput = z.input; + +export type WhatsappPhoneNumberOwnershipZodOutput = z.output; + +export const zWhatsappAccountPhoneNumber = /* @__PURE__ */ (() => z.looseObject({ + displayName: z.string().nullable(), + ownership: zWhatsappPhoneNumberOwnership, + phoneNumber: z.string(), + phoneNumberId: z.string() }))(); -export type UpdateWebhookDestinationResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappAccountPhoneNumberZodInput = z.input; -export type UpdateWebhookDestinationResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappAccountPhoneNumberZodOutput = z.output; -export const zUpdateWebhookDestinationResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') +export const zListWhatsappAccountPhoneNumbersResponse = /* @__PURE__ */ (() => z.looseObject({ + phoneNumbers: z.array(zWhatsappAccountPhoneNumber), + wabaId: z.string() }))(); -export type UpdateWebhookDestinationResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type ListWhatsappAccountPhoneNumbersResponseZodInput = z.input; -export type UpdateWebhookDestinationResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type ListWhatsappAccountPhoneNumbersResponseZodOutput = z.output; -export const zUpdateWebhookDestinationResponse504ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') +export const zWhatsappRestrictionStatus = /* @__PURE__ */ (() => openEnum([ + 'FLAGGED', + 'DISABLED', + 'REINSTATED', + 'UNKNOWN' +]))(); + +export type WhatsappRestrictionStatusZodInput = z.input; + +export type WhatsappRestrictionStatusZodOutput = z.output; + +export const zWhatsappBusinessAccountRestriction = /* @__PURE__ */ (() => z.looseObject({ + observedAt: z.string(), + status: zWhatsappRestrictionStatus }))(); -export type UpdateWebhookDestinationResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappBusinessAccountRestrictionZodInput = z.input; -export type UpdateWebhookDestinationResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappBusinessAccountRestrictionZodOutput = z.output; -export const zUploadAttachmentRequestMultipartRelated = /* @__PURE__ */ (() => z.instanceof(Blob))(); +export const zWhatsappReviewStatus = /* @__PURE__ */ (() => openEnum([ + 'PENDING', + 'APPROVED', + 'REJECTED', + 'UNKNOWN' +]))(); -export type UploadAttachmentRequestMultipartRelatedZodInput = z.input; +export type WhatsappReviewStatusZodInput = z.input; -export type UploadAttachmentRequestMultipartRelatedZodOutput = z.output; +export type WhatsappReviewStatusZodOutput = z.output; -export const zUploadAttachmentResponse200ApplicationJson = z.looseObject({ - contentType: z.string(), - createdAt: z.string(), - filename: z.string().optional(), - id: z.string(), - metadata: z.looseObject({}).optional(), - projectId: z.string(), - sizeBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() +export const zWhatsappBusinessAccount = z.looseObject({ + accountName: z.string().nullable(), + alerts: z.array(zWhatsappBusinessAccountAlert), + businessId: z.string(), + businessName: z.string().nullable(), + connectedAt: z.string(), + maxPhoneNumbersPerBusiness: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), + outboundCapacity: zWhatsappOutboundCapacity, + restriction: zWhatsappBusinessAccountRestriction.nullable(), + reviewStatus: zWhatsappReviewStatus, + senderCount: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), + subscribedAt: z.string().optional(), + wabaId: z.string() }); -export type UploadAttachmentResponse200ApplicationJsonZodInput = z.input; +export type WhatsappBusinessAccountZodInput = z.input; -export type UploadAttachmentResponse200ApplicationJsonZodOutput = z.output; +export type WhatsappBusinessAccountZodOutput = z.output; -export const zUploadAttachmentResponse201ApplicationJson = z.looseObject({ - contentType: z.string(), - createdAt: z.string(), - filename: z.string().optional(), - id: z.string(), - metadata: z.looseObject({}).optional(), - projectId: z.string(), - sizeBytes: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - updatedAt: z.string() -}); +export const zWhatsappSenderConnectedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_SENDER_CONNECTED'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(409), + title: z.literal('WhatsApp Sender Connected'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-connected') +}).catchall(zJsonValue))(); -export type UploadAttachmentResponse201ApplicationJsonZodInput = z.input; - -export type UploadAttachmentResponse201ApplicationJsonZodOutput = z.output; - -export const zUploadAttachmentResponse400ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('HTTP_ERROR'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Request Failed'), - type: z.literal('https://photon.codes/docs/problems/http-error') - }), - z.looseObject({ - code: z.literal('INVALID_ATTACHMENT_REQUEST'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(400), - title: z.literal('Invalid Attachment Request'), - type: z.literal('https://photon.codes/docs/problems/invalid-attachment-request') - }) -]))(); - -export type UploadAttachmentResponse400ApplicationProblemPlusJsonZodInput = z.input; - -export type UploadAttachmentResponse400ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUploadAttachmentResponse403ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('FORBIDDEN'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Forbidden'), - type: z.literal('https://photon.codes/docs/problems/forbidden') - }), - zAuthorization_Problem_INSUFFICIENT_SCOPE_403, - z.looseObject({ - code: z.literal('RESOURCE_MISMATCH'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(403), - title: z.literal('Resource Mismatch'), - type: z.literal('https://photon.codes/docs/problems/resource-mismatch') - }) -]))(); - -export type UploadAttachmentResponse403ApplicationProblemPlusJsonZodInput = z.input; - -export type UploadAttachmentResponse403ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUploadAttachmentResponse409ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('ATTACHMENT_CONFLICT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Attachment Conflict'), - type: z.literal('https://photon.codes/docs/problems/attachment-conflict') - }), - z.looseObject({ - code: z.literal('ATTACHMENT_UPLOAD_NOT_READY'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(409), - title: z.literal('Attachment Upload Not Ready'), - type: z.literal('https://photon.codes/docs/problems/attachment-upload-not-ready') - }) -]))(); - -export type UploadAttachmentResponse409ApplicationProblemPlusJsonZodInput = z.input; - -export type UploadAttachmentResponse409ApplicationProblemPlusJsonZodOutput = z.output; - -export const zUploadAttachmentResponse413ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('PAYLOAD_TOO_LARGE'), +export type WhatsappSenderConnectedProblemZodInput = z.input; + +export type WhatsappSenderConnectedProblemZodOutput = z.output; + +export const zWhatsappSenderProvisioningProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_SENDER_PROVISIONING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(413), - title: z.literal('Payload Too Large'), - type: z.literal('https://photon.codes/docs/problems/payload-too-large') -}))(); + status: z.literal(409), + title: z.literal('WhatsApp Sender Provisioning'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-sender-provisioning') +}).catchall(zJsonValue))(); -export type UploadAttachmentResponse413ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappSenderProvisioningProblemZodInput = z.input; -export type UploadAttachmentResponse413ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappSenderProvisioningProblemZodOutput = z.output; -export const zUploadAttachmentResponse422ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('VALIDATION_FAILED'), +export const zReleaseResourceConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zWhatsappSenderConnectedProblem, + zWhatsappSenderProvisioningProblem +]))(); + +export type ReleaseResourceConflictProblemZodInput = z.input; + +export type ReleaseResourceConflictProblemZodOutput = z.output; + +export const zWhatsappVerificationCodeNotFoundProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_VERIFICATION_CODE_NOT_FOUND'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(404), + title: z.literal('WhatsApp Verification Code Not Found'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-verification-code-not-found') +}).catchall(zJsonValue))(); + +export type WhatsappVerificationCodeNotFoundProblemZodInput = z.input; + +export type WhatsappVerificationCodeNotFoundProblemZodOutput = z.output; + +export const zGetWhatsappBusinessVerificationCodeNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zResourceNotFoundProblem, + zWhatsappVerificationCodeNotFoundProblem +]))(); + +export type GetWhatsappBusinessVerificationCodeNotFoundProblemZodInput = z.input; + +export type GetWhatsappBusinessVerificationCodeNotFoundProblemZodOutput = z.output; + +export const zWhatsappVerificationWindowExpiredProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_VERIFICATION_WINDOW_EXPIRED'), detail: z.string().optional(), instance: z.string().optional(), - issues: z.array(z.looseObject({ - code: z.string(), - location: openEnum([ - 'body', - 'cookie', - 'form', - 'header', - 'json', - 'param', - 'query' - ]), - message: z.string(), - path: z.string() - })), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), status: z.literal(422), - title: z.literal('Request Validation Failed'), - type: z.literal('https://photon.codes/docs/problems/validation-failed') -}))(); + title: z.literal('WhatsApp Verification Window Expired'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-verification-window-expired') +}).catchall(zJsonValue))(); -export type UploadAttachmentResponse422ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappVerificationWindowExpiredProblemZodInput = z.input; -export type UploadAttachmentResponse422ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappVerificationWindowExpiredProblemZodOutput = z.output; -export const zUploadAttachmentResponse500ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - zPhotonProblem_INTERNAL_ERROR_500, - z.looseObject({ - code: z.literal('INVALID_AUTH_CONTEXT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(500), - title: z.literal('Invalid Authentication Context'), - type: z.literal('https://photon.codes/docs/problems/invalid-auth-context') - }) +export const zGetWhatsappBusinessVerificationCodeUnprocessableEntityProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zValidationFailedProblem, + zWhatsappVerificationWindowExpiredProblem ]))(); -export type UploadAttachmentResponse500ApplicationProblemPlusJsonZodInput = z.input; +export type GetWhatsappBusinessVerificationCodeUnprocessableEntityProblemZodInput = z.input; -export type UploadAttachmentResponse500ApplicationProblemPlusJsonZodOutput = z.output; +export type GetWhatsappBusinessVerificationCodeUnprocessableEntityProblemZodOutput = z.output; -export const zUploadAttachmentResponse502ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_FAILURE'), +export const zWhatsappVoipSourceNotEligibleProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_VOIP_SOURCE_NOT_ELIGIBLE'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(502), - title: z.literal('Upstream Service Failure'), - type: z.literal('https://photon.codes/docs/problems/upstream-failure') -}))(); + status: z.literal(404), + title: z.literal('WhatsApp VoIP Source Not Eligible'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-voip-source-not-eligible') +}).catchall(zJsonValue))(); -export type UploadAttachmentResponse502ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappVoipSourceNotEligibleProblemZodInput = z.input; -export type UploadAttachmentResponse502ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappVoipSourceNotEligibleProblemZodOutput = z.output; -export const zUploadAttachmentResponse503ApplicationProblemPlusJson = /* @__PURE__ */ (() => z.looseObject({ - code: z.literal('UPSTREAM_UNAVAILABLE'), +export const zWhatsappVoipSourceReleasingProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_VOIP_SOURCE_RELEASING'), detail: z.string().optional(), instance: z.string().optional(), - remediation: z.unknown().optional(), + remediation: absent().optional(), requestId: z.string().optional(), - status: z.literal(503), - title: z.literal('Upstream Service Unavailable'), - type: z.literal('https://photon.codes/docs/problems/upstream-unavailable') -}))(); + status: z.literal(409), + title: z.literal('WhatsApp VoIP Source Releasing'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-voip-source-releasing') +}).catchall(zJsonValue))(); -export type UploadAttachmentResponse503ApplicationProblemPlusJsonZodInput = z.input; +export type WhatsappVoipSourceReleasingProblemZodInput = z.input; -export type UploadAttachmentResponse503ApplicationProblemPlusJsonZodOutput = z.output; +export type WhatsappVoipSourceReleasingProblemZodOutput = z.output; -export const zUploadAttachmentResponse504ApplicationProblemPlusJson: z.ZodType = /* @__PURE__ */ (() => z.union([ - z.looseObject({ - code: z.literal('UPSTREAM_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Upstream Service Timeout'), - type: z.literal('https://photon.codes/docs/problems/upstream-timeout') - }), - z.looseObject({ - code: z.literal('REQUEST_TIMEOUT'), - detail: z.string().optional(), - instance: z.string().optional(), - remediation: z.unknown().optional(), - requestId: z.string().optional(), - status: z.literal(504), - title: z.literal('Request Timeout'), - type: z.literal('https://photon.codes/docs/problems/request-timeout') - }) +export const zCreateWhatsappVoipSenderConflictProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zProjectClosingProblem, + zWhatsappAccountDisconnectingProblem, + zWhatsappAccountProvisioningProblem, + zWhatsappSenderConnectedProblem, + zWhatsappSenderProvisioningProblem, + zWhatsappVoipSourceReleasingProblem ]))(); -export type UploadAttachmentResponse504ApplicationProblemPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderConflictProblemZodInput = z.input; -export type UploadAttachmentResponse504ApplicationProblemPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderConflictProblemZodOutput = z.output; -export const z__schema0 = /* @__PURE__ */ (() => z.union([ - z.string(), - z.number(), - z.boolean(), - z.array(z.lazy((): any => z__schema0)), - z.object({}).catchall(z.lazy((): any => z__schema0)) -]).nullable())(); +export const zWhatsappWabaNotConnectedProblem = /* @__PURE__ */ (() => z.object({ + code: z.literal('WHATSAPP_WABA_NOT_CONNECTED'), + detail: z.string().optional(), + instance: z.string().optional(), + remediation: absent().optional(), + requestId: z.string().optional(), + status: z.literal(404), + title: z.literal('WhatsApp Business Account Not Connected'), + type: z.literal('https://photon.codes/docs/problems/whatsapp-waba-not-connected') +}).catchall(zJsonValue))(); -export type __schema0ZodInput = z.input; +export type WhatsappWabaNotConnectedProblemZodInput = z.input; -export type __schema0ZodOutput = z.output; +export type WhatsappWabaNotConnectedProblemZodOutput = z.output; -export const zGetWebhookEventSchemaResponse200ApplicationSchemaPlusJson = /* @__PURE__ */ (() => z.object({}).catchall(z__schema0))(); +export const zCreateWhatsappVoipSenderNotFoundProblem: z.ZodType = /* @__PURE__ */ (() => z.union([ + zWhatsappWabaNotConnectedProblem, + zWhatsappVoipSourceNotEligibleProblem +]))(); -export type GetWebhookEventSchemaResponse200ApplicationSchemaPlusJsonZodInput = z.input; +export type CreateWhatsappVoipSenderNotFoundProblemZodInput = z.input; -export type GetWebhookEventSchemaResponse200ApplicationSchemaPlusJsonZodOutput = z.output; +export type CreateWhatsappVoipSenderNotFoundProblemZodOutput = z.output; /** * The deleted account tombstone. */ -export const zDeleteAccountResult = zDeleteAccountResponse200ApplicationJson; +export const zDeleteAccountResult = zAccount; export type deleteAccountResultZodOutput = z.output; /** * The authenticated account. */ -export const zGetAccountResult = zGetAccountResponse200ApplicationJson; +export const zGetAccountResult = zAccount; export type getAccountResultZodOutput = z.output; -export const zUpdateAccountBody = zUpdateAccountRequestApplicationJson; +export const zUpdateAccountBody = zUpdateAccountRequest; export const zUpdateAccountHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -25654,7 +9007,7 @@ export const zUpdateAccountHeaders = /* @__PURE__ */ (() => z.looseObject({ /** * The updated account. */ -export const zUpdateAccountResult = zUpdateAccountResponse200ApplicationJson; +export const zUpdateAccountResult = zAccount; export type updateAccountResultZodOutput = z.output; @@ -25662,17 +9015,13 @@ export const zListAuthorizedApplicationsQuery = z.looseObject({ after: z.string().optional(), before: z.string().optional(), limit: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), - order: openEnum([ - 'normal', - 'desc', - 'asc' - ]).optional() + order: zListAuthorizedApplicationsOrder.optional() }); /** * OAuth applications authorized by the authenticated user. */ -export const zListAuthorizedApplicationsResult = zListAuthorizedApplicationsResponse200ApplicationJson; +export const zListAuthorizedApplicationsResult = zListAuthorizedApplicationsResponse; export type listAuthorizedApplicationsResultZodOutput = z.output; @@ -25687,21 +9036,21 @@ export const zRevokeAuthorizedApplicationResult = /* @__PURE__ */ (() => z.void( export type revokeAuthorizedApplicationResultZodOutput = z.output; -export const zConfirmAccountPhoneVerificationBody = zConfirmAccountPhoneVerificationRequestApplicationJson; +export const zConfirmAccountPhoneVerificationBody = zConfirmAccountPhoneVerificationRequest; /** * The Account with its verified phone number. */ -export const zConfirmAccountPhoneVerificationResult = zConfirmAccountPhoneVerificationResponse200ApplicationJson; +export const zConfirmAccountPhoneVerificationResult = zAccount; export type confirmAccountPhoneVerificationResultZodOutput = z.output; -export const zStartAccountPhoneVerificationBody = zStartAccountPhoneVerificationRequestApplicationJson; +export const zStartAccountPhoneVerificationBody = zStartAccountPhoneVerificationRequest; /** * A pending verification. The Account is unchanged. */ -export const zStartAccountPhoneVerificationResult = zStartAccountPhoneVerificationResponse201ApplicationJson; +export const zStartAccountPhoneVerificationResult = zStartAccountPhoneVerificationResponse; export type startAccountPhoneVerificationResultZodOutput = z.output; @@ -25712,11 +9061,11 @@ export const zResetAccountProfilePictureHeaders = /* @__PURE__ */ (() => z.loose /** * The Account reset to its default profile picture. */ -export const zResetAccountProfilePictureResult = zResetAccountProfilePictureResponse200ApplicationJson; +export const zResetAccountProfilePictureResult = zAccount; export type resetAccountProfilePictureResultZodOutput = z.output; -export const zCommitAccountProfilePictureBody = zCommitAccountProfilePictureRequestApplicationJson; +export const zCommitAccountProfilePictureBody = zCommitAccountProfilePictureRequest; export const zCommitAccountProfilePictureHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -25725,27 +9074,27 @@ export const zCommitAccountProfilePictureHeaders = /* @__PURE__ */ (() => z.loos /** * The Account with its committed profile picture. */ -export const zCommitAccountProfilePictureResult = zCommitAccountProfilePictureResponse200ApplicationJson; +export const zCommitAccountProfilePictureResult = zAccount; export type commitAccountProfilePictureResultZodOutput = z.output; -export const zCreateAccountProfilePictureUploadBody = zCreateAccountProfilePictureUploadRequestApplicationJson; +export const zCreateAccountProfilePictureUploadBody = zProfilePictureUploadRequest; /** * A short-lived, Account-bound presigned S3 POST. */ -export const zCreateAccountProfilePictureUploadResult = zCreateAccountProfilePictureUploadResponse201ApplicationJson; +export const zCreateAccountProfilePictureUploadResult = zProfilePictureUpload; export type createAccountProfilePictureUploadResultZodOutput = z.output; /** - * Active Account Service Key metadata, newest first. + * Unrevoked Account Service Key metadata, including expired keys, newest first. */ -export const zListAccountServiceKeysResult = zListAccountServiceKeysResponse200ApplicationJson; +export const zListAccountServiceKeysResult = zListAccountServiceKeysResponse; export type listAccountServiceKeysResultZodOutput = z.output; -export const zCreateAccountServiceKeyBody = zCreateAccountServiceKeyRequestApplicationJson; +export const zCreateAccountServiceKeyBody = zCreateAccountServiceKeyRequest; export const zCreateAccountServiceKeyHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -25754,7 +9103,7 @@ export const zCreateAccountServiceKeyHeaders = /* @__PURE__ */ (() => z.looseObj /** * The created Account Service Key and its one-time credential. */ -export const zCreateAccountServiceKeyResult = zCreateAccountServiceKeyResponse201ApplicationJson; +export const zCreateAccountServiceKeyResult = zCreateAccountServiceKeyResponse; export type createAccountServiceKeyResultZodOutput = z.output; @@ -25769,42 +9118,42 @@ export const zRevokeAccountServiceKeyPath = /* @__PURE__ */ (() => z.looseObject /** * The revoked key metadata. Repeated revocation is stable. */ -export const zRevokeAccountServiceKeyResult = zRevokeAccountServiceKeyResponse200ApplicationJson; +export const zRevokeAccountServiceKeyResult = zRevokeAccountServiceKeyResponse; export type revokeAccountServiceKeyResultZodOutput = z.output; /** - * Verification details for the RFC 8628 device flow. The optional request body (form-encoded or JSON) is ignored; the WorkOS client is fixed server-side. + * Verification details for the RFC 8628 device flow. The optional JSON or form body is ignored; the authorization client is selected by the server. */ -export const zDeviceAuthorizeResult = zDeviceAuthorizeResponse200ApplicationJson; +export const zDeviceAuthorizeResult = zDeviceAuthorizeResponse; export type deviceAuthorizeResultZodOutput = z.output; /** * Exchange a device code or refresh token. Supply the matching grant_type and credential using JSON or form encoding. */ -export const zDeviceTokenBody = zDeviceTokenRequestApplicationJson; +export const zDeviceTokenBody = zDeviceTokenRequest; /** * Token pair (snake_case OAuth wire format). Body (form-encoded or JSON): grant_type=urn:ietf:params:oauth:grant-type:device_code with device_code, or grant_type=refresh_token with refresh_token. Refresh tokens rotate on every grant — always store the new one. */ -export const zDeviceTokenResult = zDeviceTokenResponse200ApplicationJson; +export const zDeviceTokenResult = zDeviceTokenResponse; export type deviceTokenResultZodOutput = z.output; -export const zStartEnterpriseLoginBody = zStartEnterpriseLoginRequestApplicationJson; +export const zStartEnterpriseLoginBody = zStartEnterpriseLoginRequest; /** * Company SSO URL when the target has a ready connection, otherwise the ordinary Account login URL. The response never says which, and access is decided only after authentication. */ -export const zStartEnterpriseLoginResult = zStartEnterpriseLoginResponse200ApplicationJson; +export const zStartEnterpriseLoginResult = zStartEnterpriseLoginResponse; export type startEnterpriseLoginResultZodOutput = z.output; /** * The configurable OAuth business permissions. */ -export const zListOauthScopesResult = zListOauthScopesResponse200ApplicationJson; +export const zListOauthScopesResult = zListOauthScopesResponse; export type listOauthScopesResultZodOutput = z.output; @@ -25815,7 +9164,7 @@ export const zGetOrganizationConnectionStatusPath = /* @__PURE__ */ (() => z.loo /** * Organization mapping and current member synchronization. */ -export const zGetOrganizationConnectionStatusResult = zGetOrganizationConnectionStatusResponse200ApplicationJson; +export const zGetOrganizationConnectionStatusResult = zOrganizationConnectionStatus; export type getOrganizationConnectionStatusResultZodOutput = z.output; @@ -25826,7 +9175,7 @@ export const zRetryOrganizationConnectionSyncPath = /* @__PURE__ */ (() => z.loo /** * Current synchronization state after requesting retry. */ -export const zRetryOrganizationConnectionSyncResult = zRetryOrganizationConnectionSyncResponse200ApplicationJson; +export const zRetryOrganizationConnectionSyncResult = zOrganizationConnectionStatus; export type retryOrganizationConnectionSyncResultZodOutput = z.output; @@ -25837,11 +9186,11 @@ export const zGetOrganizationSsoConfigurationPath = /* @__PURE__ */ (() => z.loo /** * Current connection and independent local policy state. */ -export const zGetOrganizationSsoConfigurationResult = zGetOrganizationSsoConfigurationResponse200ApplicationJson; +export const zGetOrganizationSsoConfigurationResult = zOrganizationSsoConfiguration; export type getOrganizationSsoConfigurationResultZodOutput = z.output; -export const zUpdateOrganizationSsoPolicyBody = zUpdateOrganizationSsoPolicyRequestApplicationJson; +export const zUpdateOrganizationSsoPolicyBody = zUpdateOrganizationSsoPolicyRequest; export const zUpdateOrganizationSsoPolicyPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25850,11 +9199,11 @@ export const zUpdateOrganizationSsoPolicyPath = /* @__PURE__ */ (() => z.looseOb /** * Current connection and independent local policy state. */ -export const zUpdateOrganizationSsoPolicyResult = zUpdateOrganizationSsoPolicyResponse200ApplicationJson; +export const zUpdateOrganizationSsoPolicyResult = zOrganizationSsoConfiguration; export type updateOrganizationSsoPolicyResultZodOutput = z.output; -export const zBeginOrganizationSsoAdmissionBody = zBeginOrganizationSsoAdmissionRequestApplicationJson; +export const zBeginOrganizationSsoAdmissionBody = zOrganizationAuthenticationRequest; export const zBeginOrganizationSsoAdmissionPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25863,11 +9212,11 @@ export const zBeginOrganizationSsoAdmissionPath = /* @__PURE__ */ (() => z.loose /** * Targeted SSO authorization URL. */ -export const zBeginOrganizationSsoAdmissionResult = zBeginOrganizationSsoAdmissionResponse200ApplicationJson; +export const zBeginOrganizationSsoAdmissionResult = zOrganizationAuthenticationRedirect; export type beginOrganizationSsoAdmissionResultZodOutput = z.output; -export const zBeginOrganizationAuthenticationBody = zBeginOrganizationAuthenticationRequestApplicationJson; +export const zBeginOrganizationAuthenticationBody = zOrganizationAuthenticationRequest; export const zBeginOrganizationAuthenticationPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25876,11 +9225,11 @@ export const zBeginOrganizationAuthenticationPath = /* @__PURE__ */ (() => z.loo /** * Targeted SSO authorization URL. */ -export const zBeginOrganizationAuthenticationResult = zBeginOrganizationAuthenticationResponse200ApplicationJson; +export const zBeginOrganizationAuthenticationResult = zOrganizationAuthenticationRedirect; export type beginOrganizationAuthenticationResultZodOutput = z.output; -export const zBeginOrganizationClosureAuthenticationBody = zBeginOrganizationClosureAuthenticationRequestApplicationJson; +export const zBeginOrganizationClosureAuthenticationBody = zOrganizationAuthenticationRequest; export const zBeginOrganizationClosureAuthenticationPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25889,11 +9238,28 @@ export const zBeginOrganizationClosureAuthenticationPath = /* @__PURE__ */ (() = /** * Targeted SSO authorization URL. */ -export const zBeginOrganizationClosureAuthenticationResult = zBeginOrganizationClosureAuthenticationResponse200ApplicationJson; +export const zBeginOrganizationClosureAuthenticationResult = zOrganizationAuthenticationRedirect; export type beginOrganizationClosureAuthenticationResultZodOutput = z.output; -export const zBeginInvitationSsoBody = zBeginInvitationSsoRequestApplicationJson; +export const zDisableOrganizationSsoBody = zDisableOrganizationSsoRequest; + +export const zDisableOrganizationSsoHeaders = /* @__PURE__ */ (() => z.looseObject({ + 'Idempotency-Key': z.string() +}))(); + +export const zDisableOrganizationSsoPath = /* @__PURE__ */ (() => z.looseObject({ + orgId: z.string() +}))(); + +/** + * Current connection and independent local policy state. + */ +export const zDisableOrganizationSsoResult = zOrganizationSsoConfiguration; + +export type disableOrganizationSsoResultZodOutput = z.output; + +export const zBeginInvitationSsoBody = zBeginInvitationSsoRequest; export const zBeginInvitationSsoPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25902,11 +9268,11 @@ export const zBeginInvitationSsoPath = /* @__PURE__ */ (() => z.looseObject({ /** * Invitation-bound SSO authorization URL. */ -export const zBeginInvitationSsoResult = zBeginInvitationSsoResponse200ApplicationJson; +export const zBeginInvitationSsoResult = zOrganizationAuthenticationRedirect; export type beginInvitationSsoResultZodOutput = z.output; -export const zCreateOrganizationSsoPortalLinkBody = zCreateOrganizationSsoPortalLinkRequestApplicationJson; +export const zCreateOrganizationSsoPortalLinkBody = zCreateOrganizationSsoPortalLinkRequest; export const zCreateOrganizationSsoPortalLinkPath = /* @__PURE__ */ (() => z.looseObject({ orgId: z.string() @@ -25915,7 +9281,7 @@ export const zCreateOrganizationSsoPortalLinkPath = /* @__PURE__ */ (() => z.loo /** * Short-lived provider setup link. */ -export const zCreateOrganizationSsoPortalLinkResult = zCreateOrganizationSsoPortalLinkResponse200ApplicationJson; +export const zCreateOrganizationSsoPortalLinkResult = zCreateOrganizationSsoPortalLinkResponse; export type createOrganizationSsoPortalLinkResultZodOutput = z.output; @@ -25926,25 +9292,25 @@ export const zRefreshOrganizationSsoConnectionPath = /* @__PURE__ */ (() => z.lo /** * Current connection and independent local policy state. */ -export const zRefreshOrganizationSsoConnectionResult = zRefreshOrganizationSsoConnectionResponse200ApplicationJson; +export const zRefreshOrganizationSsoConnectionResult = zOrganizationSsoConfiguration; export type refreshOrganizationSsoConnectionResultZodOutput = z.output; -export const zCreateAppInstallationRequestBody = zCreateAppInstallationRequestRequestApplicationJson; +export const zCreateAppInstallationRequestBody = zCreateAppInstallationRequestRequest; /** * Installation request metadata. No customer credential or access is issued. */ -export const zCreateAppInstallationRequestResult = zCreateAppInstallationRequestResponse201ApplicationJson; +export const zCreateAppInstallationRequestResult = zCreateAppInstallationRequestResponse; export type createAppInstallationRequestResultZodOutput = z.output; -export const zRedeemAppInstallationDeliveryBody = zRedeemAppInstallationDeliveryRequestApplicationJson; +export const zRedeemAppInstallationDeliveryBody = zRedeemAppInstallationDeliveryRequest; /** * First successful delivery or metadata-only operation status. */ -export const zRedeemAppInstallationDeliveryResult = zRedeemAppInstallationDeliveryResponse200ApplicationJson; +export const zRedeemAppInstallationDeliveryResult = zRedeemAppInstallationDeliveryResponse; export type redeemAppInstallationDeliveryResultZodOutput = z.output; @@ -25955,7 +9321,7 @@ export const zGetOrganizationBillingOverviewPath = /* @__PURE__ */ (() => z.loos /** * The organization-owned plan and its resolved entitlements. */ -export const zGetOrganizationBillingOverviewResult = zGetOrganizationBillingOverviewResponse200ApplicationJson; +export const zGetOrganizationBillingOverviewResult = zGetOrganizationBillingOverviewResponse; export type getOrganizationBillingOverviewResultZodOutput = z.output; @@ -25970,7 +9336,7 @@ export const zCreateOrganizationPaymentMethodCheckoutPath = /* @__PURE__ */ (() /** * Hosted card-capture page for the organization. */ -export const zCreateOrganizationPaymentMethodCheckoutResult = zCreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson; +export const zCreateOrganizationPaymentMethodCheckoutResult = zCreateOrganizationPaymentMethodCheckoutResponse; export type createOrganizationPaymentMethodCheckoutResultZodOutput = z.output; @@ -25979,9 +9345,9 @@ export const zListInvoicesPath = /* @__PURE__ */ (() => z.looseObject({ }))(); /** - * The organization's invoices, newest first. + * A single page of the organization's invoices, excluding invoices with a zero total, in no guaranteed order. */ -export const zListInvoicesResult = zListInvoicesResponse200ApplicationJson; +export const zListInvoicesResult = zListInvoicesResponse; export type listInvoicesResultZodOutput = z.output; @@ -25992,11 +9358,11 @@ export const zGetOrganizationPaymentMethodPath = /* @__PURE__ */ (() => z.looseO /** * Whether the organization has a captured card and its metadata. */ -export const zGetOrganizationPaymentMethodResult = zGetOrganizationPaymentMethodResponse200ApplicationJson; +export const zGetOrganizationPaymentMethodResult = zGetOrganizationPaymentMethodResponse; export type getOrganizationPaymentMethodResultZodOutput = z.output; -export const zCancelSubscriptionBody = zCancelSubscriptionRequestApplicationJson; +export const zCancelSubscriptionBody = zCancelSubscriptionRequest; export const zCancelSubscriptionHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string().optional() @@ -26008,13 +9374,13 @@ export const zCancelSubscriptionPath = /* @__PURE__ */ (() => z.looseObject({ }))(); /** - * The category remains active through cancelsAt, then stops renewing. + * The category remains active through cancelsAt, then stops renewing. cancellationScheduled is false and cancelsAt is null when the category had no active subscription. */ -export const zCancelSubscriptionResult = zCancelSubscriptionResponse200ApplicationJson; +export const zCancelSubscriptionResult = zCancelSubscriptionResponse; export type cancelSubscriptionResultZodOutput = z.output; -export const zChangePlanBody = zChangePlanRequestApplicationJson; +export const zChangePlanBody = zChangePlanRequest; export const zChangePlanHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26026,13 +9392,13 @@ export const zChangePlanPath = /* @__PURE__ */ (() => z.looseObject({ }))(); export const zChangePlanResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zChangePlanResponse200ApplicationJson, - zChangePlanResponse202ApplicationJson + zTerminalBillingOperation, + zPendingBillingOperation ]))(); export type changePlanResultZodOutput = z.output; -export const zResumeSubscriptionBody = zResumeSubscriptionRequestApplicationJson; +export const zResumeSubscriptionBody = zResumeSubscriptionRequest; export const zResumeSubscriptionHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string().optional() @@ -26046,7 +9412,7 @@ export const zResumeSubscriptionPath = /* @__PURE__ */ (() => z.looseObject({ /** * Removes a scheduled cancellation so the category renews normally. */ -export const zResumeSubscriptionResult = zResumeSubscriptionResponse200ApplicationJson; +export const zResumeSubscriptionResult = zResumeSubscriptionResponse; export type resumeSubscriptionResultZodOutput = z.output; @@ -26059,9 +9425,9 @@ export const zCreateOrganizationSetupIntentPath = /* @__PURE__ */ (() => z.loose }))(); /** - * Stripe Elements configuration for capturing the organization's card. + * Payment-provider client configuration (client secret and publishable key) for capturing the organization's card. */ -export const zCreateOrganizationSetupIntentResult = zCreateOrganizationSetupIntentResponse200ApplicationJson; +export const zCreateOrganizationSetupIntentResult = zCreateOrganizationSetupIntentResponse; export type createOrganizationSetupIntentResultZodOutput = z.output; @@ -26080,11 +9446,11 @@ export const zListProjectsQuery = z.looseObject({ /** * One page of active projects in the organization. */ -export const zListProjectsResult = zListProjectsResponse200ApplicationJson; +export const zListProjectsResult = zProjectPage; export type listProjectsResultZodOutput = z.output; -export const zCreateProjectBody = zCreateProjectRequestApplicationJson; +export const zCreateProjectBody = zCreateProjectRequest; export const zCreateProjectHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26097,7 +9463,7 @@ export const zCreateProjectPath = /* @__PURE__ */ (() => z.looseObject({ /** * The created project. */ -export const zCreateProjectResult = zCreateProjectResponse201ApplicationJson; +export const zCreateProjectResult = zProject; export type createProjectResultZodOutput = z.output; @@ -26112,7 +9478,7 @@ export const zGetProjectClosureStatusQuery = /* @__PURE__ */ (() => z.looseObjec /** * Current cleanup and settlement evidence. Project deletion alone does not establish readiness. */ -export const zGetProjectClosureStatusResult = zGetProjectClosureStatusResponse200ApplicationJson; +export const zGetProjectClosureStatusResult = zGetProjectClosureStatusResponse; export type getProjectClosureStatusResultZodOutput = z.output; @@ -26129,7 +9495,7 @@ export const zCountProjectsQuery = /* @__PURE__ */ (() => z.looseObject({ /** * The number of matching projects. */ -export const zCountProjectsResult = zCountProjectsResponse200ApplicationJson; +export const zCountProjectsResult = zProjectCount; export type countProjectsResultZodOutput = z.output; @@ -26144,7 +9510,7 @@ export const zCheckProjectSlugAvailabilityQuery = /* @__PURE__ */ (() => z.loose /** * Whether the slug can be allocated, and why not. */ -export const zCheckProjectSlugAvailabilityResult = zCheckProjectSlugAvailabilityResponse200ApplicationJson; +export const zCheckProjectSlugAvailabilityResult = zCheckProjectSlugAvailabilityResponse; export type checkProjectSlugAvailabilityResultZodOutput = z.output; @@ -26152,28 +9518,28 @@ export const zListAttachmentsPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() }))(); -export const zListAttachmentsQuery = /* @__PURE__ */ (() => z.looseObject({ +export const zListAttachmentsQuery = z.looseObject({ createdBefore: z.string().optional(), createdSince: z.string().optional(), - order: openEnum(['asc', 'desc']).optional(), - orderBy: openEnum(['created_at', 'updated_at']).optional(), - pageSize: z.string().optional(), + order: zSortOrder.optional(), + orderBy: zTimestampOrderBy.optional(), + pageSize: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), pageToken: z.string().optional(), updatedBefore: z.string().optional(), updatedSince: z.string().optional() -}))(); +}); /** * A page of Project Attachments in the requested order. */ -export const zListAttachmentsResult = zListAttachmentsResponse200ApplicationJson; +export const zListAttachmentsResult = zAttachmentPage; export type listAttachmentsResultZodOutput = z.output; /** * Exactly two parts: JSON with contentType, sizeBytes, and optional filename and metadata, followed by the file bytes. sizeBytes must match the file length. */ -export const zUploadAttachmentBody = zUploadAttachmentRequestMultipartRelated; +export const zUploadAttachmentBody = /* @__PURE__ */ (() => z.instanceof(Blob))(); export const zUploadAttachmentHeaders = /* @__PURE__ */ (() => z.looseObject({ 'content-length': z.string(), @@ -26185,10 +9551,10 @@ export const zUploadAttachmentPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() }))(); -export const zUploadAttachmentResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zUploadAttachmentResponse200ApplicationJson, - zUploadAttachmentResponse201ApplicationJson -]))(); +/** + * The attachment upload had already been committed. + */ +export const zUploadAttachmentResult = zAttachment; export type uploadAttachmentResultZodOutput = z.output; @@ -26200,7 +9566,7 @@ export const zGetAttachmentPath = /* @__PURE__ */ (() => z.looseObject({ /** * The Attachment resource. */ -export const zGetAttachmentResult = zGetAttachmentResponse200ApplicationJson; +export const zGetAttachmentResult = zAttachment; export type getAttachmentResultZodOutput = z.output; @@ -26212,7 +9578,7 @@ export const zDownloadAttachmentPath = /* @__PURE__ */ (() => z.looseObject({ /** * The Attachment's raw file bytes. Content-Type identifies the media type of the response. */ -export const zDownloadAttachmentResult = zDownloadAttachmentResponse200ApplicationOctetStream; +export const zDownloadAttachmentResult = zDownloadAttachmentResponse; export type downloadAttachmentResultZodOutput = z.output; @@ -26223,11 +9589,11 @@ export const zListProjectPlatformsPath = /* @__PURE__ */ (() => z.looseObject({ /** * Every platform type available to the project. */ -export const zListProjectPlatformsResult = zListProjectPlatformsResponse200ApplicationJson; +export const zListProjectPlatformsResult = zListProjectPlatformsResponse; export type listProjectPlatformsResultZodOutput = z.output; -export const zConnectEmailDomainBody = zConnectEmailDomainRequestApplicationJson; +export const zConnectEmailDomainBody = zConnectEmailDomainRequest; export const zConnectEmailDomainHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26240,7 +9606,7 @@ export const zConnectEmailDomainPath = /* @__PURE__ */ (() => z.looseObject({ /** * The domain was reserved and setup was dispatched. GET the Location after the Retry-After interval until the operation is terminal. */ -export const zConnectEmailDomainResult = zConnectEmailDomainResponse202ApplicationJson; +export const zConnectEmailDomainResult = zOperation; export type connectEmailDomainResultZodOutput = z.output; @@ -26251,7 +9617,7 @@ export const zGetProjectImessagePlatformPath = /* @__PURE__ */ (() => z.looseObj /** * The project's iMessage line mode. */ -export const zGetProjectImessagePlatformResult = zGetProjectImessagePlatformResponse200ApplicationJson; +export const zGetProjectImessagePlatformResult = zProjectPlatformSettings; export type getProjectImessagePlatformResultZodOutput = z.output; @@ -26268,11 +9634,11 @@ export const zListSharedLineAssignmentsQuery = z.looseObject({ /** * A page of shared line assignments. */ -export const zListSharedLineAssignmentsResult = zListSharedLineAssignmentsResponse200ApplicationJson; +export const zListSharedLineAssignmentsResult = zSharedLineAssignmentPage; export type listSharedLineAssignmentsResultZodOutput = z.output; -export const zCreateSharedLineAssignmentBody = zCreateSharedLineAssignmentRequestApplicationJson; +export const zCreateSharedLineAssignmentBody = zCreateSharedLineAssignmentRequest; export const zCreateSharedLineAssignmentHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26285,7 +9651,7 @@ export const zCreateSharedLineAssignmentPath = /* @__PURE__ */ (() => z.looseObj /** * The created shared line assignment. */ -export const zCreateSharedLineAssignmentResult = zCreateSharedLineAssignmentResponse201ApplicationJson; +export const zCreateSharedLineAssignmentResult = zSharedLineAssignment; export type createSharedLineAssignmentResultZodOutput = z.output; @@ -26297,7 +9663,7 @@ export const zReleaseSharedLineAssignmentPath = /* @__PURE__ */ (() => z.looseOb /** * The released shared line assignment. */ -export const zReleaseSharedLineAssignmentResult = zReleaseSharedLineAssignmentResponse200ApplicationJson; +export const zReleaseSharedLineAssignmentResult = zSharedLineAssignment; export type releaseSharedLineAssignmentResultZodOutput = z.output; @@ -26309,7 +9675,7 @@ export const zGetSharedLineAssignmentPath = /* @__PURE__ */ (() => z.looseObject /** * The shared line assignment. */ -export const zGetSharedLineAssignmentResult = zGetSharedLineAssignmentResponse200ApplicationJson; +export const zGetSharedLineAssignmentResult = zSharedLineAssignment; export type getSharedLineAssignmentResultZodOutput = z.output; @@ -26324,7 +9690,7 @@ export const zProvisionImessageDedicatedLinePath = /* @__PURE__ */ (() => z.loos /** * The provision was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the line once one is claimed. */ -export const zProvisionImessageDedicatedLineResult = zProvisionImessageDedicatedLineResponse202ApplicationJson; +export const zProvisionImessageDedicatedLineResult = zOperation; export type provisionImessageDedicatedLineResultZodOutput = z.output; @@ -26333,10 +9699,10 @@ export const zReleaseImessageDedicatedLinePath = /* @__PURE__ */ (() => z.looseO resourceId: z.string() }))(); -export const zReleaseImessageDedicatedLineResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zReleaseImessageDedicatedLineResponse200ApplicationJson, - zReleaseImessageDedicatedLineResponse202ApplicationJson -]))(); +/** + * The iMessage product and its charge period were removed. + */ +export const zReleaseImessageDedicatedLineResult = zOperation; export type releaseImessageDedicatedLineResultZodOutput = z.output; @@ -26349,19 +9715,13 @@ export const zListOperationsQuery = z.looseObject({ pageToken: z.string().optional(), resourceId: z.string().optional(), state: z.string().optional(), - type: openEnum([ - 'resource.provision', - 'resource.release', - 'whatsapp.account.disconnect', - 'sms.campaign.assign', - 'sms.campaign.unassign' - ]).optional() + type: zOperationType.optional() }); /** * A page of the project's operations. */ -export const zListOperationsResult = zListOperationsResponse200ApplicationJson; +export const zListOperationsResult = zOperationPage; export type listOperationsResultZodOutput = z.output; @@ -26371,9 +9731,9 @@ export const zGetOperationPath = /* @__PURE__ */ (() => z.looseObject({ }))(); /** - * The operation, and the resource it produced once one exists. + * The operation, and the resource it produced once one exists. Retry-After is supplied for pending/running campaign and Telegram operations and omitted once terminal. */ -export const zGetOperationResult = zGetOperationResponse200ApplicationJson; +export const zGetOperationResult = zGetOperationResponse; export type getOperationResultZodOutput = z.output; @@ -26385,7 +9745,7 @@ export const zCancelOperationPath = /* @__PURE__ */ (() => z.looseObject({ /** * The cancelled operation. */ -export const zCancelOperationResult = zCancelOperationResponse200ApplicationJson; +export const zCancelOperationResult = zOperation; export type cancelOperationResultZodOutput = z.output; @@ -26404,7 +9764,7 @@ export const zListResourcesQuery = z.looseObject({ /** * A page of the project's resources. */ -export const zListResourcesResult = zListResourcesResponse200ApplicationJson; +export const zListResourcesResult = zResourcePage; export type listResourcesResultZodOutput = z.output; @@ -26413,10 +9773,10 @@ export const zReleaseResourcePath = /* @__PURE__ */ (() => z.looseObject({ resourceId: z.string() }))(); -export const zReleaseResourceResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zReleaseResourceResponse200ApplicationJson, - zReleaseResourceResponse202ApplicationJson -]))(); +/** + * The release finished inside this request. The resource is gone. + */ +export const zReleaseResourceResult = zOperation; export type releaseResourceResultZodOutput = z.output; @@ -26428,7 +9788,7 @@ export const zGetResourcePath = /* @__PURE__ */ (() => z.looseObject({ /** * The resource. */ -export const zGetResourceResult = zGetResourceResponse200ApplicationJson; +export const zGetResourceResult = zResource; export type getResourceResultZodOutput = z.output; @@ -26445,10 +9805,10 @@ export const zUnassignSmsLineCampaignQuery = /* @__PURE__ */ (() => z.looseObjec expectedVersion: z.number() }))(); -export const zUnassignSmsLineCampaignResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zUnassignSmsLineCampaignResponse200ApplicationJson, - zUnassignSmsLineCampaignResponse202ApplicationJson -]))(); +/** + * The original terminal operation on an authorized replay. No Retry-After is emitted. + */ +export const zUnassignSmsLineCampaignResult = zOperation; export type unassignSmsLineCampaignResultZodOutput = z.output; @@ -26460,11 +9820,11 @@ export const zGetSmsLineCampaignAssignmentPath = /* @__PURE__ */ (() => z.looseO /** * Current assignment, including an untouched version of 1. */ -export const zGetSmsLineCampaignAssignmentResult = zGetSmsLineCampaignAssignmentResponse200ApplicationJson; +export const zGetSmsLineCampaignAssignmentResult = zGetSmsLineCampaignAssignmentResponse; export type getSmsLineCampaignAssignmentResultZodOutput = z.output; -export const zAssignSmsLineCampaignBody = zAssignSmsLineCampaignRequestApplicationJson; +export const zAssignSmsLineCampaignBody = zAssignSmsLineCampaignRequest; export const zAssignSmsLineCampaignHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26475,14 +9835,14 @@ export const zAssignSmsLineCampaignPath = /* @__PURE__ */ (() => z.looseObject({ resourceId: z.string() }))(); -export const zAssignSmsLineCampaignResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zAssignSmsLineCampaignResponse200ApplicationJson, - zAssignSmsLineCampaignResponse202ApplicationJson -]))(); +/** + * The original terminal operation on an authorized replay. No Retry-After is emitted. + */ +export const zAssignSmsLineCampaignResult = zOperation; export type assignSmsLineCampaignResultZodOutput = z.output; -export const zPurchaseSmsNumberBody = zPurchaseSmsNumberRequestApplicationJson; +export const zPurchaseSmsNumberBody = zPurchaseSmsNumberRequest; export const zPurchaseSmsNumberHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26495,7 +9855,7 @@ export const zPurchaseSmsNumberPath = /* @__PURE__ */ (() => z.looseObject({ /** * The purchase was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal; the response there carries the number once it exists. */ -export const zPurchaseSmsNumberResult = zPurchaseSmsNumberResponse202ApplicationJson; +export const zPurchaseSmsNumberResult = zOperation; export type purchaseSmsNumberResultZodOutput = z.output; @@ -26510,7 +9870,7 @@ export const zListNumberAreaCodesQuery = /* @__PURE__ */ (() => z.looseObject({ /** * Current area-code coverage. An empty list is a successful coverage read, not an upstream failure. */ -export const zListNumberAreaCodesResult = zListNumberAreaCodesResponse200ApplicationJson; +export const zListNumberAreaCodesResult = zListNumberAreaCodesResponse; export type listNumberAreaCodesResultZodOutput = z.output; @@ -26521,11 +9881,11 @@ export const zListNumberCountriesPath = /* @__PURE__ */ (() => z.looseObject({ /** * Supported countries. */ -export const zListNumberCountriesResult = zListNumberCountriesResponse200ApplicationJson; +export const zListNumberCountriesResult = zListNumberCountriesResponse; export type listNumberCountriesResultZodOutput = z.output; -export const zConnectTelegramBotBody = zConnectTelegramBotRequestApplicationJson; +export const zConnectTelegramBotBody = zConnectTelegramBotRequest; export const zConnectTelegramBotHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26538,11 +9898,11 @@ export const zConnectTelegramBotPath = /* @__PURE__ */ (() => z.looseObject({ /** * Setup accepted. Open detail.setupUrl and poll the operation. */ -export const zConnectTelegramBotResult = zConnectTelegramBotResponse202ApplicationJson; +export const zConnectTelegramBotResult = zOperation; export type connectTelegramBotResultZodOutput = z.output; -export const zBatchUpdateVoiceLineProfileAssignmentsBody = zBatchUpdateVoiceLineProfileAssignmentsRequestApplicationJson; +export const zBatchUpdateVoiceLineProfileAssignmentsBody = zBatchUpdateVoiceLineProfileAssignmentsRequest; export const zBatchUpdateVoiceLineProfileAssignmentsPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() @@ -26551,7 +9911,7 @@ export const zBatchUpdateVoiceLineProfileAssignmentsPath = /* @__PURE__ */ (() = /** * The updated line profile assignments. */ -export const zBatchUpdateVoiceLineProfileAssignmentsResult = zBatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson; +export const zBatchUpdateVoiceLineProfileAssignmentsResult = zBatchUpdateVoiceLineProfileAssignmentsResponse; export type batchUpdateVoiceLineProfileAssignmentsResultZodOutput = z.output; @@ -26579,11 +9939,11 @@ export const zGetVoiceLineProfileAssignmentPath = /* @__PURE__ */ (() => z.loose /** * The line profile assignment. */ -export const zGetVoiceLineProfileAssignmentResult = zGetVoiceLineProfileAssignmentResponse200ApplicationJson; +export const zGetVoiceLineProfileAssignmentResult = zVoiceLineProfileAssignment; export type getVoiceLineProfileAssignmentResultZodOutput = z.output; -export const zAssignVoiceLineProfileBody = zAssignVoiceLineProfileRequestApplicationJson; +export const zAssignVoiceLineProfileBody = zAssignVoiceLineProfileRequest; export const zAssignVoiceLineProfilePath = /* @__PURE__ */ (() => z.looseObject({ id: z.string(), @@ -26593,7 +9953,7 @@ export const zAssignVoiceLineProfilePath = /* @__PURE__ */ (() => z.looseObject( /** * The updated Voice line profile assignment. */ -export const zAssignVoiceLineProfileResult = zAssignVoiceLineProfileResponse200ApplicationJson; +export const zAssignVoiceLineProfileResult = zVoiceLineProfileAssignment; export type assignVoiceLineProfileResultZodOutput = z.output; @@ -26602,7 +9962,7 @@ export const zListVoiceProfilesPath = /* @__PURE__ */ (() => z.looseObject({ }))(); export const zListVoiceProfilesQuery = z.looseObject({ - default: openEnum(['true', 'false']).optional(), + default: zListVoiceProfilesDefaultInput.optional(), pageSize: z.number().refine(Number.isInteger, { message: 'Expected an integer' }).optional(), pageToken: z.string().optional() }); @@ -26610,11 +9970,11 @@ export const zListVoiceProfilesQuery = z.looseObject({ /** * A page of Voice profiles. */ -export const zListVoiceProfilesResult = zListVoiceProfilesResponse200ApplicationJson; +export const zListVoiceProfilesResult = zVoiceProfilePage; export type listVoiceProfilesResultZodOutput = z.output; -export const zCreateVoiceProfileBody = zCreateVoiceProfileRequestApplicationJson; +export const zCreateVoiceProfileBody = zCreateVoiceProfileRequest; export const zCreateVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() @@ -26623,7 +9983,7 @@ export const zCreateVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ /** * The created Voice profile. */ -export const zCreateVoiceProfileResult = zCreateVoiceProfileResponse201ApplicationJson; +export const zCreateVoiceProfileResult = zVoiceProfile; export type createVoiceProfileResultZodOutput = z.output; @@ -26634,11 +9994,11 @@ export const zGetDefaultVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject( /** * The current default Voice profile. */ -export const zGetDefaultVoiceProfileResult = zGetDefaultVoiceProfileResponse200ApplicationJson; +export const zGetDefaultVoiceProfileResult = zVoiceProfile; export type getDefaultVoiceProfileResultZodOutput = z.output; -export const zUpdateDefaultVoiceProfileBody = zUpdateDefaultVoiceProfileRequestApplicationJson; +export const zUpdateDefaultVoiceProfileBody = zUpdateDefaultVoiceProfileRequest; export const zUpdateDefaultVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() @@ -26647,20 +10007,20 @@ export const zUpdateDefaultVoiceProfilePath = /* @__PURE__ */ (() => z.looseObje /** * The updated default Voice profile. */ -export const zUpdateDefaultVoiceProfileResult = zUpdateDefaultVoiceProfileResponse200ApplicationJson; +export const zUpdateDefaultVoiceProfileResult = zVoiceProfile; export type updateDefaultVoiceProfileResultZodOutput = z.output; -export const zCreateDefaultVoiceProfileBody = zCreateDefaultVoiceProfileRequestApplicationJson; +export const zCreateDefaultVoiceProfileBody = zCreateDefaultVoiceProfileRequest; export const zCreateDefaultVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ id: z.string() }))(); -export const zCreateDefaultVoiceProfileResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zCreateDefaultVoiceProfileResponse200ApplicationJson, - zCreateDefaultVoiceProfileResponse201ApplicationJson -]))(); +/** + * The identically replayed default Voice profile. + */ +export const zCreateDefaultVoiceProfileResult = zVoiceProfile; export type createDefaultVoiceProfileResultZodOutput = z.output; @@ -26671,7 +10031,7 @@ export const zDeleteVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ export const zDeleteVoiceProfileQuery = z.looseObject({ expectedVersion: z.number().refine(Number.isInteger, { message: 'Expected an integer' }), - force: openEnum(['true', 'false']).optional() + force: zDeleteVoiceProfileForceInput.optional() }); /** @@ -26689,11 +10049,11 @@ export const zGetVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ /** * The Voice profile. */ -export const zGetVoiceProfileResult = zGetVoiceProfileResponse200ApplicationJson; +export const zGetVoiceProfileResult = zVoiceProfile; export type getVoiceProfileResultZodOutput = z.output; -export const zUpdateVoiceProfileBody = zUpdateVoiceProfileRequestApplicationJson; +export const zUpdateVoiceProfileBody = zUpdateVoiceProfileRequest; export const zUpdateVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ id: z.string(), @@ -26703,7 +10063,7 @@ export const zUpdateVoiceProfilePath = /* @__PURE__ */ (() => z.looseObject({ /** * The updated Voice profile. */ -export const zUpdateVoiceProfileResult = zUpdateVoiceProfileResponse200ApplicationJson; +export const zUpdateVoiceProfileResult = zVoiceProfile; export type updateVoiceProfileResultZodOutput = z.output; @@ -26719,11 +10079,11 @@ export const zDeleteVoiceProfileInboundQuery = z.looseObject({ /** * The removed inbound configuration and next profile version. */ -export const zDeleteVoiceProfileInboundResult = zDeleteVoiceProfileInboundResponse200ApplicationJson; +export const zDeleteVoiceProfileInboundResult = zVoiceProfileInboundConfiguration; export type deleteVoiceProfileInboundResultZodOutput = z.output; -export const zUpdateVoiceProfileInboundBody = zUpdateVoiceProfileInboundRequestApplicationJson; +export const zUpdateVoiceProfileInboundBody = zUpdateVoiceProfileInboundRequest; export const zUpdateVoiceProfileInboundPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string(), @@ -26733,21 +10093,21 @@ export const zUpdateVoiceProfileInboundPath = /* @__PURE__ */ (() => z.looseObje /** * The updated inbound configuration and profile version. */ -export const zUpdateVoiceProfileInboundResult = zUpdateVoiceProfileInboundResponse200ApplicationJson; +export const zUpdateVoiceProfileInboundResult = zVoiceProfileInboundConfiguration; export type updateVoiceProfileInboundResultZodOutput = z.output; -export const zReplaceVoiceProfileInboundBody = zReplaceVoiceProfileInboundRequestApplicationJson; +export const zReplaceVoiceProfileInboundBody = zReplaceVoiceProfileInboundRequest; export const zReplaceVoiceProfileInboundPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string(), profileId: z.string() }))(); -export const zReplaceVoiceProfileInboundResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zReplaceVoiceProfileInboundResponse200ApplicationJson, - zReplaceVoiceProfileInboundResponse201ApplicationJson -]))(); +/** + * The replaced inbound configuration and profile version. + */ +export const zReplaceVoiceProfileInboundResult = zVoiceProfileInboundConfiguration; export type replaceVoiceProfileInboundResultZodOutput = z.output; @@ -26763,11 +10123,11 @@ export const zDeleteVoiceProfileOutboundQuery = z.looseObject({ /** * Outbound calling was revoked. */ -export const zDeleteVoiceProfileOutboundResult = zDeleteVoiceProfileOutboundResponse200ApplicationJson; +export const zDeleteVoiceProfileOutboundResult = zDeleteVoiceProfileOutboundResponse; export type deleteVoiceProfileOutboundResultZodOutput = z.output; -export const zUpdateVoiceProfileOutboundAuthenticationBody = zUpdateVoiceProfileOutboundAuthenticationRequestApplicationJson; +export const zUpdateVoiceProfileOutboundAuthenticationBody = zUpdateVoiceProfileOutboundAuthenticationRequest; export const zUpdateVoiceProfileOutboundAuthenticationPath = /* @__PURE__ */ (() => z.looseObject({ id: z.string(), @@ -26777,11 +10137,11 @@ export const zUpdateVoiceProfileOutboundAuthenticationPath = /* @__PURE__ */ (() /** * The current outbound configuration and profile version. */ -export const zUpdateVoiceProfileOutboundAuthenticationResult = zUpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson; +export const zUpdateVoiceProfileOutboundAuthenticationResult = zUpdateVoiceProfileOutboundAuthenticationResponse; export type updateVoiceProfileOutboundAuthenticationResultZodOutput = z.output; -export const zConfigureVoiceProfileOutboundBody = zConfigureVoiceProfileOutboundRequestApplicationJson; +export const zConfigureVoiceProfileOutboundBody = zConfigureVoiceProfileOutboundRequest; export const zConfigureVoiceProfileOutboundHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26792,14 +10152,14 @@ export const zConfigureVoiceProfileOutboundPath = /* @__PURE__ */ (() => z.loose profileId: z.string() }))(); -export const zConfigureVoiceProfileOutboundResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zConfigureVoiceProfileOutboundResponse200ApplicationJson, - zConfigureVoiceProfileOutboundResponse201ApplicationJson -]))(); +/** + * An idempotent replay with an explicit null password. + */ +export const zConfigureVoiceProfileOutboundResult = zConfigureVoiceProfileOutboundResponse; export type configureVoiceProfileOutboundResultZodOutput = z.output; -export const zRotateVoiceProfileOutboundCredentialBody = zRotateVoiceProfileOutboundCredentialRequestApplicationJson; +export const zRotateVoiceProfileOutboundCredentialBody = zRotateVoiceProfileOutboundCredentialRequest; export const zRotateVoiceProfileOutboundCredentialHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26813,7 +10173,7 @@ export const zRotateVoiceProfileOutboundCredentialPath = /* @__PURE__ */ (() => /** * The rotated password result and next profile version. */ -export const zRotateVoiceProfileOutboundCredentialResult = zRotateVoiceProfileOutboundCredentialResponse200ApplicationJson; +export const zRotateVoiceProfileOutboundCredentialResult = zRotateVoiceProfileOutboundCredentialResponse; export type rotateVoiceProfileOutboundCredentialResultZodOutput = z.output; @@ -26824,7 +10184,7 @@ export const zGetProjectWhatsappPlatformPath = /* @__PURE__ */ (() => z.looseObj /** * The project's WhatsApp line mode. */ -export const zGetProjectWhatsappPlatformResult = zGetProjectWhatsappPlatformResponse200ApplicationJson; +export const zGetProjectWhatsappPlatformResult = zProjectPlatformSettings; export type getProjectWhatsappPlatformResultZodOutput = z.output; @@ -26836,10 +10196,10 @@ export const zDisconnectWhatsappBusinessAccountPath = /* @__PURE__ */ (() => z.l id: z.string() }))(); -export const zDisconnectWhatsappBusinessAccountResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zDisconnectWhatsappBusinessAccountResponse200ApplicationJson, - zDisconnectWhatsappBusinessAccountResponse202ApplicationJson -]))(); +/** + * The replayed disconnect operation is terminal. + */ +export const zDisconnectWhatsappBusinessAccountResult = zOperation; export type disconnectWhatsappBusinessAccountResultZodOutput = z.output; @@ -26850,7 +10210,7 @@ export const zGetWhatsappBusinessAccountPath = /* @__PURE__ */ (() => z.looseObj /** * The project's connected account. */ -export const zGetWhatsappBusinessAccountResult = zGetWhatsappBusinessAccountResponse200ApplicationJson; +export const zGetWhatsappBusinessAccountResult = zWhatsappBusinessAccount; export type getWhatsappBusinessAccountResultZodOutput = z.output; @@ -26861,11 +10221,11 @@ export const zListWhatsappAccountPhoneNumbersPath = /* @__PURE__ */ (() => z.loo /** * The current Meta number inventory for the connected WABA. */ -export const zListWhatsappAccountPhoneNumbersResult = zListWhatsappAccountPhoneNumbersResponse200ApplicationJson; +export const zListWhatsappAccountPhoneNumbersResult = zListWhatsappAccountPhoneNumbersResponse; export type listWhatsappAccountPhoneNumbersResultZodOutput = z.output; -export const zCreateWhatsappVoipSenderBody = zCreateWhatsappVoipSenderRequestApplicationJson; +export const zCreateWhatsappVoipSenderBody = zCreateWhatsappVoipSenderRequest; export const zCreateWhatsappVoipSenderHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26878,11 +10238,11 @@ export const zCreateWhatsappVoipSenderPath = /* @__PURE__ */ (() => z.looseObjec /** * The sender provision was accepted. Poll the Location after Retry-After until the operation is terminal. */ -export const zCreateWhatsappVoipSenderResult = zCreateWhatsappVoipSenderResponse202ApplicationJson; +export const zCreateWhatsappVoipSenderResult = zOperation; export type createWhatsappVoipSenderResultZodOutput = z.output; -export const zConnectWhatsappBusinessBody = zConnectWhatsappBusinessRequestApplicationJson; +export const zConnectWhatsappBusinessBody = zConnectWhatsappBusinessRequest; export const zConnectWhatsappBusinessHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26895,7 +10255,7 @@ export const zConnectWhatsappBusinessPath = /* @__PURE__ */ (() => z.looseObject /** * The code was accepted and onboarding was dispatched. GET the Location after the Retry-After interval until the operation is terminal. */ -export const zConnectWhatsappBusinessResult = zConnectWhatsappBusinessResponse202ApplicationJson; +export const zConnectWhatsappBusinessResult = zOperation; export type connectWhatsappBusinessResultZodOutput = z.output; @@ -26911,7 +10271,7 @@ export const zGetWhatsappBusinessVerificationCodeQuery = /* @__PURE__ */ (() => /** * A verification code received strictly after receivedAfter. Treat it as an authentication secret. */ -export const zGetWhatsappBusinessVerificationCodeResult = zGetWhatsappBusinessVerificationCodeResponse200ApplicationJson; +export const zGetWhatsappBusinessVerificationCodeResult = zGetWhatsappBusinessVerificationCodeResponse; export type getWhatsappBusinessVerificationCodeResultZodOutput = z.output; @@ -26922,7 +10282,7 @@ export const zGetWhatsappSignupConfigPath = /* @__PURE__ */ (() => z.looseObject /** * The parameters to launch Embedded Signup with. */ -export const zGetWhatsappSignupConfigResult = zGetWhatsappSignupConfigResponse200ApplicationJson; +export const zGetWhatsappSignupConfigResult = zGetWhatsappSignupConfigResponse; export type getWhatsappSignupConfigResultZodOutput = z.output; @@ -26939,11 +10299,11 @@ export const zListWhatsappSharedLineAssignmentsQuery = z.looseObject({ /** * A page of WhatsApp shared line assignments. */ -export const zListWhatsappSharedLineAssignmentsResult = zListWhatsappSharedLineAssignmentsResponse200ApplicationJson; +export const zListWhatsappSharedLineAssignmentsResult = zSharedLineAssignmentPage; export type listWhatsappSharedLineAssignmentsResultZodOutput = z.output; -export const zCreateWhatsappSharedLineAssignmentBody = zCreateWhatsappSharedLineAssignmentRequestApplicationJson; +export const zCreateWhatsappSharedLineAssignmentBody = zCreateWhatsappSharedLineAssignmentRequest; export const zCreateWhatsappSharedLineAssignmentHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -26956,7 +10316,7 @@ export const zCreateWhatsappSharedLineAssignmentPath = /* @__PURE__ */ (() => z. /** * The created WhatsApp shared line assignment. */ -export const zCreateWhatsappSharedLineAssignmentResult = zCreateWhatsappSharedLineAssignmentResponse201ApplicationJson; +export const zCreateWhatsappSharedLineAssignmentResult = zSharedLineAssignment; export type createWhatsappSharedLineAssignmentResultZodOutput = z.output; @@ -26968,7 +10328,7 @@ export const zReleaseWhatsappSharedLineAssignmentPath = /* @__PURE__ */ (() => z /** * The released WhatsApp shared line assignment. */ -export const zReleaseWhatsappSharedLineAssignmentResult = zReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson; +export const zReleaseWhatsappSharedLineAssignmentResult = zSharedLineAssignment; export type releaseWhatsappSharedLineAssignmentResultZodOutput = z.output; @@ -26980,7 +10340,7 @@ export const zGetWhatsappSharedLineAssignmentPath = /* @__PURE__ */ (() => z.loo /** * The WhatsApp shared line assignment. */ -export const zGetWhatsappSharedLineAssignmentResult = zGetWhatsappSharedLineAssignmentResponse200ApplicationJson; +export const zGetWhatsappSharedLineAssignmentResult = zSharedLineAssignment; export type getWhatsappSharedLineAssignmentResultZodOutput = z.output; @@ -26995,7 +10355,7 @@ export const zProvisionWhatsappDedicatedLinePath = /* @__PURE__ */ (() => z.loos /** * The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal. */ -export const zProvisionWhatsappDedicatedLineResult = zProvisionWhatsappDedicatedLineResponse202ApplicationJson; +export const zProvisionWhatsappDedicatedLineResult = zOperation; export type provisionWhatsappDedicatedLineResultZodOutput = z.output; @@ -27004,10 +10364,10 @@ export const zReleaseWhatsappDedicatedLinePath = /* @__PURE__ */ (() => z.looseO resourceId: z.string() }))(); -export const zReleaseWhatsappDedicatedLineResult: z.ZodType = /* @__PURE__ */ (() => z.union([ - zReleaseWhatsappDedicatedLineResponse200ApplicationJson, - zReleaseWhatsappDedicatedLineResponse202ApplicationJson -]))(); +/** + * The WhatsApp ability and its charge period were removed. + */ +export const zReleaseWhatsappDedicatedLineResult = zOperation; export type releaseWhatsappDedicatedLineResultZodOutput = z.output; @@ -27022,7 +10382,7 @@ export const zDeleteProjectPath = /* @__PURE__ */ (() => z.looseObject({ /** * The deleted project tombstone. */ -export const zDeleteProjectResult = zDeleteProjectResponse200ApplicationJson; +export const zDeleteProjectResult = zProject; export type deleteProjectResultZodOutput = z.output; @@ -27033,11 +10393,11 @@ export const zGetProjectPath = /* @__PURE__ */ (() => z.looseObject({ /** * The requested project. */ -export const zGetProjectResult = zGetProjectResponse200ApplicationJson; +export const zGetProjectResult = zProject; export type getProjectResultZodOutput = z.output; -export const zUpdateProjectBody = zUpdateProjectRequestApplicationJson; +export const zUpdateProjectBody = zUpdateProjectRequest; export const zUpdateProjectHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27050,7 +10410,7 @@ export const zUpdateProjectPath = /* @__PURE__ */ (() => z.looseObject({ /** * The updated project. */ -export const zUpdateProjectResult = zUpdateProjectResponse200ApplicationJson; +export const zUpdateProjectResult = zProject; export type updateProjectResultZodOutput = z.output; @@ -27061,11 +10421,11 @@ export const zGetAgentProfilePath = /* @__PURE__ */ (() => z.looseObject({ /** * The Project's agent profile. */ -export const zGetAgentProfileResult = zGetAgentProfileResponse200ApplicationJson; +export const zGetAgentProfileResult = zAgentProfile; export type getAgentProfileResultZodOutput = z.output; -export const zUpdateAgentProfileBody = zUpdateAgentProfileRequestApplicationJson; +export const zUpdateAgentProfileBody = zUpdateAgentProfileRequest; export const zUpdateAgentProfileHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27078,7 +10438,7 @@ export const zUpdateAgentProfilePath = /* @__PURE__ */ (() => z.looseObject({ /** * The updated agent profile. */ -export const zUpdateAgentProfileResult = zUpdateAgentProfileResponse200ApplicationJson; +export const zUpdateAgentProfileResult = zAgentProfile; export type updateAgentProfileResultZodOutput = z.output; @@ -27091,13 +10451,13 @@ export const zResetAgentProfileAvatarPath = /* @__PURE__ */ (() => z.looseObject }))(); /** - * The agent profile reset to the default avatar. + * The agent profile with the project's default avatar. */ -export const zResetAgentProfileAvatarResult = zResetAgentProfileAvatarResponse200ApplicationJson; +export const zResetAgentProfileAvatarResult = zAgentProfile; export type resetAgentProfileAvatarResultZodOutput = z.output; -export const zCommitAgentProfileAvatarBody = zCommitAgentProfileAvatarRequestApplicationJson; +export const zCommitAgentProfileAvatarBody = zCommitAgentProfileAvatarRequest; export const zCommitAgentProfileAvatarHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27110,11 +10470,11 @@ export const zCommitAgentProfileAvatarPath = /* @__PURE__ */ (() => z.looseObjec /** * The agent profile with its committed avatar. */ -export const zCommitAgentProfileAvatarResult = zCommitAgentProfileAvatarResponse200ApplicationJson; +export const zCommitAgentProfileAvatarResult = zAgentProfile; export type commitAgentProfileAvatarResultZodOutput = z.output; -export const zCreateAgentProfileAvatarUploadBody = zCreateAgentProfileAvatarUploadRequestApplicationJson; +export const zCreateAgentProfileAvatarUploadBody = zCreateAgentProfileAvatarUploadRequest; export const zCreateAgentProfileAvatarUploadPath = /* @__PURE__ */ (() => z.looseObject({ projectId: z.string() @@ -27123,7 +10483,7 @@ export const zCreateAgentProfileAvatarUploadPath = /* @__PURE__ */ (() => z.loos /** * A short-lived, project-bound presigned S3 POST. */ -export const zCreateAgentProfileAvatarUploadResult = zCreateAgentProfileAvatarUploadResponse201ApplicationJson; +export const zCreateAgentProfileAvatarUploadResult = zAgentProfileAvatarUpload; export type createAgentProfileAvatarUploadResultZodOutput = z.output; @@ -27132,13 +10492,13 @@ export const zListProjectApiKeysPath = /* @__PURE__ */ (() => z.looseObject({ }))(); /** - * Every live key on the project, newest first. Never includes secrets. + * The project's keys that have not been revoked, newest first. Never includes secrets. */ -export const zListProjectApiKeysResult = zListProjectApiKeysResponse200ApplicationJson; +export const zListProjectApiKeysResult = zListProjectApiKeysResponse; export type listProjectApiKeysResultZodOutput = z.output; -export const zCreateProjectApiKeyBody = zCreateProjectApiKeyRequestApplicationJson; +export const zCreateProjectApiKeyBody = zCreateProjectApiKeyRequest; export const zCreateProjectApiKeyHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27149,9 +10509,9 @@ export const zCreateProjectApiKeyPath = /* @__PURE__ */ (() => z.looseObject({ }))(); /** - * The created key, with its secret. The secret is shown only here and cannot be recovered afterwards. + * The created key, with its secret. The secret is returned only in this response and in idempotent replays of it, and cannot be recovered through any other operation. */ -export const zCreateProjectApiKeyResult = zCreateProjectApiKeyResponse201ApplicationJson; +export const zCreateProjectApiKeyResult = zCreateProjectApiKeyResponse; export type createProjectApiKeyResultZodOutput = z.output; @@ -27167,11 +10527,11 @@ export const zRevokeProjectApiKeyPath = /* @__PURE__ */ (() => z.looseObject({ /** * The revoked key. Repeating the delete returns the same revokedAt. */ -export const zRevokeProjectApiKeyResult = zRevokeProjectApiKeyResponse200ApplicationJson; +export const zRevokeProjectApiKeyResult = zProjectApiKeyResponse; export type revokeProjectApiKeyResultZodOutput = z.output; -export const zUpdateProjectApiKeyBody = zUpdateProjectApiKeyRequestApplicationJson; +export const zUpdateProjectApiKeyBody = zUpdateProjectApiKeyRequest; export const zUpdateProjectApiKeyHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27185,7 +10545,7 @@ export const zUpdateProjectApiKeyPath = /* @__PURE__ */ (() => z.looseObject({ /** * The key with its new permission list. Sending the list it already holds returns it unchanged. */ -export const zUpdateProjectApiKeyResult = zUpdateProjectApiKeyResponse200ApplicationJson; +export const zUpdateProjectApiKeyResult = zProjectApiKeyResponse; export type updateProjectApiKeyResultZodOutput = z.output; @@ -27196,7 +10556,7 @@ export const zGetBillingOverviewPath = /* @__PURE__ */ (() => z.looseObject({ /** * Plan, entitlements, and current-period usage. */ -export const zGetBillingOverviewResult = zGetBillingOverviewResponse200ApplicationJson; +export const zGetBillingOverviewResult = zGetBillingOverviewResponse; export type getBillingOverviewResultZodOutput = z.output; @@ -27208,7 +10568,7 @@ export const zGetBillingOperationPath = /* @__PURE__ */ (() => z.looseObject({ /** * Authoritative recovery snapshot for a billing operation. */ -export const zGetBillingOperationResult = zGetBillingOperationResponse200ApplicationJson; +export const zGetBillingOperationResult = zBillingOperation; export type getBillingOperationResultZodOutput = z.output; @@ -27219,7 +10579,7 @@ export const zListBillingPlansPath = /* @__PURE__ */ (() => z.looseObject({ /** * Billing plans grouped by their public plan-metadata type. */ -export const zListBillingPlansResult = zListBillingPlansResponse200ApplicationJson; +export const zListBillingPlansResult = zListBillingPlansResponse; export type listBillingPlansResultZodOutput = z.output; @@ -27234,7 +10594,7 @@ export const zGetMessageMetricsBackfillPath = /* @__PURE__ */ (() => z.looseObje /** * Project-scoped backfill progress. */ -export const zGetMessageMetricsBackfillResult = zGetMessageMetricsBackfillResponse200ApplicationJson; +export const zGetMessageMetricsBackfillResult = zGetMessageMetricsBackfillResponse; export type getMessageMetricsBackfillResultZodOutput = z.output; @@ -27249,7 +10609,7 @@ export const zGetMessageMetricsSqlSchemaPath = /* @__PURE__ */ (() => z.looseObj /** * The Project-scoped SQL surface of the resolved contracts date. */ -export const zGetMessageMetricsSqlSchemaResult = zGetMessageMetricsSqlSchemaResponse200ApplicationJson; +export const zGetMessageMetricsSqlSchemaResult = zGetMessageMetricsSqlSchemaResponse; export type getMessageMetricsSqlSchemaResultZodOutput = z.output; @@ -27266,7 +10626,7 @@ export const zQueryMessageMetricsPath = /* @__PURE__ */ (() => z.looseObject({ /** * Dynamic SQL columns and rows followed by bounded ClickHouse read statistics. */ -export const zQueryMessageMetricsResult = zQueryMessageMetricsResponse200ApplicationJson; +export const zQueryMessageMetricsResult = zQueryMessageMetricsResponse; export type queryMessageMetricsResultZodOutput = z.output; @@ -27277,7 +10637,7 @@ export const zListWebhookApiVersionsPath = /* @__PURE__ */ (() => z.looseObject( /** * Published webhook payload API versions. */ -export const zListWebhookApiVersionsResult = zListWebhookApiVersionsResponse200ApplicationJson; +export const zListWebhookApiVersionsResult = zListWebhookApiVersionsResponse; export type listWebhookApiVersionsResultZodOutput = z.output; @@ -27293,11 +10653,11 @@ export const zListWebhookDestinationsQuery = z.looseObject({ /** * One page of active webhook destinations. */ -export const zListWebhookDestinationsResult = zListWebhookDestinationsResponse200ApplicationJson; +export const zListWebhookDestinationsResult = zWebhookDestinationPage; export type listWebhookDestinationsResultZodOutput = z.output; -export const zCreateWebhookDestinationBody = zCreateWebhookDestinationRequestApplicationJson; +export const zCreateWebhookDestinationBody = zCreateWebhookDestinationRequest; export const zCreateWebhookDestinationHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27308,9 +10668,9 @@ export const zCreateWebhookDestinationPath = /* @__PURE__ */ (() => z.looseObjec }))(); /** - * The created destination and its one-time signing secret. + * The created destination and its signing secret. */ -export const zCreateWebhookDestinationResult = zCreateWebhookDestinationResponse201ApplicationJson; +export const zCreateWebhookDestinationResult = zCreateWebhookDestinationResponse; export type createWebhookDestinationResultZodOutput = z.output; @@ -27322,7 +10682,7 @@ export const zDeleteWebhookDestinationPath = /* @__PURE__ */ (() => z.looseObjec /** * The stable webhook destination tombstone. */ -export const zDeleteWebhookDestinationResult = zDeleteWebhookDestinationResponse200ApplicationJson; +export const zDeleteWebhookDestinationResult = zWebhookDestination; export type deleteWebhookDestinationResultZodOutput = z.output; @@ -27334,11 +10694,11 @@ export const zGetWebhookDestinationPath = /* @__PURE__ */ (() => z.looseObject({ /** * The requested webhook destination. */ -export const zGetWebhookDestinationResult = zGetWebhookDestinationResponse200ApplicationJson; +export const zGetWebhookDestinationResult = zWebhookDestination; export type getWebhookDestinationResultZodOutput = z.output; -export const zUpdateWebhookDestinationBody = zUpdateWebhookDestinationRequestApplicationJson; +export const zUpdateWebhookDestinationBody = zUpdateWebhookDestinationRequest; export const zUpdateWebhookDestinationHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27352,11 +10712,11 @@ export const zUpdateWebhookDestinationPath = /* @__PURE__ */ (() => z.looseObjec /** * The updated webhook destination. */ -export const zUpdateWebhookDestinationResult = zUpdateWebhookDestinationResponse200ApplicationJson; +export const zUpdateWebhookDestinationResult = zWebhookDestination; export type updateWebhookDestinationResultZodOutput = z.output; -export const zRotateWebhookSigningSecretBody = zRotateWebhookSigningSecretRequestApplicationJson; +export const zRotateWebhookSigningSecretBody = zRotateWebhookSigningSecretRequest; export const zRotateWebhookSigningSecretHeaders = /* @__PURE__ */ (() => z.looseObject({ 'Idempotency-Key': z.string() @@ -27368,9 +10728,9 @@ export const zRotateWebhookSigningSecretPath = /* @__PURE__ */ (() => z.looseObj }))(); /** - * A new one-time signing secret. + * The new signing secret. */ -export const zRotateWebhookSigningSecretResult = zRotateWebhookSigningSecretResponse200ApplicationJson; +export const zRotateWebhookSigningSecretResult = zRotateWebhookSigningSecretResponse; export type rotateWebhookSigningSecretResultZodOutput = z.output; @@ -27381,7 +10741,7 @@ export const zListWebhookEgressAddressesPath = /* @__PURE__ */ (() => z.looseObj /** * The public addresses webhook deliveries originate from in this environment. */ -export const zListWebhookEgressAddressesResult = zListWebhookEgressAddressesResponse200ApplicationJson; +export const zListWebhookEgressAddressesResult = zListWebhookEgressAddressesResponse; export type listWebhookEgressAddressesResultZodOutput = z.output; @@ -27396,7 +10756,7 @@ export const zListWebhookEventTypesQuery = /* @__PURE__ */ (() => z.looseObject( /** * Events available in the selected API version. */ -export const zListWebhookEventTypesResult = zListWebhookEventTypesResponse200ApplicationJson; +export const zListWebhookEventTypesResult = zListWebhookEventTypesResponse; export type listWebhookEventTypesResultZodOutput = z.output; @@ -27412,6 +10772,6 @@ export const zGetWebhookEventSchemaQuery = /* @__PURE__ */ (() => z.looseObject( /** * The published reader JSON Schema for the event. */ -export const zGetWebhookEventSchemaResult = zGetWebhookEventSchemaResponse200ApplicationSchemaPlusJson; +export const zGetWebhookEventSchemaResult = zWebhookEventSchema; export type getWebhookEventSchemaResultZodOutput = z.output; diff --git a/packages/typescript/src/rpc.generated.ts b/packages/typescript/src/rpc.generated.ts index 944c3a2..1ba6edb 100644 --- a/packages/typescript/src/rpc.generated.ts +++ b/packages/typescript/src/rpc.generated.ts @@ -519,7 +519,8 @@ export const operationMediaTypes: Record invokers.data( + "disableOrganizationSso", + Sdk.disableOrganizationSso, + Schemas.DisableOrganizationSsoOutputSchemas, + input, + options, + ), /** * Read organization and own membership synchronization * @@ -2227,7 +2254,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { options, ), /** - * List billing plans available to a project + * List available billing plans * * Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan. */ @@ -2331,7 +2358,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Cancel operation * - * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. + * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. */ cancelOperation: (input: Schemas.CancelOperationInput, options?: RequestOptions) => invokers.data( "cancelOperation", @@ -2367,7 +2394,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Connect Telegram bot * - * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. + * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. */ connectTelegramBot: (input: Schemas.ConnectTelegramBotInput, options?: RequestOptions) => invokers.data( "connectTelegramBot", @@ -2511,7 +2538,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Get operation * - * Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. + * Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. */ getOperation: (input: Schemas.GetOperationInput, options?: RequestOptions) => invokers.data( "getOperation", @@ -2547,7 +2574,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Read SMS line campaign assignment * - * Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. + * Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. */ getSmsLineCampaignAssignment: (input: Schemas.GetSmsLineCampaignAssignmentInput, options?: RequestOptions) => invokers.data( "getSmsLineCampaignAssignment", @@ -2655,7 +2682,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * List operations * - * Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. + * Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. */ listOperations: (input: Schemas.ListOperationsInput, options?: RequestOptions) => invokers.data( "listOperations", @@ -2727,7 +2754,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Provision dedicated iMessage line * - * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. + * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. */ provisionImessageDedicatedLine: (input: Schemas.ProvisionImessageDedicatedLineInput, options?: RequestOptions) => invokers.data( "provisionImessageDedicatedLine", @@ -2739,7 +2766,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Provision dedicated WhatsApp line * - * Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. + * Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. */ provisionWhatsappDedicatedLine: (input: Schemas.ProvisionWhatsappDedicatedLineInput, options?: RequestOptions) => invokers.data( "provisionWhatsappDedicatedLine", @@ -2763,7 +2790,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Release dedicated iMessage line * - * Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. + * Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. */ releaseImessageDedicatedLine: (input: Schemas.ReleaseImessageDedicatedLineInput, options?: RequestOptions) => invokers.data( "releaseImessageDedicatedLine", @@ -2787,7 +2814,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Release dedicated WhatsApp line * - * Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. + * Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. */ releaseWhatsappDedicatedLine: (input: Schemas.ReleaseWhatsappDedicatedLineInput, options?: RequestOptions) => invokers.data( "releaseWhatsappDedicatedLine", @@ -3051,6 +3078,8 @@ export function createRpcNamespaces(invokers: RpcInvokers) { ), /** * List project API keys + * + * Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation. */ listProjectApiKeys: (input: Schemas.ListProjectApiKeysInput, options?: RequestOptions) => invokers.data( "listProjectApiKeys", @@ -3467,6 +3496,18 @@ export function createRpcNamespaces(invokers: RpcInvokers) { input, options, ), + /** + * Turn organization SSO off + * + * Deletes the provider connection, releases the SSO requirement once the connection is gone, then unbinds the chosen domains. Retry with the same Idempotency-Key to resume or await the same run. + */ + disableOrganizationSso: (input: Schemas.DisableOrganizationSsoInput, options?: RequestOptions) => invokers.raw( + "disableOrganizationSso", + Sdk.disableOrganizationSso, + Schemas.DisableOrganizationSsoOutputSchemas, + input, + options, + ), /** * Read organization and own membership synchronization * @@ -3803,7 +3844,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { options, ), /** - * List billing plans available to a project + * List available billing plans * * Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan. */ @@ -3907,7 +3948,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Cancel operation * - * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. + * Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path. */ cancelOperation: (input: Schemas.CancelOperationInput, options?: RequestOptions) => invokers.raw( "cancelOperation", @@ -3943,7 +3984,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Connect Telegram bot * - * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The BFF includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. + * Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to connect an existing managed bot or create a new one with the project's default agent name or a custom display name, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. */ connectTelegramBot: (input: Schemas.ConnectTelegramBotInput, options?: RequestOptions) => invokers.raw( "connectTelegramBot", @@ -4087,7 +4128,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Get operation * - * Reads one operation using the same operation representation as creation and list. The BFF includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. + * Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path. */ getOperation: (input: Schemas.GetOperationInput, options?: RequestOptions) => invokers.raw( "getOperation", @@ -4123,7 +4164,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Read SMS line campaign assignment * - * Read requested and observed campaign state. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. + * Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee. */ getSmsLineCampaignAssignment: (input: Schemas.GetSmsLineCampaignAssignmentInput, options?: RequestOptions) => invokers.raw( "getSmsLineCampaignAssignment", @@ -4231,7 +4272,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * List operations * - * Lists the project's operations using the same operation representation as creation and GET. The BFF includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` and `type` are comma-separated and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. + * Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. Requires the platforms:read permission bound to the project resource in the path. */ listOperations: (input: Schemas.ListOperationsInput, options?: RequestOptions) => invokers.raw( "listOperations", @@ -4303,7 +4344,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Provision dedicated iMessage line * - * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: lines come from a pool of provisioned Macs, and an empty pool is a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. Only business plans may hold one, and that is checked BEFORE any Mac is taken out of the pool; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. + * Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved; nothing is charged until a line is actually claimed. If you no longer want to wait, POST to the operation's cancel endpoint, which costs nothing. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. */ provisionImessageDedicatedLine: (input: Schemas.ProvisionImessageDedicatedLineInput, options?: RequestOptions) => invokers.raw( "provisionImessageDedicatedLine", @@ -4315,7 +4356,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Provision dedicated WhatsApp line * - * Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy WhatsApp-capable Cosmos inventory. Always answers 202 because an empty pool is a wait rather than a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. + * Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. */ provisionWhatsappDedicatedLine: (input: Schemas.ProvisionWhatsappDedicatedLineInput, options?: RequestOptions) => invokers.raw( "provisionWhatsappDedicatedLine", @@ -4339,7 +4380,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Release dedicated iMessage line * - * Removes only iMessage from one dedicated Cosmos line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. + * Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. */ releaseImessageDedicatedLine: (input: Schemas.ReleaseImessageDedicatedLineInput, options?: RequestOptions) => invokers.raw( "releaseImessageDedicatedLine", @@ -4363,7 +4404,7 @@ export function createRpcNamespaces(invokers: RpcInvokers) { /** * Release dedicated WhatsApp line * - * Removes only WhatsApp from one dedicated Cosmos line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. + * Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. */ releaseWhatsappDedicatedLine: (input: Schemas.ReleaseWhatsappDedicatedLineInput, options?: RequestOptions) => invokers.raw( "releaseWhatsappDedicatedLine", @@ -4627,6 +4668,8 @@ export function createRpcNamespaces(invokers: RpcInvokers) { ), /** * List project API keys + * + * Lists the API keys on the selected project, ordered newest first. Revoked keys are not listed; expired keys stay listed until they are revoked. Entries contain key metadata and permissions, never secret values. Use the returned identifiers to manage an existing key; lost secrets cannot be recovered through this operation. */ listProjectApiKeys: (input: Schemas.ListProjectApiKeysInput, options?: RequestOptions) => invokers.raw( "listProjectApiKeys", diff --git a/packages/typescript/src/schemas.ts b/packages/typescript/src/schemas.ts index 10a9cac..ef83c52 100644 --- a/packages/typescript/src/schemas.ts +++ b/packages/typescript/src/schemas.ts @@ -21,11 +21,11 @@ export type AssignSmsLineCampaignInput = { }; }; -export const AssignSmsLineCampaignOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zAssignSmsLineCampaignResponse200ApplicationJson, GeneratedZod.zAssignSmsLineCampaignResponse202ApplicationJson]))(); +export const AssignSmsLineCampaignOutputSchema = GeneratedZod.zOperation; export type AssignSmsLineCampaignOutput = z.output; export const AssignSmsLineCampaignOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zAssignSmsLineCampaignResponse200ApplicationJson, - "202": GeneratedZod.zAssignSmsLineCampaignResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const AssignVoiceLineProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -37,10 +37,10 @@ export type AssignVoiceLineProfileInput = { path: NonNullable; }; -export const AssignVoiceLineProfileOutputSchema = GeneratedZod.zAssignVoiceLineProfileResponse200ApplicationJson; +export const AssignVoiceLineProfileOutputSchema = GeneratedZod.zVoiceLineProfileAssignment; export type AssignVoiceLineProfileOutput = z.output; export const AssignVoiceLineProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zAssignVoiceLineProfileResponse200ApplicationJson, + "200": GeneratedZod.zVoiceLineProfileAssignment, }))(); export const BatchUpdateVoiceLineProfileAssignmentsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -52,10 +52,10 @@ export type BatchUpdateVoiceLineProfileAssignmentsInput = { path: NonNullable; }; -export const BatchUpdateVoiceLineProfileAssignmentsOutputSchema = GeneratedZod.zBatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson; +export const BatchUpdateVoiceLineProfileAssignmentsOutputSchema = GeneratedZod.zBatchUpdateVoiceLineProfileAssignmentsResponse; export type BatchUpdateVoiceLineProfileAssignmentsOutput = z.output; export const BatchUpdateVoiceLineProfileAssignmentsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zBatchUpdateVoiceLineProfileAssignmentsResponse200ApplicationJson, + "200": GeneratedZod.zBatchUpdateVoiceLineProfileAssignmentsResponse, }))(); export const BeginInvitationSsoInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -67,10 +67,10 @@ export type BeginInvitationSsoInput = { path: NonNullable; }; -export const BeginInvitationSsoOutputSchema = GeneratedZod.zBeginInvitationSsoResponse200ApplicationJson; +export const BeginInvitationSsoOutputSchema = GeneratedZod.zOrganizationAuthenticationRedirect; export type BeginInvitationSsoOutput = z.output; export const BeginInvitationSsoOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zBeginInvitationSsoResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationAuthenticationRedirect, }))(); export const BeginOrganizationAuthenticationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -82,10 +82,10 @@ export type BeginOrganizationAuthenticationInput = { path: NonNullable; }; -export const BeginOrganizationAuthenticationOutputSchema = GeneratedZod.zBeginOrganizationAuthenticationResponse200ApplicationJson; +export const BeginOrganizationAuthenticationOutputSchema = GeneratedZod.zOrganizationAuthenticationRedirect; export type BeginOrganizationAuthenticationOutput = z.output; export const BeginOrganizationAuthenticationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zBeginOrganizationAuthenticationResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationAuthenticationRedirect, }))(); export const BeginOrganizationClosureAuthenticationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -97,10 +97,10 @@ export type BeginOrganizationClosureAuthenticationInput = { path: NonNullable; }; -export const BeginOrganizationClosureAuthenticationOutputSchema = GeneratedZod.zBeginOrganizationClosureAuthenticationResponse200ApplicationJson; +export const BeginOrganizationClosureAuthenticationOutputSchema = GeneratedZod.zOrganizationAuthenticationRedirect; export type BeginOrganizationClosureAuthenticationOutput = z.output; export const BeginOrganizationClosureAuthenticationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zBeginOrganizationClosureAuthenticationResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationAuthenticationRedirect, }))(); export const BeginOrganizationSsoAdmissionInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -112,10 +112,10 @@ export type BeginOrganizationSsoAdmissionInput = { path: NonNullable; }; -export const BeginOrganizationSsoAdmissionOutputSchema = GeneratedZod.zBeginOrganizationSsoAdmissionResponse200ApplicationJson; +export const BeginOrganizationSsoAdmissionOutputSchema = GeneratedZod.zOrganizationAuthenticationRedirect; export type BeginOrganizationSsoAdmissionOutput = z.output; export const BeginOrganizationSsoAdmissionOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zBeginOrganizationSsoAdmissionResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationAuthenticationRedirect, }))(); export const CancelOperationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -125,10 +125,10 @@ export type CancelOperationInput = { path: NonNullable; }; -export const CancelOperationOutputSchema = GeneratedZod.zCancelOperationResponse200ApplicationJson; +export const CancelOperationOutputSchema = GeneratedZod.zOperation; export type CancelOperationOutput = z.output; export const CancelOperationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCancelOperationResponse200ApplicationJson, + "200": GeneratedZod.zOperation, }))(); export const CancelSubscriptionInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -146,10 +146,10 @@ export type CancelSubscriptionInput = { }; }; -export const CancelSubscriptionOutputSchema = GeneratedZod.zCancelSubscriptionResponse200ApplicationJson; +export const CancelSubscriptionOutputSchema = GeneratedZod.zCancelSubscriptionResponse; export type CancelSubscriptionOutput = z.output; export const CancelSubscriptionOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCancelSubscriptionResponse200ApplicationJson, + "200": GeneratedZod.zCancelSubscriptionResponse, }))(); export const ChangePlanInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -167,11 +167,11 @@ export type ChangePlanInput = { }; }; -export const ChangePlanOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zChangePlanResponse200ApplicationJson, GeneratedZod.zChangePlanResponse202ApplicationJson]))(); +export const ChangePlanOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zTerminalBillingOperation, GeneratedZod.zPendingBillingOperation]))(); export type ChangePlanOutput = z.output; export const ChangePlanOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zChangePlanResponse200ApplicationJson, - "202": GeneratedZod.zChangePlanResponse202ApplicationJson, + "200": GeneratedZod.zTerminalBillingOperation, + "202": GeneratedZod.zPendingBillingOperation, }))(); export const CheckProjectSlugAvailabilityInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -183,10 +183,10 @@ export type CheckProjectSlugAvailabilityInput = { query: NonNullable; }; -export const CheckProjectSlugAvailabilityOutputSchema = GeneratedZod.zCheckProjectSlugAvailabilityResponse200ApplicationJson; +export const CheckProjectSlugAvailabilityOutputSchema = GeneratedZod.zCheckProjectSlugAvailabilityResponse; export type CheckProjectSlugAvailabilityOutput = z.output; export const CheckProjectSlugAvailabilityOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCheckProjectSlugAvailabilityResponse200ApplicationJson, + "200": GeneratedZod.zCheckProjectSlugAvailabilityResponse, }))(); export const CommitAccountProfilePictureInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -202,10 +202,10 @@ export type CommitAccountProfilePictureInput = { }; }; -export const CommitAccountProfilePictureOutputSchema = GeneratedZod.zCommitAccountProfilePictureResponse200ApplicationJson; +export const CommitAccountProfilePictureOutputSchema = GeneratedZod.zAccount; export type CommitAccountProfilePictureOutput = z.output; export const CommitAccountProfilePictureOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCommitAccountProfilePictureResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const CommitAgentProfileAvatarInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -223,10 +223,10 @@ export type CommitAgentProfileAvatarInput = { }; }; -export const CommitAgentProfileAvatarOutputSchema = GeneratedZod.zCommitAgentProfileAvatarResponse200ApplicationJson; +export const CommitAgentProfileAvatarOutputSchema = GeneratedZod.zAgentProfile; export type CommitAgentProfileAvatarOutput = z.output; export const CommitAgentProfileAvatarOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCommitAgentProfileAvatarResponse200ApplicationJson, + "200": GeneratedZod.zAgentProfile, }))(); export const ConfigureVoiceProfileOutboundInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -244,11 +244,11 @@ export type ConfigureVoiceProfileOutboundInput = { }; }; -export const ConfigureVoiceProfileOutboundOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zConfigureVoiceProfileOutboundResponse200ApplicationJson, GeneratedZod.zConfigureVoiceProfileOutboundResponse201ApplicationJson]))(); +export const ConfigureVoiceProfileOutboundOutputSchema = GeneratedZod.zConfigureVoiceProfileOutboundResponse; export type ConfigureVoiceProfileOutboundOutput = z.output; export const ConfigureVoiceProfileOutboundOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zConfigureVoiceProfileOutboundResponse200ApplicationJson, - "201": GeneratedZod.zConfigureVoiceProfileOutboundResponse201ApplicationJson, + "200": GeneratedZod.zConfigureVoiceProfileOutboundResponse, + "201": GeneratedZod.zConfigureVoiceProfileOutboundResponse, }))(); export const ConfirmAccountPhoneVerificationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -258,10 +258,10 @@ export type ConfirmAccountPhoneVerificationInput = { body: WireTypes.ConfirmAccountPhoneVerificationData["body"]; }; -export const ConfirmAccountPhoneVerificationOutputSchema = GeneratedZod.zConfirmAccountPhoneVerificationResponse200ApplicationJson; +export const ConfirmAccountPhoneVerificationOutputSchema = GeneratedZod.zAccount; export type ConfirmAccountPhoneVerificationOutput = z.output; export const ConfirmAccountPhoneVerificationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zConfirmAccountPhoneVerificationResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const ConnectEmailDomainInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -279,10 +279,10 @@ export type ConnectEmailDomainInput = { }; }; -export const ConnectEmailDomainOutputSchema = GeneratedZod.zConnectEmailDomainResponse202ApplicationJson; +export const ConnectEmailDomainOutputSchema = GeneratedZod.zOperation; export type ConnectEmailDomainOutput = z.output; export const ConnectEmailDomainOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zConnectEmailDomainResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const ConnectTelegramBotInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -300,10 +300,10 @@ export type ConnectTelegramBotInput = { }; }; -export const ConnectTelegramBotOutputSchema = GeneratedZod.zConnectTelegramBotResponse202ApplicationJson; +export const ConnectTelegramBotOutputSchema = GeneratedZod.zOperation; export type ConnectTelegramBotOutput = z.output; export const ConnectTelegramBotOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zConnectTelegramBotResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const ConnectWhatsappBusinessInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -321,10 +321,10 @@ export type ConnectWhatsappBusinessInput = { }; }; -export const ConnectWhatsappBusinessOutputSchema = GeneratedZod.zConnectWhatsappBusinessResponse202ApplicationJson; +export const ConnectWhatsappBusinessOutputSchema = GeneratedZod.zOperation; export type ConnectWhatsappBusinessOutput = z.output; export const ConnectWhatsappBusinessOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zConnectWhatsappBusinessResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const CountProjectsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -336,10 +336,10 @@ export type CountProjectsInput = { query?: NonNullable; }; -export const CountProjectsOutputSchema = GeneratedZod.zCountProjectsResponse200ApplicationJson; +export const CountProjectsOutputSchema = GeneratedZod.zProjectCount; export type CountProjectsOutput = z.output; export const CountProjectsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCountProjectsResponse200ApplicationJson, + "200": GeneratedZod.zProjectCount, }))(); export const CreateAccountProfilePictureUploadInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -349,10 +349,10 @@ export type CreateAccountProfilePictureUploadInput = { body: WireTypes.CreateAccountProfilePictureUploadData["body"]; }; -export const CreateAccountProfilePictureUploadOutputSchema = GeneratedZod.zCreateAccountProfilePictureUploadResponse201ApplicationJson; +export const CreateAccountProfilePictureUploadOutputSchema = GeneratedZod.zProfilePictureUpload; export type CreateAccountProfilePictureUploadOutput = z.output; export const CreateAccountProfilePictureUploadOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateAccountProfilePictureUploadResponse201ApplicationJson, + "201": GeneratedZod.zProfilePictureUpload, }))(); export const CreateAccountServiceKeyInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -368,10 +368,10 @@ export type CreateAccountServiceKeyInput = { }; }; -export const CreateAccountServiceKeyOutputSchema = GeneratedZod.zCreateAccountServiceKeyResponse201ApplicationJson; +export const CreateAccountServiceKeyOutputSchema = GeneratedZod.zCreateAccountServiceKeyResponse; export type CreateAccountServiceKeyOutput = z.output; export const CreateAccountServiceKeyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateAccountServiceKeyResponse201ApplicationJson, + "201": GeneratedZod.zCreateAccountServiceKeyResponse, }))(); export const CreateAgentProfileAvatarUploadInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -383,10 +383,10 @@ export type CreateAgentProfileAvatarUploadInput = { path: NonNullable; }; -export const CreateAgentProfileAvatarUploadOutputSchema = GeneratedZod.zCreateAgentProfileAvatarUploadResponse201ApplicationJson; +export const CreateAgentProfileAvatarUploadOutputSchema = GeneratedZod.zAgentProfileAvatarUpload; export type CreateAgentProfileAvatarUploadOutput = z.output; export const CreateAgentProfileAvatarUploadOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateAgentProfileAvatarUploadResponse201ApplicationJson, + "201": GeneratedZod.zAgentProfileAvatarUpload, }))(); export const CreateAppInstallationRequestInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -396,10 +396,10 @@ export type CreateAppInstallationRequestInput = { body: WireTypes.CreateAppInstallationRequestData["body"]; }; -export const CreateAppInstallationRequestOutputSchema = GeneratedZod.zCreateAppInstallationRequestResponse201ApplicationJson; +export const CreateAppInstallationRequestOutputSchema = GeneratedZod.zCreateAppInstallationRequestResponse; export type CreateAppInstallationRequestOutput = z.output; export const CreateAppInstallationRequestOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateAppInstallationRequestResponse201ApplicationJson, + "201": GeneratedZod.zCreateAppInstallationRequestResponse, }))(); export const CreateDefaultVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -411,11 +411,11 @@ export type CreateDefaultVoiceProfileInput = { path: NonNullable; }; -export const CreateDefaultVoiceProfileOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zCreateDefaultVoiceProfileResponse200ApplicationJson, GeneratedZod.zCreateDefaultVoiceProfileResponse201ApplicationJson]))(); +export const CreateDefaultVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type CreateDefaultVoiceProfileOutput = z.output; export const CreateDefaultVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCreateDefaultVoiceProfileResponse200ApplicationJson, - "201": GeneratedZod.zCreateDefaultVoiceProfileResponse201ApplicationJson, + "200": GeneratedZod.zVoiceProfile, + "201": GeneratedZod.zVoiceProfile, }))(); export const CreateOrganizationPaymentMethodCheckoutInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -431,10 +431,10 @@ export type CreateOrganizationPaymentMethodCheckoutInput = { }; }; -export const CreateOrganizationPaymentMethodCheckoutOutputSchema = GeneratedZod.zCreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson; +export const CreateOrganizationPaymentMethodCheckoutOutputSchema = GeneratedZod.zCreateOrganizationPaymentMethodCheckoutResponse; export type CreateOrganizationPaymentMethodCheckoutOutput = z.output; export const CreateOrganizationPaymentMethodCheckoutOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCreateOrganizationPaymentMethodCheckoutResponse200ApplicationJson, + "200": GeneratedZod.zCreateOrganizationPaymentMethodCheckoutResponse, }))(); export const CreateOrganizationSetupIntentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -450,10 +450,10 @@ export type CreateOrganizationSetupIntentInput = { }; }; -export const CreateOrganizationSetupIntentOutputSchema = GeneratedZod.zCreateOrganizationSetupIntentResponse200ApplicationJson; +export const CreateOrganizationSetupIntentOutputSchema = GeneratedZod.zCreateOrganizationSetupIntentResponse; export type CreateOrganizationSetupIntentOutput = z.output; export const CreateOrganizationSetupIntentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCreateOrganizationSetupIntentResponse200ApplicationJson, + "200": GeneratedZod.zCreateOrganizationSetupIntentResponse, }))(); export const CreateOrganizationSsoPortalLinkInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -465,10 +465,10 @@ export type CreateOrganizationSsoPortalLinkInput = { path: NonNullable; }; -export const CreateOrganizationSsoPortalLinkOutputSchema = GeneratedZod.zCreateOrganizationSsoPortalLinkResponse200ApplicationJson; +export const CreateOrganizationSsoPortalLinkOutputSchema = GeneratedZod.zCreateOrganizationSsoPortalLinkResponse; export type CreateOrganizationSsoPortalLinkOutput = z.output; export const CreateOrganizationSsoPortalLinkOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zCreateOrganizationSsoPortalLinkResponse200ApplicationJson, + "200": GeneratedZod.zCreateOrganizationSsoPortalLinkResponse, }))(); export const CreateProjectInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -486,10 +486,10 @@ export type CreateProjectInput = { }; }; -export const CreateProjectOutputSchema = GeneratedZod.zCreateProjectResponse201ApplicationJson; +export const CreateProjectOutputSchema = GeneratedZod.zProject; export type CreateProjectOutput = z.output; export const CreateProjectOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateProjectResponse201ApplicationJson, + "201": GeneratedZod.zProject, }))(); export const CreateProjectApiKeyInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -507,10 +507,10 @@ export type CreateProjectApiKeyInput = { }; }; -export const CreateProjectApiKeyOutputSchema = GeneratedZod.zCreateProjectApiKeyResponse201ApplicationJson; +export const CreateProjectApiKeyOutputSchema = GeneratedZod.zCreateProjectApiKeyResponse; export type CreateProjectApiKeyOutput = z.output; export const CreateProjectApiKeyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateProjectApiKeyResponse201ApplicationJson, + "201": GeneratedZod.zCreateProjectApiKeyResponse, }))(); export const CreateSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -528,10 +528,10 @@ export type CreateSharedLineAssignmentInput = { }; }; -export const CreateSharedLineAssignmentOutputSchema = GeneratedZod.zCreateSharedLineAssignmentResponse201ApplicationJson; +export const CreateSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type CreateSharedLineAssignmentOutput = z.output; export const CreateSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateSharedLineAssignmentResponse201ApplicationJson, + "201": GeneratedZod.zSharedLineAssignment, }))(); export const CreateVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -543,10 +543,10 @@ export type CreateVoiceProfileInput = { path: NonNullable; }; -export const CreateVoiceProfileOutputSchema = GeneratedZod.zCreateVoiceProfileResponse201ApplicationJson; +export const CreateVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type CreateVoiceProfileOutput = z.output; export const CreateVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateVoiceProfileResponse201ApplicationJson, + "201": GeneratedZod.zVoiceProfile, }))(); export const CreateWebhookDestinationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -564,10 +564,10 @@ export type CreateWebhookDestinationInput = { }; }; -export const CreateWebhookDestinationOutputSchema = GeneratedZod.zCreateWebhookDestinationResponse201ApplicationJson; +export const CreateWebhookDestinationOutputSchema = GeneratedZod.zCreateWebhookDestinationResponse; export type CreateWebhookDestinationOutput = z.output; export const CreateWebhookDestinationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateWebhookDestinationResponse201ApplicationJson, + "201": GeneratedZod.zCreateWebhookDestinationResponse, }))(); export const CreateWhatsappSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -585,10 +585,10 @@ export type CreateWhatsappSharedLineAssignmentInput = { }; }; -export const CreateWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zCreateWhatsappSharedLineAssignmentResponse201ApplicationJson; +export const CreateWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type CreateWhatsappSharedLineAssignmentOutput = z.output; export const CreateWhatsappSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zCreateWhatsappSharedLineAssignmentResponse201ApplicationJson, + "201": GeneratedZod.zSharedLineAssignment, }))(); export const CreateWhatsappVoipSenderInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -606,10 +606,10 @@ export type CreateWhatsappVoipSenderInput = { }; }; -export const CreateWhatsappVoipSenderOutputSchema = GeneratedZod.zCreateWhatsappVoipSenderResponse202ApplicationJson; +export const CreateWhatsappVoipSenderOutputSchema = GeneratedZod.zOperation; export type CreateWhatsappVoipSenderOutput = z.output; export const CreateWhatsappVoipSenderOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zCreateWhatsappVoipSenderResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const DeleteAccountInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -617,10 +617,10 @@ export const DeleteAccountInputSchema = /* @__PURE__ */ (() => z.strictObject({ }))(); export type DeleteAccountInput = Record; -export const DeleteAccountOutputSchema = GeneratedZod.zDeleteAccountResponse200ApplicationJson; +export const DeleteAccountOutputSchema = GeneratedZod.zAccount; export type DeleteAccountOutput = z.output; export const DeleteAccountOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeleteAccountResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const DeleteProjectInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -636,10 +636,10 @@ export type DeleteProjectInput = { }; }; -export const DeleteProjectOutputSchema = GeneratedZod.zDeleteProjectResponse200ApplicationJson; +export const DeleteProjectOutputSchema = GeneratedZod.zProject; export type DeleteProjectOutput = z.output; export const DeleteProjectOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeleteProjectResponse200ApplicationJson, + "200": GeneratedZod.zProject, }))(); export const DeleteVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -666,10 +666,10 @@ export type DeleteVoiceProfileInboundInput = { query: NonNullable; }; -export const DeleteVoiceProfileInboundOutputSchema = GeneratedZod.zDeleteVoiceProfileInboundResponse200ApplicationJson; +export const DeleteVoiceProfileInboundOutputSchema = GeneratedZod.zVoiceProfileInboundConfiguration; export type DeleteVoiceProfileInboundOutput = z.output; export const DeleteVoiceProfileInboundOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeleteVoiceProfileInboundResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfileInboundConfiguration, }))(); export const DeleteVoiceProfileOutboundInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -681,10 +681,10 @@ export type DeleteVoiceProfileOutboundInput = { query: NonNullable; }; -export const DeleteVoiceProfileOutboundOutputSchema = GeneratedZod.zDeleteVoiceProfileOutboundResponse200ApplicationJson; +export const DeleteVoiceProfileOutboundOutputSchema = GeneratedZod.zDeleteVoiceProfileOutboundResponse; export type DeleteVoiceProfileOutboundOutput = z.output; export const DeleteVoiceProfileOutboundOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeleteVoiceProfileOutboundResponse200ApplicationJson, + "200": GeneratedZod.zDeleteVoiceProfileOutboundResponse, }))(); export const DeleteWebhookDestinationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -694,10 +694,10 @@ export type DeleteWebhookDestinationInput = { path: NonNullable; }; -export const DeleteWebhookDestinationOutputSchema = GeneratedZod.zDeleteWebhookDestinationResponse200ApplicationJson; +export const DeleteWebhookDestinationOutputSchema = GeneratedZod.zWebhookDestination; export type DeleteWebhookDestinationOutput = z.output; export const DeleteWebhookDestinationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeleteWebhookDestinationResponse200ApplicationJson, + "200": GeneratedZod.zWebhookDestination, }))(); export const DeviceAuthorizeInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -705,10 +705,10 @@ export const DeviceAuthorizeInputSchema = /* @__PURE__ */ (() => z.strictObject( }))(); export type DeviceAuthorizeInput = Record; -export const DeviceAuthorizeOutputSchema = GeneratedZod.zDeviceAuthorizeResponse200ApplicationJson; +export const DeviceAuthorizeOutputSchema = GeneratedZod.zDeviceAuthorizeResponse; export type DeviceAuthorizeOutput = z.output; export const DeviceAuthorizeOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeviceAuthorizeResponse200ApplicationJson, + "200": GeneratedZod.zDeviceAuthorizeResponse, }))(); export const DeviceTokenInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -718,10 +718,31 @@ export type DeviceTokenInput = { body: WireTypes.DeviceTokenData["body"]; }; -export const DeviceTokenOutputSchema = GeneratedZod.zDeviceTokenResponse200ApplicationJson; +export const DeviceTokenOutputSchema = GeneratedZod.zDeviceTokenResponse; export type DeviceTokenOutput = z.output; export const DeviceTokenOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDeviceTokenResponse200ApplicationJson, + "200": GeneratedZod.zDeviceTokenResponse, +}))(); + +export const DisableOrganizationSsoInputSchema = /* @__PURE__ */ (() => z.strictObject({ + body: GeneratedZod.zDisableOrganizationSsoBody, + path: GeneratedZod.zDisableOrganizationSsoPath.strict(), + headers: z.strictObject({ + idempotencyKey: GeneratedZod.zDisableOrganizationSsoHeaders.shape["Idempotency-Key"], + }), +}))(); +export type DisableOrganizationSsoInput = { + body: WireTypes.DisableOrganizationSsoData["body"]; + path: NonNullable; + headers: { + idempotencyKey: NonNullable["Idempotency-Key"]; + }; +}; + +export const DisableOrganizationSsoOutputSchema = GeneratedZod.zOrganizationSsoConfiguration; +export type DisableOrganizationSsoOutput = z.output; +export const DisableOrganizationSsoOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ + "200": GeneratedZod.zOrganizationSsoConfiguration, }))(); export const DisconnectWhatsappBusinessAccountInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -737,11 +758,11 @@ export type DisconnectWhatsappBusinessAccountInput = { }; }; -export const DisconnectWhatsappBusinessAccountOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zDisconnectWhatsappBusinessAccountResponse200ApplicationJson, GeneratedZod.zDisconnectWhatsappBusinessAccountResponse202ApplicationJson]))(); +export const DisconnectWhatsappBusinessAccountOutputSchema = GeneratedZod.zOperation; export type DisconnectWhatsappBusinessAccountOutput = z.output; export const DisconnectWhatsappBusinessAccountOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zDisconnectWhatsappBusinessAccountResponse200ApplicationJson, - "202": GeneratedZod.zDisconnectWhatsappBusinessAccountResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const DownloadAttachmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -762,10 +783,10 @@ export const GetAccountInputSchema = /* @__PURE__ */ (() => z.strictObject({ }))(); export type GetAccountInput = Record; -export const GetAccountOutputSchema = GeneratedZod.zGetAccountResponse200ApplicationJson; +export const GetAccountOutputSchema = GeneratedZod.zAccount; export type GetAccountOutput = z.output; export const GetAccountOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetAccountResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const GetAgentProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -775,10 +796,10 @@ export type GetAgentProfileInput = { path: NonNullable; }; -export const GetAgentProfileOutputSchema = GeneratedZod.zGetAgentProfileResponse200ApplicationJson; +export const GetAgentProfileOutputSchema = GeneratedZod.zAgentProfile; export type GetAgentProfileOutput = z.output; export const GetAgentProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetAgentProfileResponse200ApplicationJson, + "200": GeneratedZod.zAgentProfile, }))(); export const GetAttachmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -788,10 +809,10 @@ export type GetAttachmentInput = { path: NonNullable; }; -export const GetAttachmentOutputSchema = GeneratedZod.zGetAttachmentResponse200ApplicationJson; +export const GetAttachmentOutputSchema = GeneratedZod.zAttachment; export type GetAttachmentOutput = z.output; export const GetAttachmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetAttachmentResponse200ApplicationJson, + "200": GeneratedZod.zAttachment, }))(); export const GetBillingOperationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -801,10 +822,10 @@ export type GetBillingOperationInput = { path: NonNullable; }; -export const GetBillingOperationOutputSchema = GeneratedZod.zGetBillingOperationResponse200ApplicationJson; +export const GetBillingOperationOutputSchema = GeneratedZod.zBillingOperation; export type GetBillingOperationOutput = z.output; export const GetBillingOperationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetBillingOperationResponse200ApplicationJson, + "200": GeneratedZod.zBillingOperation, }))(); export const GetBillingOverviewInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -814,10 +835,10 @@ export type GetBillingOverviewInput = { path: NonNullable; }; -export const GetBillingOverviewOutputSchema = GeneratedZod.zGetBillingOverviewResponse200ApplicationJson; +export const GetBillingOverviewOutputSchema = GeneratedZod.zGetBillingOverviewResponse; export type GetBillingOverviewOutput = z.output; export const GetBillingOverviewOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetBillingOverviewResponse200ApplicationJson, + "200": GeneratedZod.zGetBillingOverviewResponse, }))(); export const GetDefaultVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -827,10 +848,10 @@ export type GetDefaultVoiceProfileInput = { path: NonNullable; }; -export const GetDefaultVoiceProfileOutputSchema = GeneratedZod.zGetDefaultVoiceProfileResponse200ApplicationJson; +export const GetDefaultVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type GetDefaultVoiceProfileOutput = z.output; export const GetDefaultVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetDefaultVoiceProfileResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfile, }))(); export const GetMessageMetricsBackfillInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -846,10 +867,10 @@ export type GetMessageMetricsBackfillInput = { }; }; -export const GetMessageMetricsBackfillOutputSchema = GeneratedZod.zGetMessageMetricsBackfillResponse200ApplicationJson; +export const GetMessageMetricsBackfillOutputSchema = GeneratedZod.zGetMessageMetricsBackfillResponse; export type GetMessageMetricsBackfillOutput = z.output; export const GetMessageMetricsBackfillOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetMessageMetricsBackfillResponse200ApplicationJson, + "200": GeneratedZod.zGetMessageMetricsBackfillResponse, }))(); export const GetMessageMetricsSqlSchemaInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -865,10 +886,10 @@ export type GetMessageMetricsSqlSchemaInput = { }; }; -export const GetMessageMetricsSqlSchemaOutputSchema = GeneratedZod.zGetMessageMetricsSqlSchemaResponse200ApplicationJson; +export const GetMessageMetricsSqlSchemaOutputSchema = GeneratedZod.zGetMessageMetricsSqlSchemaResponse; export type GetMessageMetricsSqlSchemaOutput = z.output; export const GetMessageMetricsSqlSchemaOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetMessageMetricsSqlSchemaResponse200ApplicationJson, + "200": GeneratedZod.zGetMessageMetricsSqlSchemaResponse, }))(); export const GetOperationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -878,10 +899,10 @@ export type GetOperationInput = { path: NonNullable; }; -export const GetOperationOutputSchema = GeneratedZod.zGetOperationResponse200ApplicationJson; +export const GetOperationOutputSchema = GeneratedZod.zGetOperationResponse; export type GetOperationOutput = z.output; export const GetOperationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetOperationResponse200ApplicationJson, + "200": GeneratedZod.zGetOperationResponse, }))(); export const GetOrganizationBillingOverviewInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -891,10 +912,10 @@ export type GetOrganizationBillingOverviewInput = { path: NonNullable; }; -export const GetOrganizationBillingOverviewOutputSchema = GeneratedZod.zGetOrganizationBillingOverviewResponse200ApplicationJson; +export const GetOrganizationBillingOverviewOutputSchema = GeneratedZod.zGetOrganizationBillingOverviewResponse; export type GetOrganizationBillingOverviewOutput = z.output; export const GetOrganizationBillingOverviewOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetOrganizationBillingOverviewResponse200ApplicationJson, + "200": GeneratedZod.zGetOrganizationBillingOverviewResponse, }))(); export const GetOrganizationConnectionStatusInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -904,10 +925,10 @@ export type GetOrganizationConnectionStatusInput = { path: NonNullable; }; -export const GetOrganizationConnectionStatusOutputSchema = GeneratedZod.zGetOrganizationConnectionStatusResponse200ApplicationJson; +export const GetOrganizationConnectionStatusOutputSchema = GeneratedZod.zOrganizationConnectionStatus; export type GetOrganizationConnectionStatusOutput = z.output; export const GetOrganizationConnectionStatusOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetOrganizationConnectionStatusResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationConnectionStatus, }))(); export const GetOrganizationPaymentMethodInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -917,10 +938,10 @@ export type GetOrganizationPaymentMethodInput = { path: NonNullable; }; -export const GetOrganizationPaymentMethodOutputSchema = GeneratedZod.zGetOrganizationPaymentMethodResponse200ApplicationJson; +export const GetOrganizationPaymentMethodOutputSchema = GeneratedZod.zGetOrganizationPaymentMethodResponse; export type GetOrganizationPaymentMethodOutput = z.output; export const GetOrganizationPaymentMethodOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetOrganizationPaymentMethodResponse200ApplicationJson, + "200": GeneratedZod.zGetOrganizationPaymentMethodResponse, }))(); export const GetOrganizationSsoConfigurationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -930,10 +951,10 @@ export type GetOrganizationSsoConfigurationInput = { path: NonNullable; }; -export const GetOrganizationSsoConfigurationOutputSchema = GeneratedZod.zGetOrganizationSsoConfigurationResponse200ApplicationJson; +export const GetOrganizationSsoConfigurationOutputSchema = GeneratedZod.zOrganizationSsoConfiguration; export type GetOrganizationSsoConfigurationOutput = z.output; export const GetOrganizationSsoConfigurationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetOrganizationSsoConfigurationResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationSsoConfiguration, }))(); export const GetProjectInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -943,10 +964,10 @@ export type GetProjectInput = { path: NonNullable; }; -export const GetProjectOutputSchema = GeneratedZod.zGetProjectResponse200ApplicationJson; +export const GetProjectOutputSchema = GeneratedZod.zProject; export type GetProjectOutput = z.output; export const GetProjectOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetProjectResponse200ApplicationJson, + "200": GeneratedZod.zProject, }))(); export const GetProjectClosureStatusInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -958,10 +979,10 @@ export type GetProjectClosureStatusInput = { query: NonNullable; }; -export const GetProjectClosureStatusOutputSchema = GeneratedZod.zGetProjectClosureStatusResponse200ApplicationJson; +export const GetProjectClosureStatusOutputSchema = GeneratedZod.zGetProjectClosureStatusResponse; export type GetProjectClosureStatusOutput = z.output; export const GetProjectClosureStatusOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetProjectClosureStatusResponse200ApplicationJson, + "200": GeneratedZod.zGetProjectClosureStatusResponse, }))(); export const GetProjectImessagePlatformInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -971,10 +992,10 @@ export type GetProjectImessagePlatformInput = { path: NonNullable; }; -export const GetProjectImessagePlatformOutputSchema = GeneratedZod.zGetProjectImessagePlatformResponse200ApplicationJson; +export const GetProjectImessagePlatformOutputSchema = GeneratedZod.zProjectPlatformSettings; export type GetProjectImessagePlatformOutput = z.output; export const GetProjectImessagePlatformOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetProjectImessagePlatformResponse200ApplicationJson, + "200": GeneratedZod.zProjectPlatformSettings, }))(); export const GetProjectWhatsappPlatformInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -984,10 +1005,10 @@ export type GetProjectWhatsappPlatformInput = { path: NonNullable; }; -export const GetProjectWhatsappPlatformOutputSchema = GeneratedZod.zGetProjectWhatsappPlatformResponse200ApplicationJson; +export const GetProjectWhatsappPlatformOutputSchema = GeneratedZod.zProjectPlatformSettings; export type GetProjectWhatsappPlatformOutput = z.output; export const GetProjectWhatsappPlatformOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetProjectWhatsappPlatformResponse200ApplicationJson, + "200": GeneratedZod.zProjectPlatformSettings, }))(); export const GetResourceInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -997,10 +1018,10 @@ export type GetResourceInput = { path: NonNullable; }; -export const GetResourceOutputSchema = GeneratedZod.zGetResourceResponse200ApplicationJson; +export const GetResourceOutputSchema = GeneratedZod.zResource; export type GetResourceOutput = z.output; export const GetResourceOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetResourceResponse200ApplicationJson, + "200": GeneratedZod.zResource, }))(); export const GetSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1010,10 +1031,10 @@ export type GetSharedLineAssignmentInput = { path: NonNullable; }; -export const GetSharedLineAssignmentOutputSchema = GeneratedZod.zGetSharedLineAssignmentResponse200ApplicationJson; +export const GetSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type GetSharedLineAssignmentOutput = z.output; export const GetSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetSharedLineAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignment, }))(); export const GetSmsLineCampaignAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1023,10 +1044,10 @@ export type GetSmsLineCampaignAssignmentInput = { path: NonNullable; }; -export const GetSmsLineCampaignAssignmentOutputSchema = GeneratedZod.zGetSmsLineCampaignAssignmentResponse200ApplicationJson; +export const GetSmsLineCampaignAssignmentOutputSchema = GeneratedZod.zGetSmsLineCampaignAssignmentResponse; export type GetSmsLineCampaignAssignmentOutput = z.output; export const GetSmsLineCampaignAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetSmsLineCampaignAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zGetSmsLineCampaignAssignmentResponse, }))(); export const GetVoiceLineProfileAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1036,10 +1057,10 @@ export type GetVoiceLineProfileAssignmentInput = { path: NonNullable; }; -export const GetVoiceLineProfileAssignmentOutputSchema = GeneratedZod.zGetVoiceLineProfileAssignmentResponse200ApplicationJson; +export const GetVoiceLineProfileAssignmentOutputSchema = GeneratedZod.zVoiceLineProfileAssignment; export type GetVoiceLineProfileAssignmentOutput = z.output; export const GetVoiceLineProfileAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetVoiceLineProfileAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zVoiceLineProfileAssignment, }))(); export const GetVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1049,10 +1070,10 @@ export type GetVoiceProfileInput = { path: NonNullable; }; -export const GetVoiceProfileOutputSchema = GeneratedZod.zGetVoiceProfileResponse200ApplicationJson; +export const GetVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type GetVoiceProfileOutput = z.output; export const GetVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetVoiceProfileResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfile, }))(); export const GetWebhookDestinationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1062,10 +1083,10 @@ export type GetWebhookDestinationInput = { path: NonNullable; }; -export const GetWebhookDestinationOutputSchema = GeneratedZod.zGetWebhookDestinationResponse200ApplicationJson; +export const GetWebhookDestinationOutputSchema = GeneratedZod.zWebhookDestination; export type GetWebhookDestinationOutput = z.output; export const GetWebhookDestinationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWebhookDestinationResponse200ApplicationJson, + "200": GeneratedZod.zWebhookDestination, }))(); export const GetWebhookEventSchemaInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1077,10 +1098,10 @@ export type GetWebhookEventSchemaInput = { query: NonNullable; }; -export const GetWebhookEventSchemaOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zGetWebhookEventSchemaResponse200ApplicationSchemaPlusJson, z.undefined()]))(); +export const GetWebhookEventSchemaOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zWebhookEventSchema, z.undefined()]))(); export type GetWebhookEventSchemaOutput = z.output; export const GetWebhookEventSchemaOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWebhookEventSchemaResponse200ApplicationSchemaPlusJson, + "200": GeneratedZod.zWebhookEventSchema, "304": z.undefined(), }))(); @@ -1091,10 +1112,10 @@ export type GetWhatsappBusinessAccountInput = { path: NonNullable; }; -export const GetWhatsappBusinessAccountOutputSchema = GeneratedZod.zGetWhatsappBusinessAccountResponse200ApplicationJson; +export const GetWhatsappBusinessAccountOutputSchema = GeneratedZod.zWhatsappBusinessAccount; export type GetWhatsappBusinessAccountOutput = z.output; export const GetWhatsappBusinessAccountOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWhatsappBusinessAccountResponse200ApplicationJson, + "200": GeneratedZod.zWhatsappBusinessAccount, }))(); export const GetWhatsappBusinessVerificationCodeInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1106,10 +1127,10 @@ export type GetWhatsappBusinessVerificationCodeInput = { query: NonNullable; }; -export const GetWhatsappBusinessVerificationCodeOutputSchema = GeneratedZod.zGetWhatsappBusinessVerificationCodeResponse200ApplicationJson; +export const GetWhatsappBusinessVerificationCodeOutputSchema = GeneratedZod.zGetWhatsappBusinessVerificationCodeResponse; export type GetWhatsappBusinessVerificationCodeOutput = z.output; export const GetWhatsappBusinessVerificationCodeOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWhatsappBusinessVerificationCodeResponse200ApplicationJson, + "200": GeneratedZod.zGetWhatsappBusinessVerificationCodeResponse, }))(); export const GetWhatsappSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1119,10 +1140,10 @@ export type GetWhatsappSharedLineAssignmentInput = { path: NonNullable; }; -export const GetWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zGetWhatsappSharedLineAssignmentResponse200ApplicationJson; +export const GetWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type GetWhatsappSharedLineAssignmentOutput = z.output; export const GetWhatsappSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWhatsappSharedLineAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignment, }))(); export const GetWhatsappSignupConfigInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1132,10 +1153,10 @@ export type GetWhatsappSignupConfigInput = { path: NonNullable; }; -export const GetWhatsappSignupConfigOutputSchema = GeneratedZod.zGetWhatsappSignupConfigResponse200ApplicationJson; +export const GetWhatsappSignupConfigOutputSchema = GeneratedZod.zGetWhatsappSignupConfigResponse; export type GetWhatsappSignupConfigOutput = z.output; export const GetWhatsappSignupConfigOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zGetWhatsappSignupConfigResponse200ApplicationJson, + "200": GeneratedZod.zGetWhatsappSignupConfigResponse, }))(); export const ListAccountServiceKeysInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1143,10 +1164,10 @@ export const ListAccountServiceKeysInputSchema = /* @__PURE__ */ (() => z.strict }))(); export type ListAccountServiceKeysInput = Record; -export const ListAccountServiceKeysOutputSchema = GeneratedZod.zListAccountServiceKeysResponse200ApplicationJson; +export const ListAccountServiceKeysOutputSchema = GeneratedZod.zListAccountServiceKeysResponse; export type ListAccountServiceKeysOutput = z.output; export const ListAccountServiceKeysOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListAccountServiceKeysResponse200ApplicationJson, + "200": GeneratedZod.zListAccountServiceKeysResponse, }))(); export const ListAttachmentsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1158,10 +1179,10 @@ export type ListAttachmentsInput = { query?: NonNullable; }; -export const ListAttachmentsOutputSchema = GeneratedZod.zListAttachmentsResponse200ApplicationJson; +export const ListAttachmentsOutputSchema = GeneratedZod.zAttachmentPage; export type ListAttachmentsOutput = z.output; export const ListAttachmentsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListAttachmentsResponse200ApplicationJson, + "200": GeneratedZod.zAttachmentPage, }))(); export const ListAuthorizedApplicationsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1171,10 +1192,10 @@ export type ListAuthorizedApplicationsInput = { query?: NonNullable; }; -export const ListAuthorizedApplicationsOutputSchema = GeneratedZod.zListAuthorizedApplicationsResponse200ApplicationJson; +export const ListAuthorizedApplicationsOutputSchema = GeneratedZod.zListAuthorizedApplicationsResponse; export type ListAuthorizedApplicationsOutput = z.output; export const ListAuthorizedApplicationsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListAuthorizedApplicationsResponse200ApplicationJson, + "200": GeneratedZod.zListAuthorizedApplicationsResponse, }))(); export const ListBillingPlansInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1184,10 +1205,10 @@ export type ListBillingPlansInput = { path: NonNullable; }; -export const ListBillingPlansOutputSchema = GeneratedZod.zListBillingPlansResponse200ApplicationJson; +export const ListBillingPlansOutputSchema = GeneratedZod.zListBillingPlansResponse; export type ListBillingPlansOutput = z.output; export const ListBillingPlansOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListBillingPlansResponse200ApplicationJson, + "200": GeneratedZod.zListBillingPlansResponse, }))(); export const ListInvoicesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1197,10 +1218,10 @@ export type ListInvoicesInput = { path: NonNullable; }; -export const ListInvoicesOutputSchema = GeneratedZod.zListInvoicesResponse200ApplicationJson; +export const ListInvoicesOutputSchema = GeneratedZod.zListInvoicesResponse; export type ListInvoicesOutput = z.output; export const ListInvoicesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListInvoicesResponse200ApplicationJson, + "200": GeneratedZod.zListInvoicesResponse, }))(); export const ListNumberAreaCodesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1212,10 +1233,10 @@ export type ListNumberAreaCodesInput = { query: NonNullable; }; -export const ListNumberAreaCodesOutputSchema = GeneratedZod.zListNumberAreaCodesResponse200ApplicationJson; +export const ListNumberAreaCodesOutputSchema = GeneratedZod.zListNumberAreaCodesResponse; export type ListNumberAreaCodesOutput = z.output; export const ListNumberAreaCodesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListNumberAreaCodesResponse200ApplicationJson, + "200": GeneratedZod.zListNumberAreaCodesResponse, }))(); export const ListNumberCountriesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1225,10 +1246,10 @@ export type ListNumberCountriesInput = { path: NonNullable; }; -export const ListNumberCountriesOutputSchema = GeneratedZod.zListNumberCountriesResponse200ApplicationJson; +export const ListNumberCountriesOutputSchema = GeneratedZod.zListNumberCountriesResponse; export type ListNumberCountriesOutput = z.output; export const ListNumberCountriesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListNumberCountriesResponse200ApplicationJson, + "200": GeneratedZod.zListNumberCountriesResponse, }))(); export const ListOauthScopesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1236,10 +1257,10 @@ export const ListOauthScopesInputSchema = /* @__PURE__ */ (() => z.strictObject( }))(); export type ListOauthScopesInput = Record; -export const ListOauthScopesOutputSchema = GeneratedZod.zListOauthScopesResponse200ApplicationJson; +export const ListOauthScopesOutputSchema = GeneratedZod.zListOauthScopesResponse; export type ListOauthScopesOutput = z.output; export const ListOauthScopesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListOauthScopesResponse200ApplicationJson, + "200": GeneratedZod.zListOauthScopesResponse, }))(); export const ListOperationsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1251,10 +1272,10 @@ export type ListOperationsInput = { query?: NonNullable; }; -export const ListOperationsOutputSchema = GeneratedZod.zListOperationsResponse200ApplicationJson; +export const ListOperationsOutputSchema = GeneratedZod.zOperationPage; export type ListOperationsOutput = z.output; export const ListOperationsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListOperationsResponse200ApplicationJson, + "200": GeneratedZod.zOperationPage, }))(); export const ListProjectApiKeysInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1264,10 +1285,10 @@ export type ListProjectApiKeysInput = { path: NonNullable; }; -export const ListProjectApiKeysOutputSchema = GeneratedZod.zListProjectApiKeysResponse200ApplicationJson; +export const ListProjectApiKeysOutputSchema = GeneratedZod.zListProjectApiKeysResponse; export type ListProjectApiKeysOutput = z.output; export const ListProjectApiKeysOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListProjectApiKeysResponse200ApplicationJson, + "200": GeneratedZod.zListProjectApiKeysResponse, }))(); export const ListProjectPlatformsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1277,10 +1298,10 @@ export type ListProjectPlatformsInput = { path: NonNullable; }; -export const ListProjectPlatformsOutputSchema = GeneratedZod.zListProjectPlatformsResponse200ApplicationJson; +export const ListProjectPlatformsOutputSchema = GeneratedZod.zListProjectPlatformsResponse; export type ListProjectPlatformsOutput = z.output; export const ListProjectPlatformsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListProjectPlatformsResponse200ApplicationJson, + "200": GeneratedZod.zListProjectPlatformsResponse, }))(); export const ListProjectsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1292,10 +1313,10 @@ export type ListProjectsInput = { query?: NonNullable; }; -export const ListProjectsOutputSchema = GeneratedZod.zListProjectsResponse200ApplicationJson; +export const ListProjectsOutputSchema = GeneratedZod.zProjectPage; export type ListProjectsOutput = z.output; export const ListProjectsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListProjectsResponse200ApplicationJson, + "200": GeneratedZod.zProjectPage, }))(); export const ListResourcesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1307,10 +1328,10 @@ export type ListResourcesInput = { query?: NonNullable; }; -export const ListResourcesOutputSchema = GeneratedZod.zListResourcesResponse200ApplicationJson; +export const ListResourcesOutputSchema = GeneratedZod.zResourcePage; export type ListResourcesOutput = z.output; export const ListResourcesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListResourcesResponse200ApplicationJson, + "200": GeneratedZod.zResourcePage, }))(); export const ListSharedLineAssignmentsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1322,10 +1343,10 @@ export type ListSharedLineAssignmentsInput = { query?: NonNullable; }; -export const ListSharedLineAssignmentsOutputSchema = GeneratedZod.zListSharedLineAssignmentsResponse200ApplicationJson; +export const ListSharedLineAssignmentsOutputSchema = GeneratedZod.zSharedLineAssignmentPage; export type ListSharedLineAssignmentsOutput = z.output; export const ListSharedLineAssignmentsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListSharedLineAssignmentsResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignmentPage, }))(); export const ListVoiceProfilesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1337,10 +1358,10 @@ export type ListVoiceProfilesInput = { query?: NonNullable; }; -export const ListVoiceProfilesOutputSchema = GeneratedZod.zListVoiceProfilesResponse200ApplicationJson; +export const ListVoiceProfilesOutputSchema = GeneratedZod.zVoiceProfilePage; export type ListVoiceProfilesOutput = z.output; export const ListVoiceProfilesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListVoiceProfilesResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfilePage, }))(); export const ListWebhookApiVersionsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1350,10 +1371,10 @@ export type ListWebhookApiVersionsInput = { path: NonNullable; }; -export const ListWebhookApiVersionsOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookApiVersionsResponse200ApplicationJson, z.undefined()]))(); +export const ListWebhookApiVersionsOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookApiVersionsResponse, z.undefined()]))(); export type ListWebhookApiVersionsOutput = z.output; export const ListWebhookApiVersionsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWebhookApiVersionsResponse200ApplicationJson, + "200": GeneratedZod.zListWebhookApiVersionsResponse, "304": z.undefined(), }))(); @@ -1366,10 +1387,10 @@ export type ListWebhookDestinationsInput = { query?: NonNullable; }; -export const ListWebhookDestinationsOutputSchema = GeneratedZod.zListWebhookDestinationsResponse200ApplicationJson; +export const ListWebhookDestinationsOutputSchema = GeneratedZod.zWebhookDestinationPage; export type ListWebhookDestinationsOutput = z.output; export const ListWebhookDestinationsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWebhookDestinationsResponse200ApplicationJson, + "200": GeneratedZod.zWebhookDestinationPage, }))(); export const ListWebhookEgressAddressesInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1379,10 +1400,10 @@ export type ListWebhookEgressAddressesInput = { path: NonNullable; }; -export const ListWebhookEgressAddressesOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookEgressAddressesResponse200ApplicationJson, z.undefined()]))(); +export const ListWebhookEgressAddressesOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookEgressAddressesResponse, z.undefined()]))(); export type ListWebhookEgressAddressesOutput = z.output; export const ListWebhookEgressAddressesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWebhookEgressAddressesResponse200ApplicationJson, + "200": GeneratedZod.zListWebhookEgressAddressesResponse, "304": z.undefined(), }))(); @@ -1395,10 +1416,10 @@ export type ListWebhookEventTypesInput = { query: NonNullable; }; -export const ListWebhookEventTypesOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookEventTypesResponse200ApplicationJson, z.undefined()]))(); +export const ListWebhookEventTypesOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zListWebhookEventTypesResponse, z.undefined()]))(); export type ListWebhookEventTypesOutput = z.output; export const ListWebhookEventTypesOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWebhookEventTypesResponse200ApplicationJson, + "200": GeneratedZod.zListWebhookEventTypesResponse, "304": z.undefined(), }))(); @@ -1409,10 +1430,10 @@ export type ListWhatsappAccountPhoneNumbersInput = { path: NonNullable; }; -export const ListWhatsappAccountPhoneNumbersOutputSchema = GeneratedZod.zListWhatsappAccountPhoneNumbersResponse200ApplicationJson; +export const ListWhatsappAccountPhoneNumbersOutputSchema = GeneratedZod.zListWhatsappAccountPhoneNumbersResponse; export type ListWhatsappAccountPhoneNumbersOutput = z.output; export const ListWhatsappAccountPhoneNumbersOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWhatsappAccountPhoneNumbersResponse200ApplicationJson, + "200": GeneratedZod.zListWhatsappAccountPhoneNumbersResponse, }))(); export const ListWhatsappSharedLineAssignmentsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1424,10 +1445,10 @@ export type ListWhatsappSharedLineAssignmentsInput = { query?: NonNullable; }; -export const ListWhatsappSharedLineAssignmentsOutputSchema = GeneratedZod.zListWhatsappSharedLineAssignmentsResponse200ApplicationJson; +export const ListWhatsappSharedLineAssignmentsOutputSchema = GeneratedZod.zSharedLineAssignmentPage; export type ListWhatsappSharedLineAssignmentsOutput = z.output; export const ListWhatsappSharedLineAssignmentsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zListWhatsappSharedLineAssignmentsResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignmentPage, }))(); export const ProvisionImessageDedicatedLineInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1443,10 +1464,10 @@ export type ProvisionImessageDedicatedLineInput = { }; }; -export const ProvisionImessageDedicatedLineOutputSchema = GeneratedZod.zProvisionImessageDedicatedLineResponse202ApplicationJson; +export const ProvisionImessageDedicatedLineOutputSchema = GeneratedZod.zOperation; export type ProvisionImessageDedicatedLineOutput = z.output; export const ProvisionImessageDedicatedLineOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zProvisionImessageDedicatedLineResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const ProvisionWhatsappDedicatedLineInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1462,10 +1483,10 @@ export type ProvisionWhatsappDedicatedLineInput = { }; }; -export const ProvisionWhatsappDedicatedLineOutputSchema = GeneratedZod.zProvisionWhatsappDedicatedLineResponse202ApplicationJson; +export const ProvisionWhatsappDedicatedLineOutputSchema = GeneratedZod.zOperation; export type ProvisionWhatsappDedicatedLineOutput = z.output; export const ProvisionWhatsappDedicatedLineOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zProvisionWhatsappDedicatedLineResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const PurchaseSmsNumberInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1483,10 +1504,10 @@ export type PurchaseSmsNumberInput = { }; }; -export const PurchaseSmsNumberOutputSchema = GeneratedZod.zPurchaseSmsNumberResponse202ApplicationJson; +export const PurchaseSmsNumberOutputSchema = GeneratedZod.zOperation; export type PurchaseSmsNumberOutput = z.output; export const PurchaseSmsNumberOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "202": GeneratedZod.zPurchaseSmsNumberResponse202ApplicationJson, + "202": GeneratedZod.zOperation, }))(); export const QueryMessageMetricsInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1504,10 +1525,10 @@ export type QueryMessageMetricsInput = { }; }; -export const QueryMessageMetricsOutputSchema = GeneratedZod.zQueryMessageMetricsResponse200ApplicationJson; +export const QueryMessageMetricsOutputSchema = GeneratedZod.zQueryMessageMetricsResponse; export type QueryMessageMetricsOutput = z.output; export const QueryMessageMetricsOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zQueryMessageMetricsResponse200ApplicationJson, + "200": GeneratedZod.zQueryMessageMetricsResponse, }))(); export const RedeemAppInstallationDeliveryInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1517,10 +1538,10 @@ export type RedeemAppInstallationDeliveryInput = { body: WireTypes.RedeemAppInstallationDeliveryData["body"]; }; -export const RedeemAppInstallationDeliveryOutputSchema = GeneratedZod.zRedeemAppInstallationDeliveryResponse200ApplicationJson; +export const RedeemAppInstallationDeliveryOutputSchema = GeneratedZod.zRedeemAppInstallationDeliveryResponse; export type RedeemAppInstallationDeliveryOutput = z.output; export const RedeemAppInstallationDeliveryOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRedeemAppInstallationDeliveryResponse200ApplicationJson, + "200": GeneratedZod.zRedeemAppInstallationDeliveryResponse, }))(); export const RefreshOrganizationSsoConnectionInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1530,10 +1551,10 @@ export type RefreshOrganizationSsoConnectionInput = { path: NonNullable; }; -export const RefreshOrganizationSsoConnectionOutputSchema = GeneratedZod.zRefreshOrganizationSsoConnectionResponse200ApplicationJson; +export const RefreshOrganizationSsoConnectionOutputSchema = GeneratedZod.zOrganizationSsoConfiguration; export type RefreshOrganizationSsoConnectionOutput = z.output; export const RefreshOrganizationSsoConnectionOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRefreshOrganizationSsoConnectionResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationSsoConfiguration, }))(); export const ReleaseImessageDedicatedLineInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1543,11 +1564,11 @@ export type ReleaseImessageDedicatedLineInput = { path: NonNullable; }; -export const ReleaseImessageDedicatedLineOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zReleaseImessageDedicatedLineResponse200ApplicationJson, GeneratedZod.zReleaseImessageDedicatedLineResponse202ApplicationJson]))(); +export const ReleaseImessageDedicatedLineOutputSchema = GeneratedZod.zOperation; export type ReleaseImessageDedicatedLineOutput = z.output; export const ReleaseImessageDedicatedLineOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReleaseImessageDedicatedLineResponse200ApplicationJson, - "202": GeneratedZod.zReleaseImessageDedicatedLineResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const ReleaseResourceInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1557,11 +1578,11 @@ export type ReleaseResourceInput = { path: NonNullable; }; -export const ReleaseResourceOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zReleaseResourceResponse200ApplicationJson, GeneratedZod.zReleaseResourceResponse202ApplicationJson]))(); +export const ReleaseResourceOutputSchema = GeneratedZod.zOperation; export type ReleaseResourceOutput = z.output; export const ReleaseResourceOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReleaseResourceResponse200ApplicationJson, - "202": GeneratedZod.zReleaseResourceResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const ReleaseSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1571,10 +1592,10 @@ export type ReleaseSharedLineAssignmentInput = { path: NonNullable; }; -export const ReleaseSharedLineAssignmentOutputSchema = GeneratedZod.zReleaseSharedLineAssignmentResponse200ApplicationJson; +export const ReleaseSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type ReleaseSharedLineAssignmentOutput = z.output; export const ReleaseSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReleaseSharedLineAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignment, }))(); export const ReleaseWhatsappDedicatedLineInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1584,11 +1605,11 @@ export type ReleaseWhatsappDedicatedLineInput = { path: NonNullable; }; -export const ReleaseWhatsappDedicatedLineOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zReleaseWhatsappDedicatedLineResponse200ApplicationJson, GeneratedZod.zReleaseWhatsappDedicatedLineResponse202ApplicationJson]))(); +export const ReleaseWhatsappDedicatedLineOutputSchema = GeneratedZod.zOperation; export type ReleaseWhatsappDedicatedLineOutput = z.output; export const ReleaseWhatsappDedicatedLineOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReleaseWhatsappDedicatedLineResponse200ApplicationJson, - "202": GeneratedZod.zReleaseWhatsappDedicatedLineResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const ReleaseWhatsappSharedLineAssignmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1598,10 +1619,10 @@ export type ReleaseWhatsappSharedLineAssignmentInput = { path: NonNullable; }; -export const ReleaseWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson; +export const ReleaseWhatsappSharedLineAssignmentOutputSchema = GeneratedZod.zSharedLineAssignment; export type ReleaseWhatsappSharedLineAssignmentOutput = z.output; export const ReleaseWhatsappSharedLineAssignmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReleaseWhatsappSharedLineAssignmentResponse200ApplicationJson, + "200": GeneratedZod.zSharedLineAssignment, }))(); export const ReplaceVoiceProfileInboundInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1613,11 +1634,11 @@ export type ReplaceVoiceProfileInboundInput = { path: NonNullable; }; -export const ReplaceVoiceProfileInboundOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zReplaceVoiceProfileInboundResponse200ApplicationJson, GeneratedZod.zReplaceVoiceProfileInboundResponse201ApplicationJson]))(); +export const ReplaceVoiceProfileInboundOutputSchema = GeneratedZod.zVoiceProfileInboundConfiguration; export type ReplaceVoiceProfileInboundOutput = z.output; export const ReplaceVoiceProfileInboundOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zReplaceVoiceProfileInboundResponse200ApplicationJson, - "201": GeneratedZod.zReplaceVoiceProfileInboundResponse201ApplicationJson, + "200": GeneratedZod.zVoiceProfileInboundConfiguration, + "201": GeneratedZod.zVoiceProfileInboundConfiguration, }))(); export const ResetAccountProfilePictureInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1631,10 +1652,10 @@ export type ResetAccountProfilePictureInput = { }; }; -export const ResetAccountProfilePictureOutputSchema = GeneratedZod.zResetAccountProfilePictureResponse200ApplicationJson; +export const ResetAccountProfilePictureOutputSchema = GeneratedZod.zAccount; export type ResetAccountProfilePictureOutput = z.output; export const ResetAccountProfilePictureOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zResetAccountProfilePictureResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const ResetAgentProfileAvatarInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1650,10 +1671,10 @@ export type ResetAgentProfileAvatarInput = { }; }; -export const ResetAgentProfileAvatarOutputSchema = GeneratedZod.zResetAgentProfileAvatarResponse200ApplicationJson; +export const ResetAgentProfileAvatarOutputSchema = GeneratedZod.zAgentProfile; export type ResetAgentProfileAvatarOutput = z.output; export const ResetAgentProfileAvatarOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zResetAgentProfileAvatarResponse200ApplicationJson, + "200": GeneratedZod.zAgentProfile, }))(); export const ResumeSubscriptionInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1671,10 +1692,10 @@ export type ResumeSubscriptionInput = { }; }; -export const ResumeSubscriptionOutputSchema = GeneratedZod.zResumeSubscriptionResponse200ApplicationJson; +export const ResumeSubscriptionOutputSchema = GeneratedZod.zResumeSubscriptionResponse; export type ResumeSubscriptionOutput = z.output; export const ResumeSubscriptionOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zResumeSubscriptionResponse200ApplicationJson, + "200": GeneratedZod.zResumeSubscriptionResponse, }))(); export const RetryOrganizationConnectionSyncInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1684,10 +1705,10 @@ export type RetryOrganizationConnectionSyncInput = { path: NonNullable; }; -export const RetryOrganizationConnectionSyncOutputSchema = GeneratedZod.zRetryOrganizationConnectionSyncResponse200ApplicationJson; +export const RetryOrganizationConnectionSyncOutputSchema = GeneratedZod.zOrganizationConnectionStatus; export type RetryOrganizationConnectionSyncOutput = z.output; export const RetryOrganizationConnectionSyncOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRetryOrganizationConnectionSyncResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationConnectionStatus, }))(); export const RevokeAccountServiceKeyInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1703,10 +1724,10 @@ export type RevokeAccountServiceKeyInput = { }; }; -export const RevokeAccountServiceKeyOutputSchema = GeneratedZod.zRevokeAccountServiceKeyResponse200ApplicationJson; +export const RevokeAccountServiceKeyOutputSchema = GeneratedZod.zRevokeAccountServiceKeyResponse; export type RevokeAccountServiceKeyOutput = z.output; export const RevokeAccountServiceKeyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRevokeAccountServiceKeyResponse200ApplicationJson, + "200": GeneratedZod.zRevokeAccountServiceKeyResponse, }))(); export const RevokeAuthorizedApplicationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1735,10 +1756,10 @@ export type RevokeProjectApiKeyInput = { }; }; -export const RevokeProjectApiKeyOutputSchema = GeneratedZod.zRevokeProjectApiKeyResponse200ApplicationJson; +export const RevokeProjectApiKeyOutputSchema = GeneratedZod.zProjectApiKeyResponse; export type RevokeProjectApiKeyOutput = z.output; export const RevokeProjectApiKeyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRevokeProjectApiKeyResponse200ApplicationJson, + "200": GeneratedZod.zProjectApiKeyResponse, }))(); export const RotateVoiceProfileOutboundCredentialInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1756,10 +1777,10 @@ export type RotateVoiceProfileOutboundCredentialInput = { }; }; -export const RotateVoiceProfileOutboundCredentialOutputSchema = GeneratedZod.zRotateVoiceProfileOutboundCredentialResponse200ApplicationJson; +export const RotateVoiceProfileOutboundCredentialOutputSchema = GeneratedZod.zRotateVoiceProfileOutboundCredentialResponse; export type RotateVoiceProfileOutboundCredentialOutput = z.output; export const RotateVoiceProfileOutboundCredentialOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRotateVoiceProfileOutboundCredentialResponse200ApplicationJson, + "200": GeneratedZod.zRotateVoiceProfileOutboundCredentialResponse, }))(); export const RotateWebhookSigningSecretInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1777,10 +1798,10 @@ export type RotateWebhookSigningSecretInput = { }; }; -export const RotateWebhookSigningSecretOutputSchema = GeneratedZod.zRotateWebhookSigningSecretResponse200ApplicationJson; +export const RotateWebhookSigningSecretOutputSchema = GeneratedZod.zRotateWebhookSigningSecretResponse; export type RotateWebhookSigningSecretOutput = z.output; export const RotateWebhookSigningSecretOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zRotateWebhookSigningSecretResponse200ApplicationJson, + "200": GeneratedZod.zRotateWebhookSigningSecretResponse, }))(); export const StartAccountPhoneVerificationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1790,10 +1811,10 @@ export type StartAccountPhoneVerificationInput = { body: WireTypes.StartAccountPhoneVerificationData["body"]; }; -export const StartAccountPhoneVerificationOutputSchema = GeneratedZod.zStartAccountPhoneVerificationResponse201ApplicationJson; +export const StartAccountPhoneVerificationOutputSchema = GeneratedZod.zStartAccountPhoneVerificationResponse; export type StartAccountPhoneVerificationOutput = z.output; export const StartAccountPhoneVerificationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "201": GeneratedZod.zStartAccountPhoneVerificationResponse201ApplicationJson, + "201": GeneratedZod.zStartAccountPhoneVerificationResponse, }))(); export const StartEnterpriseLoginInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1803,10 +1824,10 @@ export type StartEnterpriseLoginInput = { body: WireTypes.StartEnterpriseLoginData["body"]; }; -export const StartEnterpriseLoginOutputSchema = GeneratedZod.zStartEnterpriseLoginResponse200ApplicationJson; +export const StartEnterpriseLoginOutputSchema = GeneratedZod.zStartEnterpriseLoginResponse; export type StartEnterpriseLoginOutput = z.output; export const StartEnterpriseLoginOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zStartEnterpriseLoginResponse200ApplicationJson, + "200": GeneratedZod.zStartEnterpriseLoginResponse, }))(); export const UnassignSmsLineCampaignInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1824,11 +1845,11 @@ export type UnassignSmsLineCampaignInput = { }; }; -export const UnassignSmsLineCampaignOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zUnassignSmsLineCampaignResponse200ApplicationJson, GeneratedZod.zUnassignSmsLineCampaignResponse202ApplicationJson]))(); +export const UnassignSmsLineCampaignOutputSchema = GeneratedZod.zOperation; export type UnassignSmsLineCampaignOutput = z.output; export const UnassignSmsLineCampaignOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUnassignSmsLineCampaignResponse200ApplicationJson, - "202": GeneratedZod.zUnassignSmsLineCampaignResponse202ApplicationJson, + "200": GeneratedZod.zOperation, + "202": GeneratedZod.zOperation, }))(); export const UnassignVoiceLineProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1859,10 +1880,10 @@ export type UpdateAccountInput = { }; }; -export const UpdateAccountOutputSchema = GeneratedZod.zUpdateAccountResponse200ApplicationJson; +export const UpdateAccountOutputSchema = GeneratedZod.zAccount; export type UpdateAccountOutput = z.output; export const UpdateAccountOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateAccountResponse200ApplicationJson, + "200": GeneratedZod.zAccount, }))(); export const UpdateAgentProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1880,10 +1901,10 @@ export type UpdateAgentProfileInput = { }; }; -export const UpdateAgentProfileOutputSchema = GeneratedZod.zUpdateAgentProfileResponse200ApplicationJson; +export const UpdateAgentProfileOutputSchema = GeneratedZod.zAgentProfile; export type UpdateAgentProfileOutput = z.output; export const UpdateAgentProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateAgentProfileResponse200ApplicationJson, + "200": GeneratedZod.zAgentProfile, }))(); export const UpdateDefaultVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1895,10 +1916,10 @@ export type UpdateDefaultVoiceProfileInput = { path: NonNullable; }; -export const UpdateDefaultVoiceProfileOutputSchema = GeneratedZod.zUpdateDefaultVoiceProfileResponse200ApplicationJson; +export const UpdateDefaultVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type UpdateDefaultVoiceProfileOutput = z.output; export const UpdateDefaultVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateDefaultVoiceProfileResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfile, }))(); export const UpdateOrganizationSsoPolicyInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1910,10 +1931,10 @@ export type UpdateOrganizationSsoPolicyInput = { path: NonNullable; }; -export const UpdateOrganizationSsoPolicyOutputSchema = GeneratedZod.zUpdateOrganizationSsoPolicyResponse200ApplicationJson; +export const UpdateOrganizationSsoPolicyOutputSchema = GeneratedZod.zOrganizationSsoConfiguration; export type UpdateOrganizationSsoPolicyOutput = z.output; export const UpdateOrganizationSsoPolicyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateOrganizationSsoPolicyResponse200ApplicationJson, + "200": GeneratedZod.zOrganizationSsoConfiguration, }))(); export const UpdateProjectInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1931,10 +1952,10 @@ export type UpdateProjectInput = { }; }; -export const UpdateProjectOutputSchema = GeneratedZod.zUpdateProjectResponse200ApplicationJson; +export const UpdateProjectOutputSchema = GeneratedZod.zProject; export type UpdateProjectOutput = z.output; export const UpdateProjectOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateProjectResponse200ApplicationJson, + "200": GeneratedZod.zProject, }))(); export const UpdateProjectApiKeyInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1952,10 +1973,10 @@ export type UpdateProjectApiKeyInput = { }; }; -export const UpdateProjectApiKeyOutputSchema = GeneratedZod.zUpdateProjectApiKeyResponse200ApplicationJson; +export const UpdateProjectApiKeyOutputSchema = GeneratedZod.zProjectApiKeyResponse; export type UpdateProjectApiKeyOutput = z.output; export const UpdateProjectApiKeyOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateProjectApiKeyResponse200ApplicationJson, + "200": GeneratedZod.zProjectApiKeyResponse, }))(); export const UpdateVoiceProfileInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1967,10 +1988,10 @@ export type UpdateVoiceProfileInput = { path: NonNullable; }; -export const UpdateVoiceProfileOutputSchema = GeneratedZod.zUpdateVoiceProfileResponse200ApplicationJson; +export const UpdateVoiceProfileOutputSchema = GeneratedZod.zVoiceProfile; export type UpdateVoiceProfileOutput = z.output; export const UpdateVoiceProfileOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateVoiceProfileResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfile, }))(); export const UpdateVoiceProfileInboundInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1982,10 +2003,10 @@ export type UpdateVoiceProfileInboundInput = { path: NonNullable; }; -export const UpdateVoiceProfileInboundOutputSchema = GeneratedZod.zUpdateVoiceProfileInboundResponse200ApplicationJson; +export const UpdateVoiceProfileInboundOutputSchema = GeneratedZod.zVoiceProfileInboundConfiguration; export type UpdateVoiceProfileInboundOutput = z.output; export const UpdateVoiceProfileInboundOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateVoiceProfileInboundResponse200ApplicationJson, + "200": GeneratedZod.zVoiceProfileInboundConfiguration, }))(); export const UpdateVoiceProfileOutboundAuthenticationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -1997,10 +2018,10 @@ export type UpdateVoiceProfileOutboundAuthenticationInput = { path: NonNullable; }; -export const UpdateVoiceProfileOutboundAuthenticationOutputSchema = GeneratedZod.zUpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson; +export const UpdateVoiceProfileOutboundAuthenticationOutputSchema = GeneratedZod.zUpdateVoiceProfileOutboundAuthenticationResponse; export type UpdateVoiceProfileOutboundAuthenticationOutput = z.output; export const UpdateVoiceProfileOutboundAuthenticationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateVoiceProfileOutboundAuthenticationResponse200ApplicationJson, + "200": GeneratedZod.zUpdateVoiceProfileOutboundAuthenticationResponse, }))(); export const UpdateWebhookDestinationInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -2018,10 +2039,10 @@ export type UpdateWebhookDestinationInput = { }; }; -export const UpdateWebhookDestinationOutputSchema = GeneratedZod.zUpdateWebhookDestinationResponse200ApplicationJson; +export const UpdateWebhookDestinationOutputSchema = GeneratedZod.zWebhookDestination; export type UpdateWebhookDestinationOutput = z.output; export const UpdateWebhookDestinationOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUpdateWebhookDestinationResponse200ApplicationJson, + "200": GeneratedZod.zWebhookDestination, }))(); export const UploadAttachmentInputSchema = /* @__PURE__ */ (() => z.strictObject({ @@ -2043,9 +2064,9 @@ export type UploadAttachmentInput = { }; }; -export const UploadAttachmentOutputSchema = /* @__PURE__ */ (() => z.union([GeneratedZod.zUploadAttachmentResponse200ApplicationJson, GeneratedZod.zUploadAttachmentResponse201ApplicationJson]))(); +export const UploadAttachmentOutputSchema = GeneratedZod.zAttachment; export type UploadAttachmentOutput = z.output; export const UploadAttachmentOutputSchemas: OutputSchemas = /* @__PURE__ */ (() => ({ - "200": GeneratedZod.zUploadAttachmentResponse200ApplicationJson, - "201": GeneratedZod.zUploadAttachmentResponse201ApplicationJson, + "200": GeneratedZod.zAttachment, + "201": GeneratedZod.zAttachment, }))(); diff --git a/postman/README.md b/postman/README.md index 2dfd72f..0c87032 100644 --- a/postman/README.md +++ b/postman/README.md @@ -1,7 +1,10 @@ # Try Photon with Postman -Fork the hosted collection from Photon's public Postman workspace, or download -[`collection.json`](collection.json) and import it into your own workspace. +[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/58645896-f0273a59-bd8f-4c08-8f76-62b74a7cbdd1?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D58645896-f0273a59-bd8f-4c08-8f76-62b74a7cbdd1%26entityType%3Dcollection%26workspaceId%3D4c8fb23d-a1e6-4292-9475-6696a2618aa8) + +The button forks the hosted collection from +[Photon's public Postman workspace](https://www.postman.com/photonhq/photon-api) into your own workspace. You can +instead download [`collection.json`](collection.json) and import it. 1. Set the empty `apiToken` variable to a supported API key or token in your own workspace. Keep the credential private. @@ -32,7 +35,7 @@ npm ci --prefix tools/postman --ignore-scripts npm run generate:postman ``` -The collection is released with the client packages; its version is the -release version. A collection you forked into your workspace does not update +The collection is released with the client packages; its description names +the release version. A collection you forked into your workspace does not update automatically; pull the changes into your fork or import the collection again after a release. diff --git a/postman/collection.json b/postman/collection.json index e2035a5..9580fa1 100644 --- a/postman/collection.json +++ b/postman/collection.json @@ -66,86 +66,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"accountId\": \"string\",\n \"createdAt\": \"2000-01-01T00:00:00Z\",\n \"deletedAt\": \"2000-01-01T00:00:00Z\",\n \"email\": \"person@example.com\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"phoneNumber\": \"string\",\n \"phoneVerifiedAt\": \"2000-01-01T00:00:00Z\",\n \"pictureUrl\": \"http://mspZCMZVOcWyZWmOtexDsclGeiYmeS.npCmlyr5s8OzCH\",\n \"updatedAt\": \"2000-01-01T00:00:00Z\"\n}", + "body": "{\n \"accountId\": \"string\",\n \"createdAt\": \"2026-01-01T00:00:00.000Z\",\n \"deletedAt\": \"2026-01-01T00:00:00.000Z\",\n \"email\": \"person@example.com\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"phoneNumber\": \"string\",\n \"phoneVerifiedAt\": \"2026-01-01T00:00:00.000Z\",\n \"pictureUrl\": \"http://mspZCMZVOcWyZWmOtexDsclGeiYmeS.npCmlyr5s8OzCH\",\n \"updatedAt\": \"2026-01-01T00:00:00.000Z\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -234,12 +234,12 @@ "value": "string" } ], - "body": "{\n \"type\": \"https://photon.codes/docs/problems/not-authenticated\",\n \"title\": \"Not Authenticated\",\n \"status\": 401,\n \"code\": \"NOT_AUTHENTICATED\",\n \"detail\": \"strin\",\n \"instance\": \"string\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"NOT_AUTHENTICATED\",\n \"status\": 401,\n \"title\": \"Not Authenticated\",\n \"type\": \"https://photon.codes/docs/problems/not-authenticated\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "name": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "name": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "originalRequest": { "url": { "path": [ @@ -271,11 +271,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -325,11 +325,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -347,10 +347,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"code\": \"FORBIDDEN\",\n \"status\": 403,\n \"title\": \"Forbidden\",\n \"type\": \"https://photon.codes/docs/problems/forbidden\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"FORBIDDEN\",\n \"status\": 403,\n \"title\": \"Forbidden\",\n \"type\": \"https://photon.codes/docs/problems/forbidden\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -387,86 +387,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"ACCOUNT_NOT_FOUND\",\n \"status\": 404,\n \"title\": \"Account Not Found\",\n \"type\": \"https://photon.codes/docs/problems/account-not-found\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"stri\"\n}", + "body": "{\n \"code\": \"ACCOUNT_NOT_FOUND\",\n \"status\": 404,\n \"title\": \"Account Not Found\",\n \"type\": \"https://photon.codes/docs/problems/account-not-found\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -503,86 +503,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"ACCOUNT_OWNS_ORGANIZATIONS\",\n \"status\": 409,\n \"title\": \"Account Owns Organizations\",\n \"type\": \"https://photon.codes/docs/problems/account-owns-organizations\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"ACCOUNT_OWNS_ORGANIZATIONS\",\n \"status\": 409,\n \"title\": \"Account Owns Organizations\",\n \"type\": \"https://photon.codes/docs/problems/account-owns-organizations\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -619,11 +619,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -673,11 +673,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -695,10 +695,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"type\": \"https://photon.codes/docs/problems/internal-error\",\n \"title\": \"Internal Server Error\",\n \"status\": 500,\n \"code\": \"INTERNAL_ERROR\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"INTERNAL_ERROR\",\n \"status\": 500,\n \"title\": \"Internal Server Error\",\n \"type\": \"https://photon.codes/docs/problems/internal-error\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -735,86 +735,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"UPSTREAM_FAILURE\",\n \"status\": 502,\n \"title\": \"Upstream Service Failure\",\n \"type\": \"https://photon.codes/docs/problems/upstream-failure\",\n \"detail\": \"s\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_FAILURE\",\n \"status\": 502,\n \"title\": \"Upstream Service Failure\",\n \"type\": \"https://photon.codes/docs/problems/upstream-failure\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -851,11 +851,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -905,11 +905,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -927,10 +927,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -967,86 +967,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"UPSTREAM_TIMEOUT\",\n \"status\": 504,\n \"title\": \"Upstream Service Timeout\",\n \"type\": \"https://photon.codes/docs/problems/upstream-timeout\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_TIMEOUT\",\n \"status\": 504,\n \"title\": \"Upstream Service Timeout\",\n \"type\": \"https://photon.codes/docs/problems/upstream-timeout\"\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -1118,86 +1118,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"accountId\": \"string\",\n \"createdAt\": \"2000-01-01T00:00:00Z\",\n \"deletedAt\": \"2000-01-01T00:00:00Z\",\n \"email\": \"person@example.com\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"phoneNumber\": \"string\",\n \"phoneVerifiedAt\": \"2000-01-01T00:00:00Z\",\n \"pictureUrl\": \"http://mspZCMZVOcWyZWmOtexDsclGeiYmeS.npCmlyr5s8OzCH\",\n \"updatedAt\": \"2000-01-01T00:00:00Z\"\n}", + "body": "{\n \"accountId\": \"string\",\n \"createdAt\": \"2026-01-01T00:00:00.000Z\",\n \"deletedAt\": \"2026-01-01T00:00:00.000Z\",\n \"email\": \"person@example.com\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"phoneNumber\": \"string\",\n \"phoneVerifiedAt\": \"2026-01-01T00:00:00.000Z\",\n \"pictureUrl\": \"http://mspZCMZVOcWyZWmOtexDsclGeiYmeS.npCmlyr5s8OzCH\",\n \"updatedAt\": \"2026-01-01T00:00:00.000Z\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1286,12 +1286,12 @@ "value": "string" } ], - "body": "{\n \"type\": \"https://photon.codes/docs/problems/not-authenticated\",\n \"title\": \"Not Authenticated\",\n \"status\": 401,\n \"code\": \"NOT_AUTHENTICATED\",\n \"detail\": \"strin\",\n \"instance\": \"string\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"NOT_AUTHENTICATED\",\n \"status\": 401,\n \"title\": \"Not Authenticated\",\n \"type\": \"https://photon.codes/docs/problems/not-authenticated\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "name": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope", + "name": "FORBIDDEN: Forbidden; RESOURCE_MISMATCH: Resource Mismatch\n\nFORBIDDEN: Forbidden; INSUFFICIENT_SCOPE: Insufficient Scope; ORGANIZATION_SSO_REQUIRED: Organization SSO Required", "originalRequest": { "url": { "path": [ @@ -1323,11 +1323,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -1377,11 +1377,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -1399,10 +1399,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"code\": \"FORBIDDEN\",\n \"status\": 403,\n \"title\": \"Forbidden\",\n \"type\": \"https://photon.codes/docs/problems/forbidden\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"FORBIDDEN\",\n \"status\": 403,\n \"title\": \"Forbidden\",\n \"type\": \"https://photon.codes/docs/problems/forbidden\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1439,86 +1439,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"ACCOUNT_NOT_FOUND\",\n \"status\": 404,\n \"title\": \"Account Not Found\",\n \"type\": \"https://photon.codes/docs/problems/account-not-found\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"stri\"\n}", + "body": "{\n \"code\": \"ACCOUNT_NOT_FOUND\",\n \"status\": 404,\n \"title\": \"Account Not Found\",\n \"type\": \"https://photon.codes/docs/problems/account-not-found\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1555,86 +1555,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"ACCOUNT_DELETED\",\n \"status\": 410,\n \"title\": \"Account Deleted\",\n \"type\": \"https://photon.codes/docs/problems/account-deleted\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"ACCOUNT_DELETED\",\n \"status\": 410,\n \"title\": \"Account Deleted\",\n \"type\": \"https://photon.codes/docs/problems/account-deleted\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1671,11 +1671,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -1725,11 +1725,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -1747,10 +1747,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"type\": \"https://photon.codes/docs/problems/internal-error\",\n \"title\": \"Internal Server Error\",\n \"status\": 500,\n \"code\": \"INTERNAL_ERROR\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"INTERNAL_ERROR\",\n \"status\": 500,\n \"title\": \"Internal Server Error\",\n \"type\": \"https://photon.codes/docs/problems/internal-error\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1787,86 +1787,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"UPSTREAM_FAILURE\",\n \"status\": 502,\n \"title\": \"Upstream Service Failure\",\n \"type\": \"https://photon.codes/docs/problems/upstream-failure\",\n \"detail\": \"s\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_FAILURE\",\n \"status\": 502,\n \"title\": \"Upstream Service Failure\",\n \"type\": \"https://photon.codes/docs/problems/upstream-failure\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -1903,11 +1903,11 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -1957,11 +1957,11 @@ { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, @@ -1979,10 +1979,10 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, @@ -2019,86 +2019,86 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"UPSTREAM_TIMEOUT\",\n \"status\": 504,\n \"title\": \"Upstream Service Timeout\",\n \"type\": \"https://photon.codes/docs/problems/upstream-timeout\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"UPSTREAM_TIMEOUT\",\n \"status\": 504,\n \"title\": \"Upstream Service Timeout\",\n \"type\": \"https://photon.codes/docs/problems/upstream-timeout\"\n}", "cookie": [], "_postman_previewlanguage": "json" } @@ -2135,7 +2135,7 @@ "type": "text/plain" }, "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, - { - "key": "Accept", - "value": "application/problem+json" - } - ], - "method": "DELETE", - "body": {} - }, - "status": "Internal Server Error", - "code": 500, - "header": [ - { - "key": "Content-Type", - "value": "application/problem+json" - }, - { - "disabled": true, - "description": { - "content": "Structured date indicating that the operation is deprecated.", - "type": "text/plain" - }, - "key": "Deprecation", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "True when this response was replayed from an earlier attempt.", - "type": "text/plain" - }, - "key": "Idempotent-Replayed", - "value": "true" - }, - { - "disabled": true, - "description": { - "content": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "type": "text/plain" - }, - "key": "Link", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Current rate-limit state.\n\nOptional rate limit information.", - "type": "text/plain" - }, - "key": "RateLimit", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "type": "text/plain" - }, - "key": "RateLimit-Policy", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "type": "text/plain" - }, - "key": "Retry-After", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "HTTP date after which the operation may become unavailable.", - "type": "text/plain" - }, - "key": "Sunset", - "value": "2000-01-01T00:00:00Z" - }, - { - "disabled": true, - "description": { - "content": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "type": "text/plain" - }, - "key": "X-Request-ID", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "type": "text/plain" - }, - "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" - } - ], - "body": "{\n \"type\": \"https://photon.codes/docs/problems/internal-error\",\n \"title\": \"Internal Server Error\",\n \"status\": 500,\n \"code\": \"INTERNAL_ERROR\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"requestId\": \"string\"\n}", - "cookie": [], - "_postman_previewlanguage": "json" - }, - { - "name": "UPSTREAM_FAILURE: Upstream Service Failure", - "originalRequest": { - "url": { - "path": [ - "v1", - "account", - "service-keys", - ":serviceKeyId" - ], - "host": [ - "{{baseUrl}}" - ], - "query": [], - "variable": [ - { - "disabled": false, - "description": { - "content": "(Required) ", - "type": "text/plain" - }, - "type": "any", - "value": "", - "key": "serviceKeyId" - } - ] - }, - "header": [ - { - "disabled": false, - "description": { - "content": "(Required) Identifies one logical mutation across retries.", - "type": "text/plain" - }, - "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`SY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjY.Q$#Nca/FS7!!X5TiI`2j5Kjn/)]XqnF]b^w^EJjf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "method": "DELETE", - "body": {} - }, - "status": "Accepted", - "code": 202, - "header": [ - { - "key": "Content-Type", - "value": "application/json" + "key": "Cache-Control", + "value": "no-store" }, { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, @@ -98110,64 +99902,64 @@ { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Minimum number of seconds to wait before reading the operation again.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "7714" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"cancellable\": true,\n \"createdAt\": \"2000-01-01T00:00:00Z\",\n \"operationId\": \"string\",\n \"projectId\": \"string\",\n \"resourceType\": \"string\",\n \"state\": \"failed\",\n \"type\": \"resource.release\",\n \"updatedAt\": \"2000-01-01T00:00:00Z\",\n \"detail\": {\n \"key_0\": \"string\",\n \"key_1\": 1185.061561409384\n },\n \"endedAt\": \"2000-01-01T00:00:00Z\",\n \"error\": {\n \"code\": \"string\",\n \"detail\": \"string\"\n },\n \"resourceId\": \"string\",\n \"startedAt\": \"2000-01-01T00:00:00Z\"\n}", + "body": "{\n \"cancellable\": true,\n \"createdAt\": \"2026-01-01T00:00:00.000Z\",\n \"operationId\": \"string\",\n \"projectId\": \"string\",\n \"resourceType\": \"string\",\n \"state\": \"cancelled\",\n \"type\": \"resource.provision\",\n \"updatedAt\": \"2026-01-01T00:00:00.000Z\",\n \"detail\": {\n \"key_0\": false,\n \"key_1\": true\n },\n \"endedAt\": \"2026-01-01T00:00:00.000Z\",\n \"error\": {\n \"code\": \"string\",\n \"detail\": \"string\"\n },\n \"resourceId\": \"string\",\n \"startedAt\": \"2026-01-01T00:00:00.000Z\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "name": "SMS_CAMPAIGN_INVALID_REQUEST: Invalid SMS campaign request; IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "name": "Assignment accepted. Poll the operation Location until terminal.", "originalRequest": { "url": { "path": [ @@ -98191,7 +99983,7 @@ "type": "text/plain" }, "key": "expectedVersion", - "value": "5331.621416844428" + "value": "8472.67625387758" } ], "variable": [ @@ -98225,111 +100017,129 @@ "type": "text/plain" }, "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "method": "POST", - "body": {} - }, - "response": [ { - "name": "The attachment was accepted and is running. GET the Location after the Retry-After interval until `state` is terminal.", + "name": "UPSTREAM_UNAVAILABLE: Upstream Service Unavailable", "originalRequest": { "url": { "path": [ @@ -159551,13 +161210,24 @@ ":id", "platforms", "whatsapp", - "dedicated" + "assignments", + ":assignmentId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) ", + "type": "text/plain" + }, + "type": "any", + "value": "string", + "key": "assignmentId" + }, { "disabled": false, "description": { @@ -159571,38 +161241,29 @@ ] }, "header": [ - { - "disabled": false, - "description": { - "content": "(Required) Identifies one logical mutation across retries.", - "type": "text/plain" - }, - "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, { "key": "Accept", - "value": "application/json" + "value": "application/problem+json" } ], - "method": "POST", + "method": "GET", "body": {} }, - "status": "Accepted", - "code": 202, + "status": "Service Unavailable", + "code": 503, "header": [ { "key": "Content-Type", - "value": "application/json" + "value": "application/problem+json" }, { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "RFC 9745 structured-field Date at which the operation was or will be deprecated: `@` followed by Unix seconds, for example `@1767225599`.", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "@-403078234" }, { "disabled": true, @@ -159616,7 +161277,7 @@ { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", "type": "text/plain" }, "key": "Link", @@ -159625,16 +161286,7 @@ { "disabled": true, "description": { - "content": "Canonical URL of the operation. Resolves immediately, including while the work is still running.", - "type": "text/plain" - }, - "key": "Location", - "value": "https://example.com/" - }, - { - "disabled": true, - "description": { - "content": "Current rate-limit state.", + "content": "Current rate-limit state.\n\nOptional rate limit information.", "type": "text/plain" }, "key": "RateLimit", @@ -159643,7 +161295,7 @@ { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", "type": "text/plain" }, "key": "RateLimit-Policy", @@ -159652,25 +161304,25 @@ { "disabled": true, "description": { - "content": "Minimum number of seconds to wait before reading the operation again.", + "content": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", "type": "text/plain" }, "key": "Retry-After", - "value": "7714" + "value": "string" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "RFC 8594 HTTP-date (IMF-fixdate) after which the operation may become unavailable, for example `Thu, 31 Dec 2026 23:59:59 GMT`.", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "Wed, 67 Jun 9738 44:29:80 GMT" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "Identifier for this HTTP attempt.\n\nApplication request identifier.", "type": "text/plain" }, "key": "X-Request-ID", @@ -159683,15 +161335,15 @@ "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "a6c96eeefe281d0a4aa3b417ba34f0d5" } ], - "body": "{\n \"cancellable\": true,\n \"createdAt\": \"2000-01-01T00:00:00Z\",\n \"operationId\": \"string\",\n \"projectId\": \"string\",\n \"resourceType\": \"string\",\n \"state\": \"failed\",\n \"type\": \"resource.release\",\n \"updatedAt\": \"2000-01-01T00:00:00Z\",\n \"detail\": {\n \"key_0\": \"string\",\n \"key_1\": 1185.061561409384\n },\n \"endedAt\": \"2000-01-01T00:00:00Z\",\n \"error\": {\n \"code\": \"string\",\n \"detail\": \"string\"\n },\n \"resourceId\": \"string\",\n \"startedAt\": \"2000-01-01T00:00:00Z\"\n}", + "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "name": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid", + "name": "REQUEST_TIMEOUT: Request Timeout; UPSTREAM_TIMEOUT: Upstream Service Timeout", "originalRequest": { "url": { "path": [ @@ -159700,13 +161352,24 @@ ":id", "platforms", "whatsapp", - "dedicated" + "assignments", + ":assignmentId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) ", + "type": "text/plain" + }, + "type": "any", + "value": "string", + "key": "assignmentId" + }, { "disabled": false, "description": { @@ -159720,25 +161383,16 @@ ] }, "header": [ - { - "disabled": false, - "description": { - "content": "(Required) Identifies one logical mutation across retries.", - "type": "text/plain" - }, - "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, { "key": "Accept", "value": "application/problem+json" } ], - "method": "POST", + "method": "GET", "body": {} }, - "status": "Bad Request", - "code": 400, + "status": "Gateway Timeout", + "code": 504, "header": [ { "key": "Content-Type", @@ -159747,91 +161401,156 @@ { "disabled": true, "description": { - "content": "Structured date indicating that the operation is deprecated.", + "content": "", "type": "text/plain" }, "key": "Deprecation", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "True when this response was replayed from an earlier attempt.", + "content": "", "type": "text/plain" }, "key": "Idempotent-Replayed", - "value": "true" + "value": "" }, { "disabled": true, "description": { - "content": "Links related to lifecycle or remediation documentation.", + "content": "", "type": "text/plain" }, "key": "Link", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Current rate-limit state.", + "content": "", "type": "text/plain" }, "key": "RateLimit", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Rate-limit policy applied by the gateway.", + "content": "", "type": "text/plain" }, "key": "RateLimit-Policy", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.", + "content": "", "type": "text/plain" }, "key": "Retry-After", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "HTTP date after which the operation may become unavailable.", + "content": "", "type": "text/plain" }, "key": "Sunset", - "value": "2000-01-01T00:00:00Z" + "value": "" }, { "disabled": true, "description": { - "content": "Identifier for this HTTP attempt.", + "content": "", "type": "text/plain" }, "key": "X-Request-ID", - "value": "string" + "value": "" }, { "disabled": true, "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", + "content": "", "type": "text/plain" }, "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" + "value": "" } ], - "body": "{\n \"code\": \"IDEMPOTENCY_KEY_REQUIRED\",\n \"status\": 400,\n \"title\": \"Idempotency Key Required\",\n \"type\": \"https://photon.codes/docs/problems/idempotency-key-required\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", + "body": "{\n \"code\": \"REQUEST_TIMEOUT\",\n \"status\": 504,\n \"title\": \"Request Timeout\",\n \"type\": \"https://photon.codes/docs/problems/request-timeout\"\n}", "cookie": [], "_postman_previewlanguage": "json" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ] + }, + { + "name": "Dedicated WhatsApp lines", + "description": "", + "item": [ + { + "name": "Provision dedicated WhatsApp line", + "request": { + "name": "Provision dedicated WhatsApp line", + "description": { + "content": "Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent.", + "type": "text/plain" + }, + "url": { + "path": [ + "v1", + "projects", + ":id", + "platforms", + "whatsapp", + "dedicated" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "type": "any", + "value": "string", + "key": "id", + "disabled": false, + "description": { + "content": "(Required) ", + "type": "text/plain" + } + } + ] }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Identifies one logical mutation across retries.", + "type": "text/plain" + }, + "key": "Idempotency-Key", + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" - }, - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Accept", - "value": "application/problem+json" - } - ], - "method": "PATCH", - "body": { - "mode": "raw", - "raw": "{\n \"firstName\": \"string\",\n \"lastName\": \"string\"\n}", - "options": { - "raw": { - "headerFamily": "json", - "language": "json" - } - } - } - }, - "status": "Service Unavailable", - "code": 503, - "header": [ - { - "key": "Content-Type", - "value": "application/problem+json" - }, - { - "disabled": true, - "description": { - "content": "Structured date indicating that the operation is deprecated.", - "type": "text/plain" - }, - "key": "Deprecation", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "True when this response was replayed from an earlier attempt.", - "type": "text/plain" - }, - "key": "Idempotent-Replayed", - "value": "true" - }, - { - "disabled": true, - "description": { - "content": "Links related to lifecycle or remediation documentation.\n\nOptional related resources.", - "type": "text/plain" - }, - "key": "Link", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Current rate-limit state.\n\nOptional rate limit information.", - "type": "text/plain" - }, - "key": "RateLimit", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Rate-limit policy applied by the gateway.\n\nOptional rate limit policy.", - "type": "text/plain" - }, - "key": "RateLimit-Policy", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Delay before retrying, in seconds or as an HTTP date.\n\nOptional retry delay or HTTP date.", - "type": "text/plain" - }, - "key": "Retry-After", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "HTTP date after which the operation may become unavailable.", - "type": "text/plain" - }, - "key": "Sunset", - "value": "2000-01-01T00:00:00Z" - }, - { - "disabled": true, - "description": { - "content": "Identifier for this HTTP attempt.\n\nApplication request identifier.", - "type": "text/plain" - }, - "key": "X-Request-ID", - "value": "string" - }, - { - "disabled": true, - "description": { - "content": "Trace ID of this request. Sent alongside X-Request-ID when a middleware published a trace ID for the request.", - "type": "text/plain" - }, - "key": "X-Trace-ID", - "value": "060cd3475db63bb6dec4e67714fae045" - } - ], - "body": "{\n \"code\": \"UPSTREAM_UNAVAILABLE\",\n \"status\": 503,\n \"title\": \"Upstream Service Unavailable\",\n \"type\": \"https://photon.codes/docs/problems/upstream-unavailable\",\n \"detail\": \"string\",\n \"instance\": \"string\",\n \"remediation\": \"\",\n \"requestId\": \"string\"\n}", - "cookie": [], - "_postman_previewlanguage": "json" - }, - { - "name": "UPSTREAM_TIMEOUT: Upstream Service Timeout; REQUEST_TIMEOUT: Request Timeout", - "originalRequest": { - "url": { - "path": [ - "v1", - "projects", - ":projectId", - "agent-profile" - ], - "host": [ - "{{baseUrl}}" - ], - "query": [], - "variable": [ - { - "disabled": false, - "description": { - "content": "(Required) ", - "type": "text/plain" - }, - "type": "any", - "value": "string", - "key": "projectId" - } - ] - }, - "header": [ - { - "disabled": false, - "description": { - "content": "(Required) Identifies one logical mutation across retries.", - "type": "text/plain" - }, - "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`S5\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { - "name": "INVALID_ARGUMENT: Invalid Argument", + "name": "IDEMPOTENCY_KEY_REQUIRED: Idempotency Key Required; IDEMPOTENCY_KEY_INVALID: Idempotency Key Invalid; INVALID_ARGUMENT: Invalid Argument", "originalRequest": { "url": { "path": [ @@ -191267,7 +194737,7 @@ "type": "text/plain" }, "type": "any", - "value": "pho_whd_3vfsbrv10ex6yyc0ssrdtr53ae", + "value": "pho_whd_7vc81w136f2heemy3gb7222tbt", "key": "destinationId" }, { @@ -191277,7 +194747,7 @@ "type": "text/plain" }, "type": "any", - "value": "pho_prj_491y3dh96wh2wzndn67y6m9gjk", + "value": "pho_prj_22z59vaxrf4zzps3fpq21jke7m", "key": "projectId" } ] @@ -191290,7 +194760,7 @@ "type": "text/plain" }, "key": "Idempotency-Key", - "value": "pXf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`Sf=I;\\`c4Z,))rg&jurTY[d/LQ&OeB\\\\$7.<;7r4=Q^JoSDK`ne6v3M)L^SF^kL*\\]60v=S/E^Rq8^xBsxveV%!94Y9QU^*l7/b63O1^C]:fFI51SE.50T%,^^4p`i9`!c9T\\H5X'eUWrDs0)xFo/j\\PpQ^Tj?N\"\\')':/c2'fVm*9D2fc,1d1`" + "value": "t;1Z``(IK_uh,uBoI,s`3wmKOdsU9,-8I\"\"!nN;a?GoWL=K\"G]$u`S { assert.doesNotMatch(python, /self\.agentProfile/); assert.match(renderTypeScript(fixture), /agentProfile: \{/); }); + +test("Python types an unnamed binary request body as bytes", () => { + const upload = operation("upload", { "204": {} }); + upload.requestBody = { required: true, content: { "multipart/related": { type: "string", format: "binary" } } }; + assert.match(renderPython({ operations: [upload] }), /body: models\.RootModel\[bytes\]\n/); + upload.requestBody = { required: true, content: { "application/json": { type: "object" } } }; + assert.match(renderPython({ operations: [upload] }), /body: models\.RootModel\[Any\]\n/); +}); diff --git a/tools/openapi/src/generate-facades.ts b/tools/openapi/src/generate-facades.ts index 92249fb..72d72cb 100644 --- a/tools/openapi/src/generate-facades.ts +++ b/tools/openapi/src/generate-facades.ts @@ -504,8 +504,11 @@ function pythonInputClasses(operation: ManifestOperation): string { )?.value; const bodyComponent = modelNameFromReference(bodyReference); const bodyModel = bodyComponent === undefined ? undefined : pythonModelName(bodyComponent); + // An unnamed raw-bytes body (`type: string, format: binary`) is bytes, as a named one is. + const rawBytes = isObject(bodyReference) && bodyReference.format === "binary" + && (bodyReference.type === undefined || bodyReference.type === "string"); fields.push( - ` body: models.${bodyModel ?? "RootModel[Any]"}${operation.requestBody.required ? "" : " | None = None"}`, + ` body: models.${bodyModel ?? (rawBytes ? "RootModel[bytes]" : "RootModel[Any]")}${operation.requestBody.required ? "" : " | None = None"}`, ); } for (const location of ["path", "query", "header"] as const) { diff --git a/tools/postman/generate.mjs b/tools/postman/generate.mjs index 1c28d9c..1a076fe 100644 --- a/tools/postman/generate.mjs +++ b/tools/postman/generate.mjs @@ -7,6 +7,26 @@ import { isDeepStrictEqual } from "node:util"; const credentialValue = /\b(?:pho_(?:ask|sk)_[A-Za-z0-9_-]{20,}|gh[pousr]_[A-Za-z0-9]{30,}|github_pat_[A-Za-z0-9_]{30,}|xox[baprs]-[A-Za-z0-9-]{20,}|AKIA[0-9A-Z]{16})\b|-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/; const credentialField = /^(?:password|passwd|secret|client_?secret|api_?key|api_?token|access_?token|refresh_?token|(?:account)?service_?key|token)$/i; +/** Postman stores names of at most this many characters and cuts longer ones. */ +export const maxNameLength = 255; + +/** + * Postman example name for a response. The converter uses the response + * description, which OpenAPI doesn't limit (a status with several problems + * lists all of them); shorten it at the last whole "; " entry, or else the + * last word, so Postman doesn't cut it mid-word. The description itself is + * unchanged in the contract. + */ +export function exampleName(name) { + if (typeof name !== "string" || name.length <= maxNameLength) return name; + // Never end on half of a surrogate pair (a character outside the BMP). + const head = name.slice(0, maxNameLength - 1).replace(/[\uD800-\uDBFF]$/, ""); + const entry = head.lastIndexOf("; "); + if (entry > 0) return `${head.slice(0, entry)}; …`; + const word = head.lastIndexOf(" "); + return `${word > 0 ? head.slice(0, word) : head.replace(/.$/u, "")} …`; +} + /** Empty credential examples without changing the saved API contract. */ function emptyCredentials(value, field = "") { if (typeof value === "string") { @@ -284,6 +304,7 @@ export async function generateCollection(schema, converter) { request.description = `${description}\n\nThis request uploads the included hello.txt text file. Set your project ID and a fresh Idempotency-Key. The raw body contains JSON metadata followed by the file bytes. If editing it, keep sizeBytes equal to the UTF-8 file byte count and preserve the CRLF boundaries. For a binary file, select a prepared multipart/related payload as a binary body and set its matching boundary in Content-Type. Postman calculates Content-Length.`; } for (const response of item.response ?? []) { + response.name = exampleName(response.name); if (response.body) response.body = emptyCredentials(response.body); response.header = emptyCredentials((response.header ?? []).filter((header) => !/^(authorization|set-cookie)$/i.test(header.key))); if (response.originalRequest) { diff --git a/tools/postman/generate.test.mjs b/tools/postman/generate.test.mjs index a8ec513..b199c18 100644 --- a/tools/postman/generate.test.mjs +++ b/tools/postman/generate.test.mjs @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { generateCollection } from "./generate.mjs"; +import { exampleName, generateCollection, maxNameLength } from "./generate.mjs"; const schema = { openapi: "3.1.0", info: { title: "Fixture", version: "1.0.0" }, servers: [{ url: "https://api.example.test" }], @@ -292,3 +292,21 @@ test("isolated CLI reproduces patterned examples", async (t) => { assert.equal(await readFile(join(root, "postman/collection.json"), "utf8"), first); assert.ok(!first.includes("not-for-generation")); }); + +test("example names fit Postman's limit and end at a whole entry, word or character", () => { + const problems = Array.from({ length: 12 }, (_, index) => `CONFLICT_${index}: Conflict number ${index}`).join("; "); + const listed = exampleName(problems); + assert.ok(listed.length <= maxNameLength); + assert.match(listed, /^CONFLICT_0: Conflict number 0; .*CONFLICT_\d+: Conflict number \d+; …$/); + const prose = exampleName(`${"word ".repeat(60)}end`); + assert.ok(prose.length <= maxNameLength); + assert.match(prose, /^(word )+…$/); + for (const unbroken of ["x".repeat(300), "😀".repeat(200), `x${"😀".repeat(200)}`]) { + const name = exampleName(unbroken); + assert.ok(name.length <= maxNameLength); + assert.match(name, / …$/); + assert.ok(name.isWellFormed(), "no half of a surrogate pair"); + } + assert.equal(exampleName("OK"), "OK"); + assert.equal(exampleName(undefined), undefined); +}); diff --git a/tools/publish/hosted-postman.mjs b/tools/publish/hosted-postman.mjs index 7a3b790..2d930dc 100644 --- a/tools/publish/hosted-postman.mjs +++ b/tools/publish/hosted-postman.mjs @@ -22,24 +22,56 @@ export function compareVersions(a, b) { return 0; } +/** First line of the hosted collection's description; Postman keeps the description but not info.version. */ +const releaseLine = (version) => `Photon API ${version}. Generated from the OpenAPI contract in https://github.com/photon-hq/api.`; +const releaseLinePattern = /^Photon API (\d+\.\d+\.\d+)\. /; + +const descriptionText = (description) => typeof description === "string" ? description : description?.content ?? ""; + /** The release collection: the committed collection labelled with the release version. */ export function releaseCollection(collection, version) { assert.match(version, semver, `Not a release version: ${version}`); - return { ...collection, info: { ...collection.info, version } }; + const text = descriptionText(collection.info?.description); + const description = text ? `${releaseLine(version)}\n\n${text}` : releaseLine(version); + return { ...collection, info: { ...collection.info, version, description } }; +} + +/** The release version recorded in a hosted collection, if any. */ +export function hostedVersion(collection) { + if (semver.test(collection.info?.version ?? "")) return collection.info.version; + return releaseLinePattern.exec(descriptionText(collection.info?.description))?.[1]; } -export function comparableCollection(value) { - const copy = structuredClone(value); - for (const key of ["_postman_id", "_exporter_id", "uid", "createdAt", "updatedAt"]) delete copy.info[key]; - const items = (list) => { - for (const item of list ?? []) { - delete item.id; - if (item.item) items(item.item); - for (const response of item.response ?? []) delete response.id; +// Fields Postman adds to a stored collection, or that it drops (info.version). +const serverFields = new Set(["_postman_id", "_exporter_id", "uid", "id", "createdAt", "updatedAt", "lastUpdatedBy", "owner", "version"]); + +/** + * A collection as Postman stores it, so a stored copy compares with what was + * sent: Postman adds IDs and timestamps, a raw URL beside its parts and + * `responseTime: null`; drops empty values, `disabled: false`, a request's + * own name, the default `type: "any"` of URL variables and info.version; and + * stores a plain-text `{ content, type }` description as its text. + */ +export function comparableCollection(value, key = null) { + if (Array.isArray(value)) { + const items = value.map((item) => comparableCollection(item, key)).filter((item) => item !== undefined); + return items.length ? items : undefined; + } + if (value !== null && typeof value === "object") { + if (key === "description" && Object.keys(value).every((name) => name === "content" || name === "type") + && (value.type ?? "text/plain") === "text/plain") return comparableCollection(value.content); + const result = {}; + for (const [name, child] of Object.entries(value)) { + if (serverFields.has(name) || (name === "disabled" && child === false) || (name === "responseTime" && child === null)) continue; + if (key === "url" && name === "raw") continue; + if ((key === "request" || key === "originalRequest") && name === "name") continue; + if (key === "variable" && name === "type" && child === "any") continue; + const comparable = comparableCollection(child, name); + if (comparable !== undefined) result[name] = comparable; } - }; - items(copy.item); - return copy; + return Object.keys(result).length ? result : undefined; + } + return value === "" || value === null ? undefined : value; } export async function updateCollection({ desired, uid, workspaceId, api }) { @@ -51,7 +83,7 @@ export async function updateCollection({ desired, uid, workspaceId, api }) { assert.ok(workspace.collections.some((collection) => collection.id === id || collection.uid === uid), "Collection is outside the configured workspace"); const current = (await api(`/collections/${uid}`)).collection; assert.equal(current.info._postman_id, id); - const currentVersion = semver.test(current.info.version ?? "") ? current.info.version : undefined; + const currentVersion = hostedVersion(current); if (currentVersion && compareVersions(currentVersion, desired.info.version) > 0) return "newer-release-preserved"; if (isDeepStrictEqual(comparableCollection(current), comparableCollection(desired))) return "already-current"; if (currentVersion === desired.info.version) throw new Error("Hosted collection has unexpected edits to this release; refusing to overwrite it"); diff --git a/tools/publish/hosted-postman.test.mjs b/tools/publish/hosted-postman.test.mjs index 7c01089..a1f7f7c 100644 --- a/tools/publish/hosted-postman.test.mjs +++ b/tools/publish/hosted-postman.test.mjs @@ -1,13 +1,16 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { compareVersions, releaseCollection, updateCollection } from "./hosted-postman.mjs"; +import { comparableCollection, compareVersions, hostedVersion, releaseCollection, updateCollection } from "./hosted-postman.mjs"; test("release versions compare numerically", () => { assert.equal(compareVersions("0.10.0", "0.9.1"), 1); assert.equal(compareVersions("0.1.1", "0.1.1"), 0); assert.equal(compareVersions("0.1.0", "1.0.0"), -1); assert.throws(() => compareVersions("2026-09-26", "0.1.0"), /Not a release version/); - assert.deepEqual(releaseCollection({ info: { name: "x" }, item: [] }, "0.2.0").info, { name: "x", version: "0.2.0" }); + assert.deepEqual(releaseCollection({ info: { name: "x" }, item: [] }, "0.2.0").info, { + name: "x", version: "0.2.0", description: "Photon API 0.2.0. Generated from the OpenAPI contract in https://github.com/photon-hq/api.", + }); + assert.match(releaseCollection({ info: { description: { content: "About.", type: "text/plain" } } }, "0.2.0").info.description, /^Photon API 0\.2\.0\. .*\n\nAbout\.$/s); assert.throws(() => releaseCollection({ info: {} }, "v0.2.0"), /Not a release version/); }); @@ -15,7 +18,7 @@ test("the hosted collection never moves backwards and read-back must match", asy const uid = `1-${"a".repeat(8)}-${"a".repeat(4)}-${"a".repeat(4)}-${"a".repeat(4)}-${"a".repeat(12)}`; const id = uid.slice(2); const workspaceId = "b".repeat(8) + "-" + "b".repeat(4) + "-" + "b".repeat(4) + "-" + "b".repeat(4) + "-" + "b".repeat(12); - let hosted = { info: { _postman_id: id, version: "0.3.0" }, item: [] }; + let hosted = { info: { _postman_id: id, description: "Photon API 0.3.0. Generated from the OpenAPI contract in https://github.com/photon-hq/api." }, item: [] }; const api = async (path, { method = "GET", body } = {}) => { if (path.startsWith("/workspaces/")) return { workspace: { visibility: "public", collections: [{ id }] } }; if (method === "PUT") { hosted = body.collection; return {}; } @@ -26,6 +29,46 @@ test("the hosted collection never moves backwards and read-back must match", asy hosted = { info: { _postman_id: id, version: "0.1.9" }, item: [] }; assert.equal(await updateCollection({ desired, uid, workspaceId, api }), "updated-and-verified"); assert.equal(await updateCollection({ desired, uid, workspaceId, api }), "already-current"); - hosted = { info: { _postman_id: id, version: "0.2.0" }, item: [{ name: "edited" }] }; + hosted = { info: { _postman_id: id, description: desired.info.description }, item: [{ name: "edited" }] }; await assert.rejects(updateCollection({ desired, uid, workspaceId, api }), /unexpected edits/); }); + +test("a collection compares equal to Postman's stored copy of it", () => { + const sent = releaseCollection({ + info: { name: "Photon API", description: { content: "", type: "text/plain" } }, + event: [], + variable: [{ key: "baseUrl", value: "https://api.example.test", type: "string" }], + item: [{ + name: "Accounts", description: "", item: [{ + id: "client-id", name: "Get the account", event: [], + request: { + name: "Get the account", method: "GET", body: {}, + description: { content: "Returns the account.", type: "text/plain" }, + header: [{ key: "Idempotency-Key", value: "k", disabled: false, description: { content: "(Required) Key.", type: "text/plain" } }], + url: { host: ["{{baseUrl}}"], path: ["v1", "accounts", ":id"], query: [], variable: [{ key: "id", value: "1", type: "any" }] }, + }, + response: [{ name: "OK", code: 200, body: "{}", originalRequest: { method: "GET", body: {}, url: { host: ["{{baseUrl}}"], path: ["v1"], query: [] } } }], + }], + }], + }, "0.2.0"); + const stored = { + info: { _postman_id: "p", name: "Photon API", description: sent.info.description, createdAt: "t", updatedAt: "t", lastUpdatedBy: "1", uid: "1-p" }, + variable: [{ key: "baseUrl", value: "https://api.example.test", type: "string" }], + item: [{ + name: "Accounts", id: "f", uid: "1-f", item: [{ + id: "r", uid: "1-r", createdAt: "t", updatedAt: "t", name: "Get the account", + request: { + method: "GET", description: "Returns the account.", + header: [{ key: "Idempotency-Key", value: "k", description: "(Required) Key." }], + url: { raw: "{{baseUrl}}/v1/accounts/:id", host: ["{{baseUrl}}"], path: ["v1", "accounts", ":id"], variable: [{ key: "id", value: "1" }] }, + }, + response: [{ id: "x", uid: "1-x", createdAt: "t", updatedAt: "t", responseTime: null, name: "OK", code: 200, body: "{}", originalRequest: { method: "GET", url: { raw: "{{baseUrl}}/v1", host: ["{{baseUrl}}"], path: ["v1"] } } }], + }], + }], + }; + assert.deepEqual(comparableCollection(stored), comparableCollection(sent)); + assert.equal(hostedVersion(stored), "0.2.0"); + const edited = structuredClone(stored); + edited.item[0].item[0].request.description = "Changed."; + assert.notDeepEqual(comparableCollection(edited), comparableCollection(sent)); +}); diff --git a/tools/publish/registry-check.mjs b/tools/publish/registry-check.mjs index 2e49625..2abf258 100644 --- a/tools/publish/registry-check.mjs +++ b/tools/publish/registry-check.mjs @@ -1,7 +1,8 @@ #!/usr/bin/env node // Registry state for one release. A version is never overwritten: if the // registry already has it, its bytes must equal the built artifact, and the -// publish step is skipped. Usage: +// publish step is skipped. `verify` polls until the registry serves every +// file, since registries show a new upload seconds to minutes later. Usage: // node tools/publish/registry-check.mjs plan|verify npm|pypi|crates NAME VERSION ARTIFACT_DIRECTORY import assert from "node:assert/strict"; import { createHash } from "node:crypto"; @@ -10,10 +11,19 @@ import { join, resolve } from "node:path"; import { pathToFileURL } from "node:url"; const digest = (algorithm, bytes) => createHash(algorithm).update(bytes).digest(); +const sleep = (ms) => new Promise((resolveSleep) => setTimeout(resolveSleep, ms)); +// Network errors, timeouts, 429 and 5xx may clear up; `verify` retries them. +const transient = (error) => Object.assign(error, { transient: true }); export async function getJson(url, fetcher = fetch) { - const response = await fetcher(url, { redirect: "error", signal: AbortSignal.timeout(30000), headers: { Accept: "application/json", "User-Agent": "photon-api-release" } }); + let response; + try { + response = await fetcher(url, { redirect: "error", signal: AbortSignal.timeout(30000), headers: { Accept: "application/json", "User-Agent": "photon-api-release" } }); + } catch (error) { + throw transient(error); + } if (response.status === 404) return null; + if (response.status === 429 || response.status >= 500) throw transient(new Error(`Registry check failed: HTTP ${response.status} for ${url}`)); assert.ok(response.ok, `Registry check failed: HTTP ${response.status} for ${url}`); return response.json(); } @@ -51,17 +61,44 @@ export async function registryState({ registry, name, version, artifacts, fetche return { missing: [], exists: true, crateExists }; } +/** + * Polls until every artifact is on the registry with the built bytes. Different + * bytes and non-transient errors fail at once; missing files and transient + * errors are retried every 15-30 seconds until `timeoutMs` has passed. + */ +export async function verifyPublished({ timeoutMs = 10 * 60 * 1000, intervalMs = 15000, maxIntervalMs = 30000, wait = sleep, now = Date.now, log = console.log, ...options }) { + const deadline = now() + timeoutMs; + for (let delay = intervalMs; ; delay = Math.min(delay * 1.5, maxIntervalMs)) { + let missing; + let failure; + try { + ({ missing } = await registryState(options)); + } catch (error) { + if (!error.transient) throw error; + failure = error; + } + if (!failure && missing.length === 0) return; + const remaining = deadline - now(); + if (remaining <= 0) { + if (failure) throw failure; + assert.fail(`Not visible on the registry yet: ${missing.join(", ")}; retry the release`); + } + log(`Waiting for ${options.registry}: ${failure ? failure.message : `${missing.join(", ")} not visible yet`}`); + await wait(Math.min(delay, remaining)); + } +} + if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) { const [mode, registry, name, version, directory] = process.argv.slice(2); assert.ok(["plan", "verify"].includes(mode) && registry && name && /^\d+\.\d+\.\d+$/.test(version ?? "") && directory, "Usage: registry-check.mjs plan|verify npm|pypi|crates NAME VERSION ARTIFACT_DIRECTORY"); const names = (await readdir(directory)).filter((file) => /\.(tgz|whl|tar\.gz|crate)$/.test(file)).sort(); const artifacts = await Promise.all(names.map(async (file) => ({ name: file, bytes: await readFile(join(directory, file)) }))); - const state = await registryState({ registry, name, version, artifacts }); if (mode === "verify") { - assert.deepEqual(state.missing, [], `Not visible on the registry yet: ${state.missing.join(", ")}; retry the release`); + await verifyPublished({ registry, name, version, artifacts }); console.log(`All ${registry} artifacts for ${name} ${version} match the built files.`); } else { + const state = await registryState({ registry, name, version, artifacts }); if (registry === "pypi") { const pending = join(directory, "pending"); await mkdir(pending); diff --git a/tools/publish/registry-check.test.mjs b/tools/publish/registry-check.test.mjs index ca4e9f1..a26e055 100644 --- a/tools/publish/registry-check.test.mjs +++ b/tools/publish/registry-check.test.mjs @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import { createHash } from "node:crypto"; import test from "node:test"; -import { registryState } from "./registry-check.mjs"; +import { registryState, verifyPublished } from "./registry-check.mjs"; const bytes = Buffer.from("artifact"); const respond = (routes) => async (url) => { @@ -35,3 +35,40 @@ test("crates: a first release needs the bootstrap token path", async () => { const existing = await registryState({ registry: "crates", name: "a", version: "0.1.0", artifacts, fetcher: respond({ "https://crates.io/api/v1/crates/a": { crate: {} } }) }); assert.equal(existing.crateExists, true); }); + +test("verify: waits for the registry, then fails after the window; different bytes and hard errors fail at once", async () => { + const artifacts = [{ name: "a-0.1.0.tgz", bytes }]; + const integrity = `sha512-${createHash("sha512").update(bytes).digest("base64")}`; + const clock = () => { + let time = 0; + const waits = []; + return { waits, now: () => time, wait: async (ms) => { waits.push(ms); time += ms; }, log: () => {} }; + }; + const sequence = (...responses) => { + let calls = 0; + const fetcher = async () => { + const next = responses[Math.min(calls++, responses.length - 1)]; + if (next instanceof Error) throw next; + return typeof next === "number" ? new Response(null, { status: next }) : Response.json(next); + }; + return { fetcher, calls: () => calls }; + }; + const options = { registry: "npm", name: "a", version: "0.1.0", artifacts }; + + const later = sequence(404, 503, new TypeError("fetch failed"), { dist: { integrity } }); + const visible = clock(); + await verifyPublished({ ...options, ...visible, fetcher: later.fetcher }); + assert.equal(later.calls(), 4); + assert.deepEqual(visible.waits, [15000, 22500, 30000]); + + const never = clock(); + await assert.rejects(verifyPublished({ ...options, ...never, timeoutMs: 60000, fetcher: sequence(404).fetcher }), /Not visible on the registry yet: a-0\.1\.0\.tgz; retry the release/); + assert.equal(never.waits.reduce((total, ms) => total + ms, 0), 60000); + + for (const response of [{ dist: { integrity: "sha512-x" } }, 403]) { + const immediate = clock(); + const once = sequence(404, response); + await assert.rejects(verifyPublished({ ...options, ...immediate, fetcher: once.fetcher }), response === 403 ? /HTTP 403/ : /different bytes/); + assert.equal(once.calls(), 2); + } +});